[
  {
    "path": ".editorConfig",
    "content": "# editorconfig.org\n\nroot = true\n\n[*]\nindent_style = space\nindent_size = 4\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "\n:warning: If you don't have something to report in the following format, it will probably be easier and faster to ask in the [slack channel](http://slack.rxswift.org/) first. :warning: \n\n:warning: Please take you time to fill in the fields below. If we aren't provided with this basic information about your issue we probably won't be able to help you and there won't be much we can do except to close the issue :( :warning:\n\n*If you still want to report issue, please delete above statements before submitting an issue.*\n\n**Short description of the issue**:\n\n  _description here_\n\n**Expected outcome**:\n\n  _what you expect to happen goes here_\n\n**What actually happens**:\n\n  _what actually happens goes here_\n\n**Self contained code example that reproduces the issue**:\n\n```swift\n  code goes here\n  \n// If we can't get a self contained code example that reproduces the issue, there is a big chance we won't be able\n// to help you because there is not much we can do.\n//\n// `Self contained code example` means:\n//\n// * that we should be able to just run the provided code without changing it.\n// * that it will reproduce the issue upon running\n```\n\n**RxSwift/RxCocoa/RxBlocking/RxTest version/commit**\n\n  _version or commit here_\n\n**Platform/Environment**\n\n  - [ ] iOS\n  - [ ] macOS\n  - [ ] tvOS\n  - [ ] watchOS\n  - [ ] playgrounds\n\n**How easy is to reproduce? (chances of successful reproduce after running the self contained code)**\n\n  - [ ] easy, 100% repro\n  - [ ] sometimes, 10%-100%\n  - [ ] hard, 2% - 10%\n  - [ ] extremely hard, %0 - 2%\n\n**Xcode version**:\n\n```\n  Xcode version goes here\n```\n\n:warning: Fields below are optional for general issues or in case those questions aren't related to your issue, but filling them out will increase the chances of getting your issue resolved. :warning:\n\n**Installation method**:\n  - [ ] Swift Package Manager\n  - [ ] Carthage\n  - [ ] Git submodules\n\n**I have multiple versions of Xcode installed**:\n  (so we can know if this is a potential cause of your issue)\n  - [ ] yes (which ones)\n  - [ ] no\n\n**Level of RxSwift knowledge**:\n  (this is so we can understand your level of knowledge\n    and formulate the response in an appropriate manner)\n  - [ ] just starting\n  - [ ] I have a small code base\n  - [ ] I have a significant code base\n"
  },
  {
    "path": ".github/workflows/tests.yml",
    "content": "name: RxSwift\n\non:\n  push:\n    branches:\n      - \"main\"\n  pull_request:\n  workflow_dispatch:\n\njobs:\n  xcode26:\n    name: \"Xcode 26\"\n    runs-on: macos-latest\n\n    strategy:\n      fail-fast: false\n      matrix:\n        environment: [iOS, iOS-Example, Unix, watchOS, tvOS, macCatalyst, SPM]\n\n    steps:\n      - uses: actions/checkout@v3\n      - name: Select Xcode 26\n        run: sudo xcode-select -s /Applications/Xcode_26.2.app\n      - name: Run Tests\n        run: CI=1 ./scripts/all-tests.sh \"${{ matrix.environment }}\"\n\n  xcode16:\n    name: \"Xcode 16\"\n    runs-on: macos-15\n\n    strategy:\n      fail-fast: false\n      matrix:\n        environment: [iOS, iOS-Example, Unix, watchOS, tvOS, SPM]\n\n    steps:\n      - uses: actions/checkout@v3\n      - name: Select Xcode 16\n        run: sudo xcode-select -s /Applications/Xcode_16.4.app\n      - name: Run Tests\n        run: CI=1 ./scripts/all-tests.sh \"${{ matrix.environment }}\"\n\n  linux:\n    name: \"Build (Android)\"\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - name: \"Build Swift Package on Android\"\n        uses: skiptools/swift-android-action@v2\n        with:\n          run-tests: false\n\n  # We're having some issues with the Linux tests, so we're disabling them for now.\n  # Hopefully we'll be able to fix and re-enable them soon.\n  # Even more hopefully that I won't git blame this comment in the future and see it was 5 years ago :)\n  # Some more info on part of the breakage is here: https://forums.swift.org/t/swift-6-0-regression-cannot-inherit-from-some-foundation-classes-on-linux-because-it-has-overridable-members-that-could-not-be-loaded/74794\n  # linux:\n  #   name: \"Test (Linux)\"\n  #   runs-on: ubuntu-latest\n\n  #   steps:\n  #     - uses: actions/checkout@v3\n  #     - name: Run tests\n  #       run: CI=1 ./scripts/all-tests.sh \"Unix\"\n\n"
  },
  {
    "path": ".gitignore",
    "content": "# Xcode\n#\nbuild/\nBuild/\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\n*.xccheckout\n*.moved-aside\nDerivedData\n*.hmap\n*.ipa\n*.xcuserstate\n*.o\n.swiftpm/\ndocs/docsets\n*.xcframework\n\ntimeline.xctimeline\n.vscode\n\n# Carthage\n#\n# Add this line if you want to avoid checking in source code from Carthage dependencies.\n# Carthage/Checkouts\n\nCarthage/Build\n\n\n# Various\n\n.DS_Store\n\n\n# Linux\n\n*.swp\n*.swo\n\n# Swift Package Manager\n\n.build/\nPackages/\n.swiftpm\n\n# AppCode\n\n.idea\n"
  },
  {
    "path": ".jazzy.yml",
    "content": "---\ncustom_categories:\n- name: RxCocoa/Common\n  children:\n  - ControlTarget\n  - DelegateProxy\n  - DelegateProxyType\n  - Infallible+Bind\n  - Observable+Bind\n  - RxCocoaObjCRuntimeError+Extensions\n  - RxTarget\n  - SectionedViewDataSourceType\n  - TextInput\n- name: RxCocoa/Foundation\n  children:\n  - KVORepresentable+CoreGraphics\n  - KVORepresentable+Swift\n  - KVORepresentable\n  - NSObject+Rx+KVORepresentable\n  - NSObject+Rx+RawRepresentable\n  - NSObject+Rx\n  - NotificationCenter+Rx\n  - URLSession+Rx\n- name: RxCocoa/Platform\n  children:\n  - DispatchQueue+Extensions\n- name: RxCocoa\n  children:\n  - RxCocoa\n- name: RxCocoa/Traits\n  children:\n  - ControlEvent\n  - ControlProperty\n- name: RxCocoa/Traits/Driver\n  children:\n  - BehaviorRelay+Driver\n  - ControlEvent+Driver\n  - ControlProperty+Driver\n  - Driver+Subscription\n  - Driver\n  - Infallible+Driver\n  - ObservableConvertibleType+Driver\n- name: RxCocoa/Traits/SharedSequence\n  children:\n  - ObservableConvertibleType+SharedSequence\n  - SchedulerType+SharedSequence\n  - SharedSequence+Concurrency\n  - SharedSequence+Operators+arity\n  - SharedSequence+Operators\n  - SharedSequence\n- name: RxCocoa/Traits/Signal\n  children:\n  - ControlEvent+Signal\n  - ObservableConvertibleType+Signal\n  - PublishRelay+Signal\n  - Signal+Subscription\n  - Signal\n- name: RxCocoa/iOS/DataSources\n  children:\n  - RxCollectionViewReactiveArrayDataSource\n  - RxPickerViewAdapter\n  - RxTableViewReactiveArrayDataSource\n- name: RxCocoa/iOS/Events\n  children:\n  - ItemEvents\n- name: RxCocoa/iOS\n  children:\n  - NSTextStorage+Rx\n  - UIActivityIndicatorView+Rx\n  - UIApplication+Rx\n  - UIBarButtonItem+Rx\n  - UIButton+Rx\n  - UICollectionView+Rx\n  - UIControl+Rx\n  - UIDatePicker+Rx\n  - UIGestureRecognizer+Rx\n  - UINavigationController+Rx\n  - UIPickerView+Rx\n  - UIRefreshControl+Rx\n  - UIScrollView+Rx\n  - UISearchBar+Rx\n  - UISearchController+Rx\n  - UISegmentedControl+Rx\n  - UISlider+Rx\n  - UIStepper+Rx\n  - UISwitch+Rx\n  - UITabBar+Rx\n  - UITabBarController+Rx\n  - UITableView+Rx\n  - UITextField+Rx\n  - UITextView+Rx\n  - WKWebView+Rx\n- name: RxCocoa/iOS/Protocols\n  children:\n  - RxCollectionViewDataSourceType\n  - RxPickerViewDataSourceType\n  - RxTableViewDataSourceType\n- name: RxCocoa/iOS/Proxies\n  children:\n  - RxCollectionViewDataSourcePrefetchingProxy\n  - RxCollectionViewDataSourceProxy\n  - RxCollectionViewDelegateProxy\n  - RxNavigationControllerDelegateProxy\n  - RxPickerViewDataSourceProxy\n  - RxPickerViewDelegateProxy\n  - RxScrollViewDelegateProxy\n  - RxSearchBarDelegateProxy\n  - RxSearchControllerDelegateProxy\n  - RxTabBarControllerDelegateProxy\n  - RxTabBarDelegateProxy\n  - RxTableViewDataSourcePrefetchingProxy\n  - RxTableViewDataSourceProxy\n  - RxTableViewDelegateProxy\n  - RxTextStorageDelegateProxy\n  - RxTextViewDelegateProxy\n  - RxWKNavigationDelegateProxy\n- name: RxCocoa/macOS\n  children:\n  - NSButton+Rx\n  - NSControl+Rx\n  - NSSlider+Rx\n  - NSTextField+Rx\n  - NSTextView+Rx\n  - NSView+Rx\n- name: RxRelay\n  children:\n  - BehaviorRelay\n  - Observable+Bind\n  - PublishRelay\n  - ReplayRelay\n  - Utils\n- name: RxSwift\n  children:\n  - AnyObserver\n  - Binder\n  - Cancelable\n  - ConnectableObservableType\n  - Date+Dispatch\n  - Disposable\n  - Errors\n  - Event\n  - GroupedObservable\n  - ImmediateSchedulerType\n  - Observable+Concurrency\n  - Observable\n  - ObservableConvertibleType\n  - ObservableType+Extensions\n  - ObservableType\n  - ObserverType\n  - Reactive\n  - Rx\n  - RxMutableBox\n  - SchedulerType\n- name: RxSwift/Concurrency\n  children:\n  - AsyncLock\n  - Lock\n  - LockOwnerType\n  - SynchronizedDisposeType\n  - SynchronizedOnType\n  - SynchronizedUnsubscribeType\n- name: RxSwift/Disposables\n  children:\n  - AnonymousDisposable\n  - BinaryDisposable\n  - BooleanDisposable\n  - CompositeDisposable\n  - Disposables\n  - DisposeBag\n  - DisposeBase\n  - NopDisposable\n  - RefCountDisposable\n  - ScheduledDisposable\n  - SerialDisposable\n  - SingleAssignmentDisposable\n  - SubscriptionDisposable\n- name: RxSwift/Extensions\n  children:\n  - Bag+Rx\n- name: RxSwift/Observables\n  children:\n  - AddRef\n  - Amb\n  - AsMaybe\n  - AsSingle\n  - Buffer\n  - Catch\n  - CombineLatest+Collection\n  - CombineLatest+arity\n  - CombineLatest\n  - CompactMap\n  - Concat\n  - Create\n  - Debounce\n  - Debug\n  - Decode\n  - DefaultIfEmpty\n  - Deferred\n  - Delay\n  - DelaySubscription\n  - Dematerialize\n  - DistinctUntilChanged\n  - Do\n  - ElementAt\n  - Empty\n  - Enumerated\n  - Error\n  - Filter\n  - First\n  - Generate\n  - GroupBy\n  - Just\n  - Map\n  - Materialize\n  - Merge\n  - Multicast\n  - Never\n  - ObserveOn\n  - Optional\n  - Producer\n  - Range\n  - Reduce\n  - Repeat\n  - RetryWhen\n  - Sample\n  - Scan\n  - Sequence\n  - ShareReplayScope\n  - SingleAsync\n  - Sink\n  - Skip\n  - SkipUntil\n  - SkipWhile\n  - StartWith\n  - SubscribeOn\n  - Switch\n  - SwitchIfEmpty\n  - Take\n  - TakeLast\n  - TakeWithPredicate\n  - Throttle\n  - Timeout\n  - Timer\n  - ToArray\n  - Using\n  - Window\n  - WithLatestFrom\n  - WithUnretained\n  - Zip+Collection\n  - Zip+arity\n  - Zip\n- name: RxSwift/Observers\n  children:\n  - AnonymousObserver\n  - ObserverBase\n  - TailRecursiveSink\n- name: RxSwift/Platform\n  children:\n  - AtomicInt\n  - DispatchQueue+Extensions\n  - Platform.Darwin\n  - Platform.Linux\n  - RecursiveLock\n- name: RxSwift/Platform/DataStructures\n  children:\n  - Bag\n  - InfiniteSequence\n  - PriorityQueue\n  - Queue\n- name: RxSwift/Schedulers\n  children:\n  - ConcurrentDispatchQueueScheduler\n  - ConcurrentMainScheduler\n  - CurrentThreadScheduler\n  - HistoricalScheduler\n  - HistoricalSchedulerTimeConverter\n  - MainScheduler\n  - OperationQueueScheduler\n  - RecursiveScheduler\n  - SchedulerServices+Emulation\n  - SerialDispatchQueueScheduler\n  - VirtualTimeConverterType\n  - VirtualTimeScheduler\n- name: RxSwift/Schedulers/Internal\n  children:\n  - DispatchQueueConfiguration\n  - InvocableScheduledItem\n  - InvocableType\n  - ScheduledItem\n  - ScheduledItemType\n- name: RxSwift/Subjects\n  children:\n  - AsyncSubject\n  - BehaviorSubject\n  - PublishSubject\n  - ReplaySubject\n  - SubjectType\n- name: RxSwift/SwiftSupport\n  children:\n  - SwiftSupport\n- name: RxSwift/Traits/Infallible\n  children:\n  - Infallible+CombineLatest+Collection\n  - Infallible+CombineLatest+arity\n  - Infallible+Concurrency\n  - Infallible+Create\n  - Infallible+Debug\n  - Infallible+Operators\n  - Infallible+Zip+arity\n  - Infallible\n  - ObservableConvertibleType+Infallible\n- name: RxSwift/Traits/PrimitiveSequence\n  children:\n  - Completable+AndThen\n  - Completable\n  - Maybe\n  - ObservableType+PrimitiveSequence\n  - PrimitiveSequence+Concurrency\n  - PrimitiveSequence+Zip+arity\n  - PrimitiveSequence\n  - Single\n"
  },
  {
    "path": ".ruby-version",
    "content": "3.3.0\n"
  },
  {
    "path": ".swift-version",
    "content": "6.1\n"
  },
  {
    "path": ".swiftformat",
    "content": "--ifdef no-indent\n--wrap-arguments before-first\n--commas inline\n--doc-comments preserve\n--exclude Sources/AllTestz/main.swift,RxTest/HotObservable.swift,Tests/RxSwiftTests/BagTest.swift\n"
  },
  {
    "path": ".swiftlint.yml",
    "content": "included:\n  - RxSwift\n  - RxCocoa\n  - RxTest\n  - RxBlocking\nopt_in_rules:\n  - overridden_super_call\n  - private_outlet\n  - prohibited_super_call\n  - first_where\n  - closure_spacing\n  - unneeded_parentheses_in_closure_argument\n  - redundant_nil_coalescing\n  - pattern_matching_keywords\n  - explicit_init\n  - contains_over_first_not_nil\ndisabled_rules:\n  - line_length\n  - trailing_whitespace\n  - type_name\n  - identifier_name\n  - vertical_whitespace\n  - trailing_newline\n  - opening_brace\n  - large_tuple\n  - file_length\n  - comma\n  - colon\n  - private_over_fileprivate\n  - force_cast\n  - force_try\n  - function_parameter_count\n  - statement_position\n  - legacy_hashing\n  - todo\n  - operator_whitespace\n  - type_body_length\n  - function_body_length\n  - cyclomatic_complexity"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, gender identity and expression, level of experience,\nnationality, personal appearance, race, religion, or sexual identity and\norientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\nadvances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n  address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n  professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for other behaviors that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting one of the project maintainers https://github.com/ReactiveX/RxSwift/graphs/contributors. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "## Contributing to RxSwift\n\nThank you for your interest in RxSwift! There are multiple ways you can contribute to this project. We welcome contributions in all areas, with special attention to:\n\n* [Issue fixes](#issue-fixes)\n* [Performance improvements](#performance-improvements)\n* [Documentation improvements](#documentation-improvements)\n* [New operators](#new-operators) (**read carefully!**)\n\nPlease take the time to carefully read the following guide. These rules help make the best out of your time, the code reviewer's time and the general consistency of the project.\n\n### General rules\n\nAll contributions are handled via Pull Requests (PRs). Your PR _must_ target the `[main](https://github.com/ReactiveX/RxSwift/tree/main)` branch. This is the place where we aggregate all upcoming changes for the next release of RxSwift. Moreover, your PR _must_ pass all tests and provide a meaningful description of what it is about. We have bots looking at PRs and enforcing these rules.\n\nBefore submitting a pull request please make sure **`./scripts/all-tests.sh`** is passing (exits with 0), otherwise we won't be able to pull your code.\n\nTo be able to run `./scripts/all-tests.sh`, you'll need to install [xcbeautify](https://github.com/cpisciotta/xcbeautify).\n\n`brew install xcbeautify`\n\nOnce the tests pass, you can push your feature branch to your clone of the repository, then open a pull request. There are some best practices that will be followed during the development of this project for common good ([Gitflow](http://nvie.com/posts/a-successful-git-branching-model/) branching model).\n\nDon't forget to update `CHANGELOG.md` before pushing your PR. While text may be re-worded before release, but it'll help tracking the changes.\n\nQuick checklist summary before submitting a PR:\n\n* 🔎 Make sure tests are added or updated to accommodate your changes. We do not accept any addition that come without tests. When possible, add tests to verify bug fixes and prevent future regressions.\n* 📖 Check that you provided a CHANGELOG entry documenting your changes (except for documentation improvements)\n* 👌 Verify that tests pass\n* 👍 Push it!\n\n### Slack channel\n\nMany of the RxSwift Community contributors interact on the [RxSwift Slack](https://rxswift.slack.com). It is a good starting place to exchange ideas and talk about your planned contributions to RxSwift. A good first step would be to join the slack, in particular the `#community` channel.\n\n### Issue fixes\n\nFixing issues is a good way to start contributing and getting used to the large codebase in project! You may want to look at outstanding [reported issues](https://github.com/ReactiveX/RxSwift/issues), or maybe you bumped into an issue that you found. In the latter case, please make sure you first open an issue in the [issue tracker](https://github.com/ReactiveX/RxSwift/issues) and indicate that you're working on a fix. This will give a chance to other contributors to chime in, and help tracking who's working on what in order to avoid duplicate work.\n\nOnce you believe the issue is fixed, make sure the tests pass (see above) then open a Pull Request.\n\nCongratulations on contributing a fix! We love receiving new bug fixes and your help is very much welcomed.\n\n### Performance improvements\n\nWe take performance very much to heart. RxSwift is at the core of some large products, and is a moderately complex framework with a lot of code. Performance improvements are always welcome! If you identified a bottleneck, please make sure you follow the performance fix procedure:\n\n* Prepare a reproducible case that highlights the performance issue, if possible. At least, the case should provide a testable timing result.\n* Submit a PR with a fix that provides a measurable performance improvement\n* Think hard about all the use cases! Threading and concurrency are important to think about when it comes to performance, make sure your fix doesn't come with a performance regression in some use cases.\n\nAs previously highlighted, discussing the matter via an issue is a preferred starting point. This will allow other contributors to join and express their point of view, allowing for a smooth glide from problem description to resolution.\n\nThanks for caring about performance! RxSwift is a crucial component of many applications and performance issues can have a wide impact.\n\n### Documentation improvements\n\nRxSwift is a complex project. Reactive programming in general is a lot about explaining the concepts, classes and operators. If you spotted a place where documentation could be improved (be in it-line documentation of project markdown pages), please feel free to submit a documentation improvement PR. We very much need a documentation that is as good, as as up-to-date as possible!\n\nWe understand the need for foreign language documentation. Unfortunately, due to the scope and breadth of the project it's a tough promise to keep up-to-date documentation in other languages than English. Moreover, all contributors only have English as a common language on the project. Therefore, and to keep the project as maintainable as possible, we only accept documentation changes and improvements provided in English. If you're looking at providing a translation of the in-line documentation, please make sure you have the resources and time to keep it updated as the framework changes. We care a lot about the quality of both the code and its documentation, over the long term. Maintaining a foreign language translation is a longtime commitment that should not be taken lightly.\n\nThank you for your interest in helping with documentation! Your contributions will make the life of other developers easier.\n\n\n### New operators\n\nIf you're thinking about adding new operators to RxSwift, please make sure you discuss them via an [issue](https://github.com/ReactiveX/RxSwift/issues) first. RxSwift is a large project, and we're trying to keep its core as compact as possible. We understand the desire to fulfill various kinds of needs, and want to make sure the core serves the majority of developers.\n\nAny operator you need may also be needed by others! But not all operators belong to the RxSwift core. The [RxSwift Community](https://github.com/RxSwiftCommunity/) is home to many projects that may be a better recipient for the improvements you want to bring. In some cases, you may even find that your specific problem is addressed by one of the RxSwiftCommunity project!\n\nSome operators, even though available in the core of other ReactiveX implementations, may be left out of the RxSwift code. Some of them can go into the [RxSwiftExt](https://github.com/RxSwiftCommunity/RxSwiftExt) project, others can be hosted in one of the many satellite community projects.\n\nIn any case, feel free to discuss your need in an [issue](https://github.com/ReactiveX/RxSwift/issues) ! The RxSwift Community is all about helping and interacting with fellow developers, and we very much welcome \n\n\n## Developer's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n- (a) The contribution was created in whole or in part by me and I\n      have the right to submit it under the open source license\n      indicated in the file; or\n\n- (b) The contribution is based upon previous work that, to the best\n      of my knowledge, is covered under an appropriate open source\n      license and I have the right under that license to submit that\n      work with modifications, whether created in whole or in part\n      by me, under the same open source license (unless I am\n      permitted to submit under a different license), as indicated\n      in the file; or\n\n- (c) The contribution was provided directly to me by some other\n      person who certified (a), (b) or (c) and I have not modified\n      it.\n\n- (d) I understand and agree that this project and the contribution\n      are public and that a record of the contribution (including all\n      personal information I submit with it, including my sign-off) is\n      maintained indefinitely and may be redistributed consistent with\n      this project or the open source license(s) involved.\n\n*Wording of statement copied from [elinux.org](http://elinux.org/Developer_Certificate_Of_Origin)*\n"
  },
  {
    "path": "Dangerfile",
    "content": "# Warn about develop branch\nwarn(\"Please target PRs to `develop` branch\") if github.branch_for_base != \"develop\"\n\n# Sometimes it's a README fix, or something like that - which isn't relevant for\n# including in a project's CHANGELOG for example\ndeclared_trivial = github.pr_title.include? \"#trivial\"\n\n# Make it more obvious that a PR is a work in progress and shouldn't be merged yet\nwarn(\"PR is classed as Work in Progress\") if github.pr_title.include? \"[WIP]\"\n\n# Warn no CHANGELOG\nwarn(\"No CHANGELOG changes made\") if git.lines_of_code > 50 && !git.modified_files.include?(\"CHANGELOG.md\") && !declared_trivial\n\n# Warn summary on pull request\nif github.pr_body.length < 5\n  warn \"Please provide a summary in the Pull Request description\"\nend\n\n# If these are all empty something has gone wrong, better to raise it in a comment\nif git.modified_files.empty? && git.added_files.empty? && git.deleted_files.empty?\n  fail \"This PR has no changes at all, this is likely a developer issue.\"\nend\n\n# Warn when there is a big PR\nwarn(\"Big PR\") if git.lines_of_code > 500\n"
  },
  {
    "path": "Documentation/ComparisonWithOtherLibraries.md",
    "content": "# Comparison with other libraries\n\nThis section attempts to compare RxSwift with other known and popular alternatives.\n\nThe best part about reactive programming is that most of the concepts you'll learn from either of these frameworks are entirely applicable to RxSwift, and vice-versa, with only relatively minor framework-specific concepts and naming conventions.\n\n## Apple's Combine\n\nCombine is Apple's own implementation of the [Reactive Streams](https://www.reactive-streams.org) standard. The main differences to consider are that Combine uses typed errors, and supports backpressure. Its huge downside is  that it's closed source, limited to iOS 13 and up, and does not support Linux as of today.\n\nIt also does not have its own testing framework like RxTest or RxBlocking, and doesn't have its own UIKit-supporting framework such as RxCocoa, since it is more aimed towards SwiftUI. Some of these issues have been addressed by community projects such as [CombineCocoa](https://github.com/CombineCommunity/CombineCocoa), [combine-schedulers](https://github.com/pointfreeco/combine-schedulers) and [CombineExpectations](https://github.com/groue/CombineExpectations).\n\nIt is also (as of 2020) a relatively young and not as battle-tested as RxSwift or ReactiveSwift which are around for over half a decade.\n\nIf you're interested in using Combine for your relatively modern codebase while still using your RxSwift codebase, you can leverage [RxCombine](https://github.com/CombineCommunity/RxCombine), a community project which aims to provide interoperability between Combine and RxSwift.\n\n## ReactiveSwift\n\nRxSwift is somewhat similar to ReactiveSwift since ReactiveSwift borrows a large number of concepts from Rx.\n\nOne of the main goals of this project was to create a significantly simpler interface that is more aligned with other Rx implementations, offers a richer concurrency model, offers more optimization opportunities and is more aligned with built-in Swift error handling mechanisms.\n\nWe've also decided to only rely on the Swift/llvm compiler and not introduce any external dependencies.\n\nProbably the main difference between these projects is in their approach in building abstractions.\n\nThe main goal of RxSwift project is to provide environment-agnostic compositional computation glue abstracted in the form of observable sequences.\n\nWe then aim to improve the experience of using RxSwift on specific platforms. To do this, RxCocoa uses generic computations to build more practical abstractions and wrap Foundation/Cocoa/UIKit frameworks. That means that other libraries give context and semantics to the generic computation engine RxSwift provides such as `Driver`, `Signal`, `ControlProperty`, `ControlEvent`s and more.\n\nOne of the benefits to representing all of these abstractions as a single concept - ​_observable sequences_​ - is that all computation abstractions built on top of them are also composable in the same fundamental way. They all follow the same contract and implement the same interface.\n It is also easy to create flexible subscription (resource) sharing strategies or use one of the built-in ones: `share`, `publish`, `multicast` ...\n\nThis library also offers a fine-tunable concurrency model. If concurrent schedulers are used, observable sequence operators will preserve sequence properties. The same observable sequence operators will also know how to detect and optimally use known serial schedulers. ReactiveSwift has a more limited concurrency model and only allows serial schedulers.\n\nMultithreaded programming is really hard and detecting non-trivial loops is even harder. That's why all operators are built in a fault tolerant way. Even if element generation occurs during element processing (recursion), operators will try to handle that situation and prevent deadlocks. This means that in the worst possible case programming error will cause stack overflow, but users won't have to manually kill the app, and you will get a crash report in error reporting systems so you can find and fix the problem.\n"
  },
  {
    "path": "Documentation/DesignRationale.md",
    "content": "Design Rationale\n================\n\n## Why error type isn't generic\n\n```Swift\nenum Event<Element>  {\n    case next(Element)      // next element of a sequence\n    case error(Error)       // sequence failed with error\n    case completed          // sequence terminated successfully\n}\n```\n\nLet's discuss the pros and cons of `Error` being generic.\n\nIf you have a generic error type, you create additional impedance mismatch between two observables.\n\nLet's say you have:\n\n`Observable<String, E1>` and `Observable<String, E2>`\n\nThere isn't much you can do with them without figuring out what the resulting error type will be.\n\nWill it be `E1`, `E2` or some new `E3` maybe? So, you would need a new set of operators just to solve that impedance mismatch.\n\nThis hurts composition properties, and Rx isn't concerned with why a sequence fails, it just usually forwards failures further down the observable chain.\n\nThere is an additional problem that, in some cases, operators might fail due to some internal error, in which case you wouldn't be able to construct a resulting error and report failure.\n\nBut OK, let's ignore that and assume we can use that to model sequences that don't error out. Could it be useful for that purpose?\n\nWell yes, it potentially could be, but let's consider why you would want to use sequences that don't error out.\n\nOne obvious application would be for permanent streams in the UI layer that drive the entire UI. When you consider that case, it's not really sufficient to only use the compiler to prove that sequences don't error out, you also need to prove other properties. For instance, those elements are observed on `MainScheduler`.\n\nWhat you really need is a generic way to prove traits for observable sequences. There are a lot of properties you could be interested in. For example:\n\n* sequence terminates in finite time (server side)\n* sequence contains only one element (if you are running some computation)\n* sequence doesn't error out, never terminates and elements are delivered on main scheduler (UI)\n* sequence doesn't error out, never terminates and elements are delivered on main scheduler, and has refcounted sharing (UI)\n* sequence doesn't error out, never terminates and elements are delivered on specific background scheduler (audio engine)\n\nWhat you really want is a general compiler-enforced system of traits for observable sequences, and a set of invariant operators for those wanted properties.\n\nA good analogy would be:\n\n```\n1, 3.14, e, 2.79, 1 + 1i      <->    Observable<E>\n1m/s, 1T, 5kg, 1.3 pounds     <->    Errorless observable, UI observable, Finite observable ...\n```\n\nThere are many ways to do such a thing in Swift by either using composition or inheritance of observables.\n\nAn additional benefit of using a unit system is that you can prove that UI code is executing on the same scheduler and thus use lockless operators for all transformations.\n\nSince RxSwift already doesn't have locks for single sequence operations, and all of the locks that do exist are in stateful components (e.g. UI), there are practically no locks in RxSwift code, which allows for such details to be compiler enforced.\n\nThere really is no benefit to using typed `Error`s that couldn't be achieved in other cleaner ways while preserving Rx compositional semantics.\n"
  },
  {
    "path": "Documentation/ExampleApp.md",
    "content": "\n## RxExamples\n\nTo run the example app:\n\n* Open `Rx.xcworkspace`\n* Choose one of example schemes (RxExample-iOS, RxExample-macOS) and hit `Run`.\n"
  },
  {
    "path": "Documentation/Examples.md",
    "content": "Examples\n========\n\n1. [Reactive values](#reactive-values)\n1. [Simple UI bindings](#simple-ui-bindings)\n1. [Automatic input validation](#automatic-input-validation)\n1. [more examples](../RxExample)\n1. [Playgrounds](Playgrounds.md)\n\n## Reactive values\n\nFirst, let's start with some imperative code.\nThe purpose of this example is to bind the identifier `c` to a value calculated from `a` and `b` if some condition is satisfied.\n\nHere is the imperative code that calculates the value of `c`:\n\n```swift\n// this is standard imperative code\nvar c: String\nvar a = 1       // this will only assign the value `1` to `a` once\nvar b = 2       // this will only assign the value `2` to `b` once\n\nif a + b >= 0 {\n    c = \"\\(a + b) is positive\" // this will only assign the value to `c` once\n}\n```\n\nThe value of `c` is now `3 is positive`. However, if we change the value of `a` to `4`, `c` will still contain the old value.\n\n```swift\na = 4           // `c` will still be equal to \"3 is positive\" which is not good\n                // we want `c` to be equal to \"6 is positive\" since 4 + 2 = 6\n```\n\nThis is not the desired behavior.\n\nThis is the improved logic using RxSwift:\n\n```swift\nlet a /*: Observable<Int>*/ = BehaviorRelay(value: 1)   // a = 1\nlet b /*: Observable<Int>*/ = BehaviorRelay(value: 2)   // b = 2\n\n// Combines latest values of relays `a` and `b` using `+`\nlet c = Observable.combineLatest(a, b) { $0 + $1 }\n\t.filter { $0 >= 0 }               // if `a + b >= 0` is true, `a + b` is passed to the map operator\n\t.map { \"\\($0) is positive\" }      // maps `a + b` to \"\\(a + b) is positive\"\n\n// Since the initial values are a = 1 and b = 2\n// 1 + 2 = 3 which is >= 0, so `c` is initially equal to \"3 is positive\"\n\n// To pull values out of the Rx `Observable` `c`, subscribe to values from `c`.\n// `subscribe(onNext:)` means subscribe to the next (fresh) values of `c`.\n// That also includes the initial value \"3 is positive\".\nc.subscribe(onNext: { print($0) })          // prints: \"3 is positive\"\n\n// Now, let's increase the value of `a`\na.accept(4)                                   // prints: 6 is positive\n// The sum of the latest values, `4` and `2`, is now `6`.\n// Since this is `>= 0`, the `map` operator produces \"6 is positive\"\n// and that result is \"assigned\" to `c`.\n// Since the value of `c` changed, `{ print($0) }` will get called,\n// and \"6 is positive\" will be printed.\n\n// Now, let's change the value of `b`\nb.accept(-8)                                 // doesn't print anything\n// The sum of the latest values, `4 + (-8)`, is `-4`.\n// Since this is not `>= 0`, `map` doesn't get executed.\n// This means that `c` still contains \"6 is positive\"\n// Since `c` hasn't been updated, a new \"next\" value hasn't been produced,\n// and `{ print($0) }` won't be called.\n```\n\n## Simple UI bindings\n\n* Instead of binding to Relays, let's bind to `UITextField` values using the `rx.text` property.\n* Next, `map` the `String` into an `Int` and determine if the number is prime using an async API.\n* If the text is changed before the async call completes, a new async call will replace it via `concat`.\n* Bind the results to a `UILabel`.\n\n```swift\nlet subscription/*: Disposable */ = primeTextField.rx.text.orEmpty // type is Observable<String>\n            .map { WolframAlphaIsPrime(Int($0) ?? 0) }             // type is Observable<Observable<Prime>>\n            .concat()                                              // type is Observable<Prime>\n            .map { \"number \\($0.n) is prime? \\($0.isPrime)\" }      // type is Observable<String>\n            .bind(to: resultLabel.rx.text)                         // return Disposable that can be used to unbind everything\n\n// This will set `resultLabel.text` to \"number 43 is prime? true\" after\n// server call completes. You manually trigger a control event since those are\n// the UIKit events RxCocoa observes internally.\nprimeTextField.text = \"43\"\nprimeTextField.sendActions(for: .editingDidEnd)\n\n// ...\n\n// to unbind everything, just call\nsubscription.dispose()\n```\n\nAll of the operators used in this example are the same operators used in the first example with relays. There's nothing special about it.\n\n## Automatic input validation\n\nIf you are new to Rx, the next example will probably be a little overwhelming at first. However, it's here to demonstrate how RxSwift code looks in the real-world.\n\nThis example contains complex async UI validation logic with progress notifications.\nAll operations are canceled the moment `disposeBag` is deallocated.\n\nLet's give it a shot.\n\n```swift\nenum Availability {\n    case available(message: String)\n    case taken(message: String)\n    case invalid(message: String)\n    case pending(message: String)\n\n    var message: String {\n        switch self {\n        case .available(let message),\n             .taken(let message),\n             .invalid(let message),\n             .pending(let message): \n\n             return message\n        }\n    }\n}\n\n// bind UI control values directly\n// use username from `usernameOutlet` as username values source\nself.usernameOutlet.rx.text\n    .map { username -> Observable<Availability> in\n\n        // synchronous validation, nothing special here\n        guard let username = username, !username.isEmpty else {\n            // Convenience for constructing synchronous result.\n            // In case there is mixed synchronous and asynchronous code inside the same\n            // method, this will construct an async result that is resolved immediately.\n            return Observable.just(.invalid(message: \"Username can't be empty.\"))\n        }\n\n        // ...\n\n        // User interfaces should probably show some state while async operations\n        // are executing.\n        let loadingValue = Availability.pending(message: \"Checking availability ...\")\n\n        // This will fire a server call to check if the username already exists.\n        // Its type is `Observable<Bool>`\n        return API.usernameAvailable(username)\n          .map { available in\n              if available {\n                  return .available(message: \"Username available\")\n              }\n              else {\n                  return .taken(message: \"Username already taken\")\n              }\n          }\n          // use `loadingValue` until server responds\n          .startWith(loadingValue)\n    }\n// Since we now have `Observable<Observable<Availability>>`\n// we need to somehow return to a simple `Observable<Availability>`.\n// We could use the `concat` operator from the second example, but we really\n// want to cancel pending asynchronous operations if a new username is provided.\n// That's what `switchLatest` does.\n    .switchLatest()\n// Now we need to bind that to the user interface somehow.\n// Good old `subscribe(onNext:)` can do that.\n// That's the end of `Observable` chain.\n    .subscribe(onNext: { [weak self] validity in\n        self?.errorLabel.textColor = validationColor(validity)\n        self?.errorLabel.text = validity.message\n    })\n// This will produce a `Disposable` object that can unbind everything and cancel\n// pending async operations.\n// Instead of doing it manually, which is tedious,\n// let's dispose everything automagically upon view controller dealloc.\n    .disposed(by: disposeBag)\n```\n\nIt doesn't get any simpler than that. There are [more examples](../RxExample) in the repository, so feel free to check them out.\n\nThey include examples on how to use Rx in the context of MVVM pattern or without it.\n"
  },
  {
    "path": "Documentation/GettingStarted.md",
    "content": "Getting Started\n===============\n\nThis project tries to be consistent with [ReactiveX.io](http://reactivex.io/). The general cross platform documentation and tutorials should also be valid in case of `RxSwift`.\n\n1. [Observables aka Sequences](#observables-aka-sequences)\n1. [Disposing](#disposing)\n1. [Implicit `Observable` guarantees](#implicit-observable-guarantees)\n1. [Creating your first `Observable` (aka observable sequence)](#creating-your-own-observable-aka-observable-sequence)\n1. [Creating an `Observable` that performs work](#creating-an-observable-that-performs-work)\n1. [Sharing subscription and `share` operator](#sharing-subscription-and-share-operator)\n1. [Operators](#operators)\n1. [Custom operators](#custom-operators)\n1. [Infallible](#infallible)\n1. [Playgrounds](#playgrounds)\n1. [Error handling](#error-handling)\n1. [Debugging Compile Errors](#debugging-compile-errors)\n1. [Debugging](#debugging)\n1. [Enabling Debug Mode](#enabling-debug-mode)\n1. [Debugging memory leaks](#debugging-memory-leaks)\n1. [KVO](#kvo)\n1. [UI layer tips](#ui-layer-tips)\n1. [Making HTTP requests](#making-http-requests)\n1. [RxDataSources](#rxdatasources)\n1. [Driver](Traits.md#driver)\n1. [Traits: Driver, Single, Maybe, Completable](Traits.md)\n1. [Examples](Examples.md)\n\n# Observables aka Sequences\n\n## Basics\nThe [equivalence](MathBehindRx.md) of observer pattern (`Observable<Element>` sequence) and normal sequences (`Sequence`) is the most important thing to understand about Rx.\n\n**Every `Observable` sequence is just a sequence. The key advantage for an `Observable` vs Swift's `Sequence` is that it can also receive elements asynchronously. This is the kernel of RxSwift, documentation from here is about ways that we expand on that idea.**\n\n* `Observable`(`ObservableType`) is equivalent to `Sequence`\n* `ObservableType.subscribe` method is equivalent to `Sequence.makeIterator` method.\n* Observer (callback) needs to be passed to `ObservableType.subscribe` method to receive sequence elements instead of calling `next()` on the returned iterator.\n\nSequences are a simple, familiar concept that is **easy to visualize**.\n\nPeople are creatures with huge visual cortexes. When we can visualize a concept easily, it's a lot easier to reason about it.\n\nWe can lift a lot of the cognitive load from trying to simulate event state machines inside every Rx operator onto high level operations over sequences.\n\nIf we don't use Rx but model asynchronous systems, that probably means our code is full of state machines and transient states that we need to simulate instead of abstracting away.\n\nLists and sequences are probably one of the first concepts mathematicians and programmers learn.\n\nHere is a sequence of numbers:\n\n\n```\n--1--2--3--4--5--6--| // terminates normally\n```\n\nAnother sequence, with characters:\n\n```\n--a--b--a--a--a---d---X // terminates with error\n```\n\nSome sequences are finite while others are infinite, like a sequence of button taps:\n\n```\n---tap-tap-------tap--->\n```\n\nThese are called marble diagrams. There are more marble diagrams at [rxmarbles.com](http://rxmarbles.com).\n\nIf we were to specify sequence grammar as a regular expression it would look like:\n\n**next\\* (error | completed)?**\n\nThis describes the following:\n\n* **Sequences can have 0 or more elements.**\n* **Once an `error` or `completed` event is received, the sequence cannot produce any other element.**\n\nSequences in Rx are described by a push interface (aka callback).\n\n```swift\nenum Event<Element>  {\n    case next(Element)      // next element of a sequence\n    case error(Swift.Error) // sequence failed with error\n    case completed          // sequence terminated successfully\n}\n\nclass Observable<Element> {\n    func subscribe(_ observer: Observer<Element>) -> Disposable\n}\n\nprotocol ObserverType {\n    func on(_ event: Event<Element>)\n}\n```\n\n**When a sequence sends the `completed` or `error` event all internal resources that compute sequence elements will be freed.**\n\n**To cancel production of sequence elements and free resources immediately, call `dispose` on the returned subscription.**\n\nIf a sequence terminates in finite time, not calling `dispose` or not using `disposed(by: disposeBag)` won't cause any permanent resource leaks. However, those resources will be used until the sequence completes, either by finishing production of elements or returning an error.\n\nIf a sequence does not terminate on its own, such as with a series of button taps, resources will be allocated permanently unless `dispose` is called manually, automatically inside of a `disposeBag`, with the `takeUntil` operator, or in some other way.\n\n**Using dispose bags or `takeUntil` operator is a robust way of making sure resources are cleaned up. We recommend using them in production even if the sequences will terminate in finite time.**\n\nIf you are curious why `Swift.Error` isn't generic, you can find the explanation [here](DesignRationale.md#why-error-type-isnt-generic).\n\n## Disposing\n\nThere is one additional way an observed sequence can terminate. When we are done with a sequence and we want to release all of the resources allocated to compute the upcoming elements, we can call `dispose` on a subscription.\n\nHere is an example with the `interval` operator.\n\n```swift\nlet scheduler = SerialDispatchQueueScheduler(qos: .default)\nlet subscription = Observable<Int>.interval(.milliseconds(300), scheduler: scheduler)\n    .subscribe { event in\n        print(event)\n    }\n\nThread.sleep(forTimeInterval: 2.0)\n\nsubscription.dispose()\n```\n\nThis will print:\n\n```\n0\n1\n2\n3\n4\n5\n```\n\nNote that you usually do not want to manually call `dispose`; this is only an educational example. Calling dispose manually is usually a bad code smell. There are better ways to dispose of subscriptions such as `DisposeBag`, the `takeUntil` operator, or some other mechanism.\n\nSo can this code print something after the `dispose` call is executed? The answer is: it depends.\n\n* If the `scheduler` is a **serial scheduler** (ex. `MainScheduler`) and `dispose` is called **on the same serial scheduler**, the answer is **no**.\n\n* Otherwise it is **yes**.\n\nYou can find out more about schedulers [here](Schedulers.md).\n\nYou simply have two processes happening in parallel.\n\n* one is producing elements\n* the other is disposing of the subscription\n\nThe question \"Can something be printed after?\" does not even make sense in the case that those processes are on different schedulers.\n\nA few more examples just to be sure (`observeOn` is explained [here](Schedulers.md)).\n\nIn case we have something like:\n\n```swift\nlet subscription = Observable<Int>.interval(.milliseconds(300), scheduler: scheduler)\n            .observe(on: MainScheduler.instance)\n            .subscribe { event in\n                print(event)\n            }\n\n// ....\n\nsubscription.dispose() // called from main thread\n\n```\n\n**After the `dispose` call returns, nothing will be printed. That is guaranteed.**\n\nAlso, in this case:\n\n```swift\nlet subscription = Observable<Int>.interval(.milliseconds(300), scheduler: scheduler)\n            .observe(on: MainScheduler.instance)\n            .subscribe { event in\n                print(event)\n            }\n\n// ...\n\nsubscription.dispose() // executing on same `serialScheduler`\n\n```\n\n**After the `dispose` call returns, nothing will be printed. That is guaranteed.**\n\n### Dispose Bags\n\nDispose bags are used to return ARC like behavior to RX.\n\nWhen a `DisposeBag` is deallocated, it will call `dispose` on each of the added disposables.\n\nIt does not have a `dispose` method and therefore does not allow calling explicit dispose on purpose. If immediate cleanup is required, we can just create a new bag.\n\n```swift\n  self.disposeBag = DisposeBag()\n```\n\nThis will clear old references and cause disposal of resources.\n\nIf that explicit manual disposal is still wanted, use `CompositeDisposable`. **It has the wanted behavior but once that `dispose` method is called, it will immediately dispose any newly added disposable.**\n\n### Take until\n\nAdditional way to automatically dispose subscription on dealloc is to use `takeUntil` operator.\n\n```swift\nsequence\n    .take(until: self.rx.deallocated)\n    .subscribe {\n        print($0)\n    }\n```\n\n## Implicit `Observable` guarantees\n\nThere is also a couple of additional guarantees that all sequence producers (`Observable`s) must honor.\n\nIt doesn't matter on which thread they produce elements, but if they generate one element and send it to the observer `observer.on(.next(nextElement))`, they can't send next element until `observer.on` method has finished execution.\n\nProducers also cannot send terminating `.completed` or `.error` in case `.next` event hasn't finished.\n\nIn short, consider this example:\n\n```swift\nsomeObservable\n  .subscribe { (e: Event<Element>) in\n      print(\"Event processing started\")\n      // processing\n      print(\"Event processing ended\")\n  }\n```\n\nThis will always print:\n\n```\nEvent processing started\nEvent processing ended\nEvent processing started\nEvent processing ended\nEvent processing started\nEvent processing ended\n```\n\nIt can never print:\n\n```\nEvent processing started\nEvent processing started\nEvent processing ended\nEvent processing ended\n```\n\n## Creating your own `Observable` (aka observable sequence)\n\nThere is one crucial thing to understand about observables.\n\n**When an observable is created, it doesn't perform any work simply because it has been created.**\n\nIt is true that `Observable` can generate elements in many ways. Some of them cause side effects and some of them tap into existing running processes like tapping into mouse events, etc.\n\n**However, if you just call a method that returns an `Observable`, no sequence generation is performed and there are no side effects. `Observable` just defines how the sequence is generated and what parameters are used for element generation. Sequence generation starts when `subscribe` method is called.**\n\nE.g. Let's say you have a method with similar prototype:\n\n```swift\nfunc searchWikipedia(searchTerm: String) -> Observable<Results> {}\n```\n\n```swift\nlet searchForMe = searchWikipedia(\"me\")\n\n// no requests are performed, no work is being done, no URL requests were fired\n\nlet cancel = searchForMe\n  // sequence generation starts now, URL requests are fired\n  .subscribe(onNext: { results in\n      print(results)\n  })\n\n```\n\nThere are a lot of ways to create your own `Observable` sequence. The easiest way is probably to use the `create` function.\n\nRxSwift provides a method that creates a sequence which returns one element upon subscription. That method is called `just`. Let's write our own implementation of it:\n\n*This is the actual implementation*\n\n```swift\nfunc myJust<E>(_ element: E) -> Observable<E> {\n    return Observable.create { observer in\n        observer.on(.next(element))\n        observer.on(.completed)\n        return Disposables.create()\n    }\n}\n\nmyJust(0)\n    .subscribe(onNext: { n in\n      print(n)\n    })\n```\n\nThis will print:\n\n```\n0\n```\n\nNot bad. So what is the `create` function?\n\nIt's just a convenience method that enables you to easily implement `subscribe` method using Swift closures. Like `subscribe` method it takes one argument, `observer`, and returns disposable.\n\nSequence implemented this way is actually synchronous. It will generate elements and terminate before `subscribe` call returns disposable representing subscription. Because of that it doesn't really matter what disposable it returns, process of generating elements can't be interrupted.\n\nWhen generating synchronous sequences, the usual disposable to return is singleton instance of `NopDisposable`.\n\nLets now create an observable that returns elements from an array.\n\n*This is the actual implementation*\n\n```swift\nfunc myFrom<E>(_ sequence: [E]) -> Observable<E> {\n    return Observable.create { observer in\n        for element in sequence {\n            observer.on(.next(element))\n        }\n\n        observer.on(.completed)\n        return Disposables.create()\n    }\n}\n\nlet stringCounter = myFrom([\"first\", \"second\"])\n\nprint(\"Started ----\")\n\n// first time\nstringCounter\n    .subscribe(onNext: { n in\n        print(n)\n    })\n\nprint(\"----\")\n\n// again\nstringCounter\n    .subscribe(onNext: { n in\n        print(n)\n    })\n\nprint(\"Ended ----\")\n```\n\nThis will print:\n\n```\nStarted ----\nfirst\nsecond\n----\nfirst\nsecond\nEnded ----\n```\n\n## Creating an `Observable` that performs work\n\nOk, now something more interesting. Let's create that `interval` operator that was used in previous examples.\n\n*This is equivalent of actual implementation for dispatch queue schedulers*\n\n```swift\nfunc myInterval(_ interval: DispatchTimeInterval) -> Observable<Int> {\n    return Observable.create { observer in\n        print(\"Subscribed\")\n        let timer = DispatchSource.makeTimerSource(queue: DispatchQueue.global())\n        timer.schedule(deadline: DispatchTime.now() + interval, repeating: interval)\n\n        let cancel = Disposables.create {\n            print(\"Disposed\")\n            timer.cancel()\n        }\n\n        var next = 0\n        timer.setEventHandler {\n            if cancel.isDisposed {\n                return\n            }\n            observer.on(.next(next))\n            next += 1\n        }\n        timer.resume()\n\n        return cancel\n    }\n}\n```\n\n```swift\nlet counter = myInterval(.milliseconds(100))\n\nprint(\"Started ----\")\n\nlet subscription = counter\n    .subscribe(onNext: { n in\n        print(n)\n    })\n\n\nThread.sleep(forTimeInterval: 0.5)\n\nsubscription.dispose()\n\nprint(\"Ended ----\")\n```\n\nThis will print\n```\nStarted ----\nSubscribed\n0\n1\n2\n3\n4\nDisposed\nEnded ----\n```\n\nWhat if you would write\n\n```swift\nlet counter = myInterval(.milliseconds(100))\n\nprint(\"Started ----\")\n\nlet subscription1 = counter\n    .subscribe(onNext: { n in\n        print(\"First \\(n)\")\n    })\n\nlet subscription2 = counter\n    .subscribe(onNext: { n in\n        print(\"Second \\(n)\")\n    })\n\nThread.sleep(forTimeInterval: 0.5)\n\nsubscription1.dispose()\n\nprint(\"Disposed\")\n\nThread.sleep(forTimeInterval: 0.5)\n\nsubscription2.dispose()\n\nprint(\"Disposed\")\n\nprint(\"Ended ----\")\n```\n\nThis would print:\n\n```\nStarted ----\nSubscribed\nSubscribed\nFirst 0\nSecond 0\nFirst 1\nSecond 1\nFirst 2\nSecond 2\nFirst 3\nSecond 3\nFirst 4\nSecond 4\nDisposed\nSecond 5\nSecond 6\nSecond 7\nSecond 8\nSecond 9\nDisposed\nEnded ----\n```\n\n**Every subscriber upon subscription usually generates it's own separate sequence of elements. Operators are stateless by default. There are vastly more stateless operators than stateful ones.**\n\n## Sharing subscription and `share` operator\n\nBut what if you want that multiple observers share events (elements) from only one subscription?\n\nThere are two things that need to be defined.\n\n* How to handle past elements that have been received before the new subscriber was interested in observing them (replay latest only, replay all, replay last n)\n* How to decide when to fire that shared subscription (refCount, manual or some other algorithm)\n\nThe usual choice is a combination of `replay(1).refCount()`, aka `share(replay: 1)`.\n\n```swift\nlet counter = myInterval(.milliseconds(100))\n    .share(replay: 1)\n\nprint(\"Started ----\")\n\nlet subscription1 = counter\n    .subscribe(onNext: { n in\n        print(\"First \\(n)\")\n    })\nlet subscription2 = counter\n    .subscribe(onNext: { n in\n        print(\"Second \\(n)\")\n    })\n\nThread.sleep(forTimeInterval: 0.5)\n\nsubscription1.dispose()\n\nThread.sleep(forTimeInterval: 0.5)\n\nsubscription2.dispose()\n\nprint(\"Ended ----\")\n```\n\nThis will print\n\n```\nStarted ----\nSubscribed\nFirst 0\nSecond 0\nFirst 1\nSecond 1\nFirst 2\nSecond 2\nFirst 3\nSecond 3\nFirst 4\nSecond 4\nSecond 5\nSecond 6\nSecond 7\nSecond 8\nSecond 9\nDisposed\nEnded ----\n```\n\nNotice how now there is only one `Subscribed` and `Disposed` event.\n\nBehavior for URL observables is equivalent.\n\nThis is how HTTP requests are wrapped in Rx. It's pretty much the same pattern like the `interval` operator.\n\n```swift\nextension Reactive where Base: URLSession {\n    public func response(request: URLRequest) -> Observable<(response: HTTPURLResponse, data: Data)> {\n        return Observable.create { observer in\n            let task = self.base.dataTask(with: request) { (data, response, error) in\n\n                guard let response = response, let data = data else {\n                    observer.on(.error(error ?? RxCocoaURLError.unknown))\n                    return\n                }\n\n                guard let httpResponse = response as? HTTPURLResponse else {\n                    observer.on(.error(RxCocoaURLError.nonHTTPResponse(response: response)))\n                    return\n                }\n\n                observer.on(.next((httpResponse, data)))\n                observer.on(.completed)\n            }\n\n            task.resume()\n\n            return Disposables.create {\n                task.cancel()\n            }\n        }\n    }\n}\n```\n\n## Operators\n\nThere are numerous operators implemented in RxSwift.\n\nMarble diagrams for all operators can be found on [ReactiveX.io](http://reactivex.io/)\n\nAlmost all operators are demonstrated in [Playgrounds](../Rx.playground).\n\nTo use playgrounds please open `Rx.xcworkspace`, build `RxSwift-macOS` scheme and then open playgrounds in `Rx.xcworkspace` tree view.\n\nIn case you need an operator, and don't know how to find it there is a [decision tree of operators](http://reactivex.io/documentation/operators.html#tree).\n\n### Custom operators\n\nThere are two ways how you can create custom operators.\n\n#### Easy way\n\nAll of the internal code uses highly optimized versions of operators, so they aren't the best tutorial material. That's why it's highly encouraged to use standard operators.\n\nFortunately there is an easier way to create operators. Creating new operators is actually all about creating observables, and previous chapter already describes how to do that.\n\nLets see how an unoptimized map operator can be implemented.\n\n```swift\nextension ObservableType {\n    func myMap<R>(transform: @escaping (Element) -> R) -> Observable<R> {\n        return Observable.create { observer in\n            let subscription = self.subscribe { e in\n                    switch e {\n                    case .next(let value):\n                        let result = transform(value)\n                        observer.on(.next(result))\n                    case .error(let error):\n                        observer.on(.error(error))\n                    case .completed:\n                        observer.on(.completed)\n                    }\n                }\n\n            return subscription\n        }\n    }\n}\n```\n\nSo now you can use your own map:\n\n```swift\nlet subscription = myInterval(.milliseconds(100))\n    .myMap { e in\n        return \"This is simply \\(e)\"\n    }\n    .subscribe(onNext: { n in\n        print(n)\n    })\n```\n\nThis will print:\n\n```\nSubscribed\nThis is simply 0\nThis is simply 1\nThis is simply 2\nThis is simply 3\nThis is simply 4\nThis is simply 5\nThis is simply 6\nThis is simply 7\nThis is simply 8\n...\n```\n\n## Infallible\n\n`Infallible` is another flavor of `Observable` which is identical to it, but is guaranteed to never fail and thus cannot emit errors. This means that when creating your own `Infallible` (Using `Infallible.create` or one of the methods mentioned in [Creating your first `Observable`](#creating-your-own-observable-aka-observable-sequence)), you will not be allowed to emit errors.\n\n`Infallible` is useful when you want to statically model and guarantee a stream of values that is known to never fail, but don't want to commit to using `MainScheduler` and don't want to implicitly use `share()` to share resources and side-effects, such as the case in [`Driver` and `Signal`](Traits.md#rxcocoa-traits).\n\n### Life happens\n\nSo what if it's just too hard to solve some cases with custom operators? You can exit the Rx monad, perform actions in imperative world, and then tunnel results to Rx again using `Subject`s.\n\nThis isn't something that should be practiced often, and is a bad code smell, but you can do it.\n\n```swift\n  let magicBeings: Observable<MagicBeing> = summonFromMiddleEarth()\n\n  magicBeings\n    .subscribe(onNext: { being in     // exit the Rx monad\n        self.doSomeStateMagic(being)\n    })\n    .disposed(by: disposeBag)\n\n  //\n  //  Mess\n  //\n  let kitten = globalParty(   // calculate something in messy world\n    being,\n    UIApplication.delegate.dataSomething.attendees\n  )\n  kittens.on(.next(kitten))   // send result back to rx\n  //\n  // Another mess\n  //\n\n  let kittens = BehaviorRelay(value: firstKitten) // again back in Rx monad\n\n  kittens.asObservable()\n    .map { kitten in\n      return kitten.purr()\n    }\n    // ....\n```\n\nEvery time you do this, somebody will probably write this code somewhere:\n\n```swift\n  kittens\n    .subscribe(onNext: { kitten in\n      // do something with kitten\n    })\n    .disposed(by: disposeBag)\n```\n\nSo please try not to do this.\n\n## Playgrounds\n\nIf you are unsure how exactly some of the operators work, [playgrounds](../Rx.playground) contain almost all of the operators already prepared with small examples that illustrate their behavior.\n\n**To use playgrounds please open Rx.xcworkspace, build RxSwift-macOS scheme and then open playgrounds in Rx.xcworkspace tree view.**\n\n**To view the results of the examples in the playgrounds, please open the `Assistant Editor`. You can open `Assistant Editor` by clicking on `View > Assistant Editor > Show Assistant Editor`**\n\n## Error handling\n\nThere are two error mechanisms.\n\n### Asynchronous error handling mechanism in observables\n\nError handling is pretty straightforward. If one sequence terminates with error, then all of the dependent sequences will terminate with error. It's usual short circuit logic.\n\nYou can recover from failure of observable by using `catch` operator. There are various overloads that enable you to specify recovery in great detail.\n\nThere is also `retry` operator that enables retries in case of errored sequence.\n\n### Hooks and Default error handling\n\nRxSwift offers a global Hook that provides a default error handling mechanism for cases when you don't provide your own `onError` handler.\n\nSet `Hooks.defaultErrorHandler` with your own closure to decide how to deal with unhandled errors in your system, if you need that option. For example, sending the stacktrace or untracked-error to your analytics system. \n\nBy default, `Hooks.defaultErrorHandler` simply prints the received error in `DEBUG` mode, and does nothing in `RELEASE`. However, you can add additional configurations to this behavior.\n\nIn order to enable detailed callstack logging, set `Hooks.recordCallStackOnError` flag to `true`.\n\nBy default, this will return the current `Thread.callStackSymbols` in `DEBUG` mode, and will track an empty stack trace in `RELEASE`. You may customize this behavior by overriding `Hooks.customCaptureSubscriptionCallstack` with your own implementation.\n\n\n## Debugging Compile Errors\n\nWhen writing elegant RxSwift/RxCocoa code, you are probably relying heavily on compiler to deduce types of `Observable`s. This is one of the reasons why Swift is awesome, but it can also be frustrating sometimes.\n\n```swift\nimages = word\n    .filter { $0.containsString(\"important\") }\n    .flatMap { word in\n        return self.api.loadFlickrFeed(\"karate\")\n            .catchError { error in\n                return just(JSON(1))\n            }\n      }\n```\n\nIf compiler reports that there is an error somewhere in this expression, I would suggest first annotating return types.\n\n```swift\nimages = word\n    .filter { s -> Bool in s.containsString(\"important\") }\n    .flatMap { word -> Observable<JSON> in\n        return self.api.loadFlickrFeed(\"karate\")\n            .catchError { error -> Observable<JSON> in\n                return just(JSON(1))\n            }\n      }\n```\n\nIf that doesn't work, you can continue adding more type annotations until you've localized the error.\n\n```swift\nimages = word\n    .filter { (s: String) -> Bool in s.containsString(\"important\") }\n    .flatMap { (word: String) -> Observable<JSON> in\n        return self.api.loadFlickrFeed(\"karate\")\n            .catchError { (error: Error) -> Observable<JSON> in\n                return just(JSON(1))\n            }\n      }\n```\n\n**I would suggest first annotating return types and arguments of closures.**\n\nUsually after you have fixed the error, you can remove the type annotations to clean up your code again.\n\n## Debugging\n\nUsing debugger alone is useful, but usually using `debug` operator will be more efficient. `debug` operator will print out all events to standard output and you can add also label those events.\n\n`debug` acts like a probe. Here is an example of using it:\n\n```swift\nlet subscription = myInterval(.milliseconds(100))\n    .debug(\"my probe\")\n    .map { e in\n        return \"This is simply \\(e)\"\n    }\n    .subscribe(onNext: { n in\n        print(n)\n    })\n\nThread.sleepForTimeInterval(0.5)\n\nsubscription.dispose()\n```\n\nwill print\n\n```\n[my probe] subscribed\nSubscribed\n[my probe] -> Event next(Box(0))\nThis is simply 0\n[my probe] -> Event next(Box(1))\nThis is simply 1\n[my probe] -> Event next(Box(2))\nThis is simply 2\n[my probe] -> Event next(Box(3))\nThis is simply 3\n[my probe] -> Event next(Box(4))\nThis is simply 4\n[my probe] dispose\nDisposed\n```\n\nYou can also easily create your version of the `debug` operator.\n\n```swift\nextension ObservableType {\n    public func myDebug(identifier: String) -> Observable<Self.E> {\n        return Observable.create { observer in\n            print(\"subscribed \\(identifier)\")\n            let subscription = self.subscribe { e in\n                print(\"event \\(identifier)  \\(e)\")\n                switch e {\n                case .next(let value):\n                    observer.on(.next(value))\n\n                case .error(let error):\n                    observer.on(.error(error))\n\n                case .completed:\n                    observer.on(.completed)\n                }\n            }\n            return Disposables.create {\n                   print(\"disposing \\(identifier)\")\n                   subscription.dispose()\n            }\n        }\n    }\n }\n ```\n\n### Enabling Debug Mode\nIn order to [Debug memory leaks using `RxSwift.Resources`](#debugging-memory-leaks) or [Log all HTTP requests automatically](#logging-http-traffic), you have to enable Debug Mode.\n\nIn order to enable debug mode, a `TRACE_RESOURCES` flag must be added to the RxSwift target build settings, under _Other Swift Flags_.\n\nFor further discussion and instructions on how to set the `TRACE_RESOURCES` flag for Cocoapods & Carthage, see [#378](https://github.com/ReactiveX/RxSwift/issues/378)\n\n### Debugging memory leaks\n\nIn debug mode Rx tracks all allocated resources in a global variable `Resources.total`.\n\nIn case you want to have some resource leak detection logic, the simplest method is just printing out `RxSwift.Resources.total` periodically to output.\n\n```swift\n    /* add somewhere in\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil)\n    */\n    _ = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n        .subscribe(onNext: { _ in\n            print(\"Resource count \\(RxSwift.Resources.total)\")\n        })\n```\n\nMost efficient way to test for memory leaks is:\n* navigate to your screen and use it\n* navigate back\n* observe initial resource count\n* navigate second time to your screen and use it\n* navigate back\n* observe final resource count\n\nIn case there is a difference in resource count between initial and final resource counts, there might be a memory\nleak somewhere.\n\nThe reason why 2 navigations are suggested is because first navigation forces loading of lazy resources.\n\n## KVO\n\nKVO is an Objective-C mechanism. That means that it wasn't built with type safety in mind. This project tries to solve some of the problems.\n\nThere are two built in ways this library supports KVO.\n\n```swift\n// KVO\nextension Reactive where Base: NSObject {\n    public func observe<E>(type: E.Type, _ keyPath: String, options: KeyValueObservingOptions, retainSelf: Bool = true) -> Observable<E?> {}\n}\n\n#if !DISABLE_SWIZZLING\n// KVO\nextension Reactive where Base: NSObject {\n    public func observeWeakly<E>(type: E.Type, _ keyPath: String, options: KeyValueObservingOptions) -> Observable<E?> {}\n}\n#endif\n```\n\nExample how to observe frame of `UIView`.\n\n**WARNING: UIKit isn't KVO compliant, but this will work.**\n\n```swift\nview\n  .rx.observe(CGRect.self, \"frame\")\n  .subscribe(onNext: { frame in\n    ...\n  })\n```\n\nor\n\n```swift\nview\n  .rx.observeWeakly(CGRect.self, \"frame\")\n  .subscribe(onNext: { frame in\n    ...\n  })\n```\n\n### `rx.observe`\n\n`rx.observe` is more performant because it's just a simple wrapper around KVO mechanism, but it has more limited usage scenarios\n\n* it can be used to observe paths starting from `self` or from ancestors in ownership graph (`retainSelf = false`)\n* it can be used to observe paths starting from descendants in ownership graph (`retainSelf = true`)\n* the paths have to consist only of `strong` properties, otherwise you are risking crashing the system by not unregistering KVO observer before dealloc.\n\nE.g.\n\n```swift\nself.rx.observe(CGRect.self, \"view.frame\", retainSelf: false)\n```\n\n### `rx.observeWeakly`\n\n`rx.observeWeakly` is somewhat slower than `rx.observe` because it has to handle object deallocation in case of weak references.\n\nIt can be used in all cases where `rx.observe` can be used and additionally\n\n* because it won't retain observed target, it can be used to observe arbitrary object graph whose ownership relation is unknown\n* it can be used to observe `weak` properties\n\nE.g.\n\n```swift\nsomeSuspiciousViewController.rx.observeWeakly(Bool.self, \"behavingOk\")\n```\n\n### Observing structs\n\nKVO is an Objective-C mechanism so it relies heavily on `NSValue`.\n\n**RxCocoa has built in support for KVO observing of `CGRect`, `CGSize` and `CGPoint` structs.**\n\nWhen observing some other structures it is necessary to extract those structures from `NSValue` manually.\n\n[Here](../RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift) are examples how to extend KVO observing mechanism and `rx.observe*` methods for other structs by implementing `KVORepresentable` protocol.\n\n## UI layer tips\n\nThere are certain things that your `Observable`s need to satisfy in the UI layer when binding to UIKit controls.\n\n### Threading\n\n`Observable`s need to send values on `MainScheduler`(UIThread). That's just a normal UIKit/Cocoa requirement.\n\nIt is usually a good idea for your APIs to return results on `MainScheduler`. In case you try to bind something to UI from background thread, in **Debug** build RxCocoa will usually throw an exception to inform you of that.\n\nTo fix this you need to add `observeOn(MainScheduler.instance)`.\n\n**URLSession extensions don't return result on `MainScheduler` by default.**\n\n### Errors\n\nYou can't bind failure to UIKit controls because that is undefined behavior.\n\nIf you don't know if `Observable` can fail, you can ensure it can't fail using `catchErrorJustReturn(valueThatIsReturnedWhenErrorHappens)`, **but after an error happens the underlying sequence will still complete**.\n\nIf the wanted behavior is for underlying sequence to continue producing elements, some version of `retry` operator is needed.\n\n### Sharing subscription\n\nYou usually want to share subscription in the UI layer. You don't want to make separate HTTP calls to bind the same data to multiple UI elements.\n\nLet's say you have something like this:\n\n```swift\nlet searchResults = searchText\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .distinctUntilChanged()\n    .flatMapLatest { query in\n        API.getSearchResults(query)\n            .retry(3)\n            .startWith([]) // clears results on new search term\n            .catchErrorJustReturn([])\n    }\n    .share(replay: 1)    // <- notice the `share` operator\n```\n\nWhat you usually want is to share search results once calculated. That is what `share` means.\n\n**It is usually a good rule of thumb in the UI layer to add `share` at the end of transformation chain because you really want to share calculated results. You don't want to fire separate HTTP connections when binding `searchResults` to multiple UI elements.**\n\n**Also take a look at `Driver` unit. It is designed to transparently wrap those `share` calls, make sure elements are observed on main UI thread and that no error can be bound to UI.**\n\n## Making HTTP requests\n\nMaking http requests is one of the first things people try.\n\nYou first need to build `URLRequest` object that represents the work that needs to be done.\n\nRequest determines is it a GET request, or a POST request, what is the request body, query parameters ...\n\nThis is how you can create a simple GET request\n\n```swift\nlet req = URLRequest(url: URL(string: \"http://en.wikipedia.org/w/api.php?action=parse&page=Pizza&format=json\"))\n```\n\nIf you want to just execute that request outside of composition with other observables, this is what needs to be done.\n\n```swift\nlet responseJSON = URLSession.shared.rx.json(request: req)\n\n// no requests will be performed up to this point\n// `responseJSON` is just a description how to fetch the response\n\n\nlet cancelRequest = responseJSON\n    // this will fire the request\n    .subscribe(onNext: { json in\n        print(json)\n    })\n\nThread.sleep(forTimeInterval: 3.0)\n\n// if you want to cancel request after 3 seconds have passed just call\ncancelRequest.dispose()\n\n```\n\n**URLSession extensions don't return result on `MainScheduler` by default.**\n\nIn case you want a more low level access to response, you can use:\n\n```swift\nURLSession.shared.rx.response(myURLRequest)\n    .debug(\"my request\") // this will print out information to console\n    .flatMap { (data: NSData, response: URLResponse) -> Observable<String> in\n        if let response = response as? HTTPURLResponse {\n            if 200 ..< 300 ~= response.statusCode {\n                return just(transform(data))\n            }\n            else {\n                return Observable.error(yourNSError)\n            }\n        }\n        else {\n            rxFatalError(\"response = nil\")\n            return Observable.error(yourNSError)\n        }\n    }\n    .subscribe { event in\n        print(event) // if error happened, this will also print out error to console\n    }\n```\n### Logging HTTP traffic\n\nRxCocoa will log all HTTP request info to the console by default when run in debug mode. You may overwrite the `URLSession.rx.shouldLogRequest` closure to define which requests should and shouldn't be logged.\n\n```swift\nURLSession.rx.shouldLogRequest = { request in\n    // Only log requests to reactivex.org     \n    return request.url?.host == \"reactivex.org\" || request.url?.host == \"www.reactivex.org\"\n}\n```\n\n## RxDataSources\n\n... is a set of classes that implement fully functional reactive data sources for `UITableView`s and `UICollectionView`s.\n\nRxDataSources are bundled [here](https://github.com/RxSwiftCommunity/RxDataSources).\n\nFully functional demonstration how to use them is included in the [RxExample](../RxExample) project.\n"
  },
  {
    "path": "Documentation/HotAndColdObservables.md",
    "content": "Hot and Cold Observables\n========================\n\nIMHO, I would suggest to more think of this as property of sequences and not separate types because they are represented by the same abstraction that fits them perfectly, `Observable` sequence.\n\nThis is a definition from ReactiveX.io\n\n> When does an Observable begin emitting its sequence of items? It depends on the Observable. A “hot” Observable may begin emitting items as soon as it is created, and so any observer who later subscribes to that Observable may start observing the sequence somewhere in the middle. A “cold” Observable, on the other hand, waits until an observer subscribes to it before it begins to emit items, and so such an observer is guaranteed to see the whole sequence from the beginning.\n\n| Hot Observables                                                                                         | Cold observables                                                              |\n|---------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|\n| ... are sequences                                                                                       | ... are sequences                                                             |\n| Use resources (\"produce heat\") no matter if there is any observer subscribed.                           | Don't use resources (don't produce heat) until observer subscribes.           |\n| Variables / properties / constants, tap coordinates, mouse coordinates, UI control values, current time | Async operations, HTTP Connections, TCP connections, streams                  |\n| Usually contains ~ N elements                                                                           | Usually contains ~ 1 element                                                  |\n| Sequence elements are produced no matter if there is any observer subscribed.                           | Sequence elements are produced only if there is a subscribed observer.        |\n| Sequence computation resources are usually shared between all of the subscribed observers.              | Sequence computation resources are usually allocated per subscribed observer. |\n| Usually stateful                                                                                        | Usually stateless                                                             |\n"
  },
  {
    "path": "Documentation/MathBehindRx.md",
    "content": "Math Behind Rx\n==============\n\n## Duality between Observer and Iterator / Enumerator / Generator / Sequences\n\nThere is a duality between the observer and generator patterns. This is what enables us to transition from the async callback world to the synchronous world of sequence transformations.\n\nIn short, the enumerator and observer patterns both describe sequences. It's fairly obvious why the enumerator defines a sequence, but the observer is slightly more complicated.\n\nThere is, however, a pretty simple example that doesn't require a lot of mathematical knowledge. Assume that you are observing the position of your mouse cursor on screen at given times. Over time, these mouse positions form a sequence. This is, in essence, an observable sequence.\n\nThere are two basic ways elements of a sequence can be accessed:\n\n* Push interface - Observer (observed elements over time make a sequence)\n* Pull interface - Iterator / Enumerator / Generator\n\nYou can also see a more formal explanation in this video:\n\n* [Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)](https://www.youtube.com/watch?v=looJcaeboBY)\n"
  },
  {
    "path": "Documentation/NewFeatureRequestTemplate.md",
    "content": "**Please copy the following template [here](https://github.com/ReactiveX/RxSwift/issues/new) and fill in the missing fields so we can help you as soon as possible.**\n\n```\n*Short description of missing functionality*:\n\n  E.g. I want this library to implement xxx operator.\n\n*Short code example of how you would like to use the API*:\n\n  code goes here\n\n*The reason why I need this functionality*:\n\n  E.g. I was trying to ....\n\n*Code I have right now*:\n\n  code snippet that demonstrates how you've attempted to solve the problem\n\n```\n"
  },
  {
    "path": "Documentation/Playgrounds.md",
    "content": "## Playgrounds\n\nTo use playgrounds:\n\n* Open `Rx.xcworkspace`\n* Build the `RxSwift` scheme on `My Mac`.\n* Open `Rx` playground in the `Rx.xcworkspace` tree view.\n* Choose `View > Debug Area > Show Debug Area`\n"
  },
  {
    "path": "Documentation/Schedulers.md",
    "content": "# Schedulers\n\n1. [Serial vs Concurrent Schedulers](#serial-vs-concurrent-schedulers)\n1. [Custom schedulers](#custom-schedulers)\n1. [Builtin schedulers](#builtin-schedulers)\n\nSchedulers abstract away the mechanism for performing work.\n\nDifferent mechanisms for performing work include the current thread, dispatch queues, operation queues, new threads, thread pools, and run loops.\n\nThere are two main operators that work with schedulers, `observeOn` and `subscribeOn`.\n\nIf you want to perform work on a different scheduler just use `observeOn(scheduler)` operator.\n\nYou would usually use `observeOn` a lot more often than `subscribeOn`.\n\nIn case `observeOn` isn't explicitly specified, work will be performed on whichever thread/scheduler elements are generated.\n\nExample of using the `observeOn` operator:\n\n```swift\nsequence1\n  .observeOn(backgroundScheduler)\n  .map { n in\n      print(\"This is performed on the background scheduler\")\n  }\n  .observeOn(MainScheduler.instance)\n  .map { n in\n      print(\"This is performed on the main scheduler\")\n  }\n```\n\nIf you want to start sequence generation (`subscribe` method) and call dispose on a specific scheduler, use `subscribeOn(scheduler)`.\n\nIn case `subscribeOn` isn't explicitly specified, the `subscribe` closure (closure passed to `Observable.create`) will be called on the same thread/scheduler on which `subscribe(onNext:)` or `subscribe` is called.\n\nIn case `subscribeOn` isn't explicitly specified, the `dispose` method will be called on the same thread/scheduler that initiated disposing.\n\nIn short, if no explicit scheduler is chosen, those methods will be called on current thread/scheduler.\n\n## Serial vs Concurrent Schedulers\n\nSince schedulers can really be anything, and all operators that transform sequences need to preserve additional [implicit guarantees](GettingStarted.md#implicit-observable-guarantees), it is important what kind of schedulers are you creating.\n\nIn case the scheduler is concurrent, Rx's `observeOn` and `subscribeOn` operators will make sure everything works perfectly.\n\nIf you use some scheduler that Rx can prove is serial, it will be able to perform additional optimizations.\n\nSo far it only performs those optimizations for dispatch queue schedulers.\n\nIn case of serial dispatch queue schedulers, `observeOn` is optimized to just a simple `dispatch_async` call.\n\n## Custom schedulers\n\nBesides current schedulers, you can write your own schedulers.\n\nIf you just want to describe who needs to perform work immediately, you can create your own scheduler by implementing the `ImmediateScheduler` protocol.\n\n```swift\npublic protocol ImmediateScheduler {\n    func schedule<StateType>(state: StateType, action: (/*ImmediateScheduler,*/ StateType) -> RxResult<Disposable>) -> RxResult<Disposable>\n}\n```\n\nIf you want to create a new scheduler that supports time based operations, then you'll need to implement the `Scheduler` protocol:\n\n```swift\npublic protocol Scheduler: ImmediateScheduler {\n    associatedtype TimeInterval\n    associatedtype Time\n\n    var now : Time {\n        get\n    }\n\n    func scheduleRelative<StateType>(state: StateType, dueTime: TimeInterval, action: (StateType) -> RxResult<Disposable>) -> RxResult<Disposable>\n}\n```\n\nIn case the scheduler only has periodic scheduling capabilities, you can inform Rx by implementing the `PeriodicScheduler` protocol:\n\n```swift\npublic protocol PeriodicScheduler : Scheduler {\n    func schedulePeriodic<StateType>(state: StateType, startAfter: TimeInterval, period: TimeInterval, action: (StateType) -> StateType) -> RxResult<Disposable>\n}\n```\n\nIn case the scheduler doesn't support `PeriodicScheduling` capabilities, Rx will emulate periodic scheduling transparently.\n\n## Builtin schedulers\n\nRx can use all types of schedulers, but it can also perform some additional optimizations if it has proof that scheduler is serial.\n\nThese are the currently supported schedulers:\n\n### CurrentThreadScheduler (Serial scheduler)\n\nSchedules units of work on the current thread.\nThis is the default scheduler for operators that generate elements.\n\nThis scheduler is also sometimes called a \"trampoline scheduler\".\n\nIf `CurrentThreadScheduler.instance.schedule(state) { }` is called for the first time on some thread, the scheduled action will be executed immediately and a hidden queue will be created where all recursively scheduled actions will be temporarily enqueued.\n\nIf some parent frame on the call stack is already running `CurrentThreadScheduler.instance.schedule(state) { }`, the scheduled action will be enqueued and executed when the currently running action and all previously enqueued actions have finished executing.\n\n### MainScheduler (Serial scheduler)\n\nAbstracts work that needs to be performed on `MainThread`. In case `schedule` methods are called from main thread, it will perform the action immediately without scheduling.\n\nThis scheduler is usually used to perform UI work.\n\n### SerialDispatchQueueScheduler (Serial scheduler)\n\nAbstracts the work that needs to be performed on a specific `dispatch_queue_t`. It will make sure that even if a concurrent dispatch queue is passed, it's transformed into a serial one.\n\nSerial schedulers enable certain optimizations for `observeOn`.\n\nThe main scheduler is an instance of `SerialDispatchQueueScheduler`.\n\n### ConcurrentDispatchQueueScheduler (Concurrent scheduler)\n\nAbstracts the work that needs to be performed on a specific `dispatch_queue_t`. You can also pass a serial dispatch queue, it shouldn't cause any problems.\n\nThis scheduler is suitable when some work needs to be performed in the background.\n\n### OperationQueueScheduler (Concurrent scheduler)\n\nAbstracts the work that needs to be performed on a specific `NSOperationQueue`.\n\nThis scheduler is suitable for cases when there is some bigger chunk of work that needs to be performed in the background and you want to fine tune concurrent processing using `maxConcurrentOperationCount`.\n"
  },
  {
    "path": "Documentation/Subjects.md",
    "content": "# Subjects\n\nAll of behave exactly the same like described [here](http://reactivex.io/documentation/subject.html)\n\n## Relays\n\nRxRelay provides three kinds of Relays: `PublishRelay`, `BehaviorRelay`  and `ReplayRelay`.\nThey behave exactly like their parallel `Subject`s, with two changes:\n\n- Relays never complete.\n- Relays never emit errors.\n\nIn essence, Relays only emit `.next` events, and never terminate.\n"
  },
  {
    "path": "Documentation/SwiftConcurrency.md",
    "content": "## Swift Concurrency\n\nSwift 5.5 introduced a new long-awaited concurrency model for Swift, using the new `async`/`await` syntax.\n\nStarting with RxSwift 6.5, you can `await` on your `Observable`s and other reactive units as if they were async operations or sequences, and you can also convert `async` pieces of work into `Observable`s.\n\n### `await`ing values emitted by `Observable`\n\nThere are three variations to `await`ing values emitted by `Observable`s - depending on the amount of values a trait emits, and whether or not it's throwing.\n\nThe three variations are: awaiting a sequence, awaiting a non-throwing sequence, or awaiting a single value.\n\n#### Awaiting a throwing sequence\n\n`Observable`s by default may emit an error. As such, in the `async`/`await` world - they may _throw_ an error.\n\nYou can iterate over the entirety of an `Observable`'s life time and elements like so:\n\n```swift\ndo {\n    for try await value in observable.values {\n        print(\"Got a value:\", value)\n    }\n} catch {\n    print(\"Got an error:\", error)\n}\n```\n\nNote that the `Observable` must complete, or the async task will suspend and never resume back to the parent task.\n\n#### Awaiting a non-throwing sequence\n\n`Infallible`, `Driver`, and `Signal` are all guaranteed to never emit errors (as opposed to `Observable`), so you may directly iterate over their values without worrying about catching any errors:\n\n```swift\nfor await value in infallible.values {\n    print(\"Got a value:\", value)\n}\n```\n\n#### Awaiting a single value\n\nAs opposed to the possibly-infinite sequences above, primitive sequences are guaranteed to only emit zero or one values. In those cases, you can simply await their value directly:\n\n```swift\nlet value1 = try await single.value // Element\nlet value2 = try await maybe.value // Element?\nlet value3 = try await completable.value // Void\n```\n\n> **Note**: If a `Maybe` completes without emitting a value, it returns `nil` instead. A `Completable`, on the other hand, simply returns `Void` to note it finished its work.\n\n### Wrapping an `async` Task as an `Observable`\n\nIf you already have an `AsyncSequence`-conforming asynchronous sequence at hand (such as an `AsyncStream`), you can bridge it back to the Rx world by simply using `asObservable()`:\n\n```swift\nlet stream = AsyncStream { ... }\n\nstream.asObservable()\n    .subscribe(\n        onNext: { ... },\n        onError: { ... }\n    )\n```\n\n### Wrapping an `async` result as a `Single`\n\nIf you already have an async piece of work that returns a single result you wish to await, you can bridge it back to the Rx world by using `Single.create`, a special overload which takes an `async throws` closure where you can simply await your async work:\n\n```swift\nfunc doIncredibleWork() async throws -> AmazingResponse {\n    ...\n}\n\nlet single = Single.create {\n    try await doIncredibleWork()\n} // Single<AmazingResponse>\n```\n"
  },
  {
    "path": "Documentation/Tips.md",
    "content": "Tips\n====\n\n* Always strive to model your systems or their parts as pure functions. Those pure functions can be tested easily and can be used to modify operator behaviors.\n* When you are using Rx, first try to compose built-in operators.\n* If using some combination of operators often, create your convenience operators.\n\n    e.g.\n\n    ```swift\n    extension ObservableType where E: MaybeCool {\n\n        public func coolElements()\n            -> Observable<E> {\n            return filter { e -> Bool in\n                return e.isCool\n            }\n        }\n    }\n    ```\n\n* Rx operators are as general as possible, but there will always be edge cases that will be hard to model. In those cases you can just create your own operator and possibly use one of the built-in operators as a reference.\n\n* Always use operators to compose subscriptions.\n\n  **Avoid nesting subscribe calls at all cost. This is a code smell.**\n\n  ```swift\n  textField.rx.text.subscribe(onNext: { text in\n      performURLRequest(text).subscribe(onNext: { result in\n          ...\n      })\n      .disposed(by: disposeBag)\n  })\n  .disposed(by: disposeBag)\n  ```\n\n  **Preferred way of chaining disposables by using operators.**\n\n  ```swift\n  textField.rx.text\n      .flatMapLatest { text in\n          // Assuming this doesn't fail and returns result on main scheduler,\n          // otherwise `catchError` and `observeOn(MainScheduler.instance)` can be used to\n          // correct this.\n          return performURLRequest(text)\n      }\n      ...\n      .disposed(by: disposeBag) // only one top most disposable\n  ```\n"
  },
  {
    "path": "Documentation/Traits.md",
    "content": "Traits (formerly Units)\n=====\n\nThis document will try to describe what traits are, why they are a useful concept, and how to use and create them.\n\n* [General](#general)\n  * [Why](#why)\n  * [How they work](#how-they-work)\n* [RxSwift traits](#rxswift-traits)\n  * [Single](#single)\n    * [Creating a Single](#creating-a-single)\n  * [Completable](#completable)\n    * [Creating a Completable](#creating-a-completable)\n  * [Maybe](#maybe)\n    * [Creating a Maybe](#creating-a-maybe)\n* [RxCocoa traits](#rxcocoa-traits)\n  * [Driver](#driver)\n    * [Why is it named Driver](#why-is-it-named-driver)\n    * [Practical usage example](#practical-usage-example)\n  * [Signal](#signal)\n  * [ControlProperty / ControlEvent](#controlproperty--controlevent)\n\n\n## General\n### Why\n\nSwift has a powerful type system that can be used to improve the correctness and stability of applications and make using Rx a more intuitive and straightforward experience.\n\nTraits help communicate and ensure observable sequence properties across interface boundaries, as well as provide contextual meaning, syntactical sugar and target more specific use-cases when compared to a raw Observable, which could be used in any context. **For that reason, Traits are entirely optional. You are free to use raw Observable sequences everywhere in your program as all core RxSwift/RxCocoa APIs support them.**\n\n_**Note:** Some of the Traits described in this document (such as `Driver`) are specific only to the [RxCocoa](https://github.com/ReactiveX/RxSwift/tree/main/RxCocoa) project, while some are part of the general [RxSwift](https://github.com/ReactiveX/RxSwift) project. However, the same principles could easily be implemented in other Rx implementations, if necessary. There is no private API magic needed._\n\n### How they work\n\nTraits are simply a wrapper struct with a single read-only Observable sequence property.\n\n```swift\nstruct Single<Element> {\n    let source: Observable<Element>\n}\n\nstruct Driver<Element> {\n    let source: Observable<Element>\n}\n...\n```\n\nYou can think of them as a kind of builder pattern implementation for Observable sequences. When a Trait is built, calling `.asObservable()` will transform it back into a vanilla observable sequence.\n\n---\n\n## RxSwift traits\n\n### Single\n\nA Single is a variation of Observable that, instead of emitting a series of elements, is always guaranteed to emit either _a single element_ or _an error_.\n\n* Emits exactly one element, or an error.\n* Doesn't share side effects.\n\nOne common use case for using Single is for performing HTTP Requests that could only return a response or an error, but a Single can be used to model any case where you only care for a single element, and not for an infinite stream of elements.\n\n#### Creating a Single\nCreating a Single is similar to creating an Observable.\nA simple example would look like this:\n\n```swift\nfunc getRepo(_ repo: String) -> Single<[String: Any]> {\n    return Single<[String: Any]>.create { single in\n        let task = URLSession.shared.dataTask(with: URL(string: \"https://api.github.com/repos/\\(repo)\")!) { data, _, error in\n            if let error = error {\n                single(.failure(error))\n                return\n            }\n\n            guard let data = data,\n                  let json = try? JSONSerialization.jsonObject(with: data, options: .mutableLeaves),\n                  let result = json as? [String: Any] else {\n                single(.failure(DataError.cantParseJSON))\n                return\n            }\n\n            single(.success(result))\n        }\n\n        task.resume()\n\n        return Disposables.create { task.cancel() }\n    }\n}\n```\n\nAfter which you could use it in the following way:\n\n```swift\ngetRepo(\"ReactiveX/RxSwift\")\n    .subscribe { event in\n        switch event {\n            case .success(let json):\n                print(\"JSON: \", json)\n            case .failure(let error):\n                print(\"Error: \", error)\n        }\n    }\n    .disposed(by: disposeBag)\n```\n\nOr by using `subscribe(onSuccess:onError:)` as follows: \n```swift\ngetRepo(\"ReactiveX/RxSwift\")\n    .subscribe(onSuccess: { json in\n                   print(\"JSON: \", json)\n               },\n               onError: { error in\n                   print(\"Error: \", error)\n               })\n    .disposed(by: disposeBag)\n```\n\nThe subscription uses Swift `Result` enumeration which could be either `.success` containing an element of the Single's type, or `.failure` containing an error. No further events would be emitted beyond the first one.\n\nIt's also possible using `.asSingle()` on a raw Observable sequence to transform it into a Single.\n\n### Completable\n\nA Completable is a variation of Observable that can only _complete_ or _emit an error_. It is guaranteed to not emit any elements.\n\n* Emits zero elements.\n* Emits a completion event, or an error.\n* Doesn't share side effects.\n\nA useful use case for Completable would be to model any case where we only care for the fact an operation has completed, but don't care about a element resulted by that completion.\nYou could compare it to using an `Observable<Void>` that can't emit elements.\n\n#### Creating a Completable\nCreating a Completable is similar to creating an Observable. A simple example would look like this:\n\n```swift\nfunc cacheLocally() -> Completable {\n    return Completable.create { completable in\n       // Store some data locally\n       ...\n       ...\n\n       guard success else {\n           completable(.error(CacheError.failedCaching))\n           return Disposables.create {}\n       }\n\n       completable(.completed)\n       return Disposables.create {}\n    }\n}\n```\n\nAfter which you could use it in the following way:\n```swift\ncacheLocally()\n    .subscribe { completable in\n        switch completable {\n            case .completed:\n                print(\"Completed with no error\")\n            case .error(let error):\n                print(\"Completed with an error: \\(error.localizedDescription)\")\n        }\n    }\n    .disposed(by: disposeBag)\n```\n\nOr by using `subscribe(onCompleted:onError:)` as follows:\n```swift\ncacheLocally()\n    .subscribe(onCompleted: {\n                   print(\"Completed with no error\")\n               },\n               onError: { error in\n                   print(\"Completed with an error: \\(error.localizedDescription)\")\n               })\n    .disposed(by: disposeBag)\n```\n\nThe subscription provides a `CompletableEvent` enumeration which could be either `.completed` - indicating the operation completed with no errors, or `.error`. No further events would be emitted beyond the first one.\n\n### Maybe\nA Maybe is a variation of Observable that is right in between a Single and a Completable. It can either emit a single element, complete without emitting an element, or emit an error.\n\n**Note:** Any of these three events would terminate the Maybe, meaning - a Maybe that completed can't also emit an element, and a Maybe that emitted an element can't also send a Completion event.\n\n* Emits either a completed event, a single element or an error.\n* Doesn't share side effects.\n\nYou could use Maybe to model any operation that **could** emit an element, but doesn't necessarily **have to** emit an element.\n\n#### Creating a Maybe\nCreating a Maybe is similar to creating an Observable. A simple example would look like this:\n\n```swift\nfunc generateString() -> Maybe<String> {\n    return Maybe<String>.create { maybe in\n        maybe(.success(\"RxSwift\"))\n\n        // OR\n\n        maybe(.completed)\n\n        // OR\n\n        maybe(.error(error))\n\n        return Disposables.create {}\n    }\n}\n```\n\nAfter which you could use it in the following way:\n```swift\ngenerateString()\n    .subscribe { maybe in\n        switch maybe {\n            case .success(let element):\n                print(\"Completed with element \\(element)\")\n            case .completed:\n                print(\"Completed with no element\")\n            case .error(let error):\n                print(\"Completed with an error \\(error.localizedDescription)\")\n        }\n    }\n    .disposed(by: disposeBag)\n```\n\nOr by using `subscribe(onSuccess:onError:onCompleted:)` as follows:\n\n```swift\ngenerateString()\n    .subscribe(onSuccess: { element in\n                   print(\"Completed with element \\(element)\")\n               },\n               onError: { error in\n                   print(\"Completed with an error \\(error.localizedDescription)\")\n               },\n               onCompleted: {\n                   print(\"Completed with no element\")\n               })\n    .disposed(by: disposeBag)\n```\n\nIt's also possible using `.asMaybe()` on a raw Observable sequence to transform it into a `Maybe`.\n\n---\n\n## RxCocoa traits\n\n### Driver\n\nThis is the most elaborate trait. Its intention is to provide an intuitive way to write reactive code in the UI layer, or for any case where you want to model a stream of data _Driving_ your application.\n\n* Can't error out.\n* Observe occurs on main scheduler.\n* Shares side effects (`share(replay: 1, scope: .whileConnected)`).\n\n#### Why is it named Driver\n\nIts intended use case was to model sequences that drive your application.\n\nE.g.\n* Drive UI from CoreData model.\n* Drive UI using values from other UI elements (bindings).\n...\n\n\nLike normal operating system drivers, in case a sequence errors out, your application will stop responding to user input.\n\nIt is also extremely important that those elements are observed on the main thread because UI elements and application logic are usually not thread safe.\n\nAlso, a `Driver` builds an observable sequence that shares side effects.\n\nE.g.\n\n#### Practical usage example\n\nThis is a typical beginner example.\n\n```swift\nlet results = query.rx.text\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .flatMapLatest { query in\n        fetchAutoCompleteItems(query)\n    }\n\nresults\n    .map { \"\\($0.count)\" }\n    .bind(to: resultCount.rx.text)\n    .disposed(by: disposeBag)\n\nresults\n    .bind(to: resultsTableView.rx.items(cellIdentifier: \"Cell\")) { (_, result, cell) in\n        cell.textLabel?.text = \"\\(result)\"\n    }\n    .disposed(by: disposeBag)\n```\n\nThe intended behavior of this code was to:\n* Throttle user input.\n* Contact server and fetch a list of user results (once per query).\n* Bind the results to two UI elements: results table view and a label that displays the number of results.\n\nSo, what are the problems with this code?:\n* If the `fetchAutoCompleteItems` observable sequence errors out (connection failed or parsing error), this error would unbind everything and the UI wouldn't respond any more to new queries.\n* If `fetchAutoCompleteItems` returns results on some background thread, results would be bound to UI elements from a background thread which could cause non-deterministic crashes.\n* Results are bound to two UI elements, which means that for each user query, two HTTP requests would be made, one for each UI element, which is not the intended behavior.\n\nA more appropriate version of the code would look like this:\n\n```swift\nlet results = query.rx.text\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .flatMapLatest { query in\n        fetchAutoCompleteItems(query)\n            .observeOn(MainScheduler.instance)  // results are returned on MainScheduler\n            .catchErrorJustReturn([])           // in the worst case, errors are handled\n    }\n    .share(replay: 1)                           // HTTP requests are shared and results replayed\n                                                // to all UI elements\n\nresults\n    .map { \"\\($0.count)\" }\n    .bind(to: resultCount.rx.text)\n    .disposed(by: disposeBag)\n\nresults\n    .bind(to: resultsTableView.rx.items(cellIdentifier: \"Cell\")) { (_, result, cell) in\n        cell.textLabel?.text = \"\\(result)\"\n    }\n    .disposed(by: disposeBag)\n```\n\nMaking sure all of these requirements are properly handled in large systems can be challenging, but there is a simpler way of using the compiler and traits to prove these requirements are met.\n\nThe following code looks almost the same:\n\n```swift\nlet results = query.rx.text.asDriver()        // This converts a normal sequence into a `Driver` sequence.\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .flatMapLatest { query in\n        fetchAutoCompleteItems(query)\n            .asDriver(onErrorJustReturn: [])  // Builder just needs info about what to return in case of error.\n    }\n\nresults\n    .map { \"\\($0.count)\" }\n    .drive(resultCount.rx.text)               // If there is a `drive` method available instead of `bind(to:)`,\n    .disposed(by: disposeBag)              // that means that the compiler has proven that all properties\n                                              // are satisfied.\nresults\n    .drive(resultsTableView.rx.items(cellIdentifier: \"Cell\")) { (_, result, cell) in\n        cell.textLabel?.text = \"\\(result)\"\n    }\n    .disposed(by: disposeBag)\n```\n\nSo what is happening here?\n\nThis first `asDriver` method converts the `ControlProperty` trait to a `Driver` trait.\n\n```swift\nquery.rx.text.asDriver()\n```\n\nNotice that there wasn't anything special that needed to be done. `Driver` has all of the properties of the `ControlProperty` trait, plus some more. The underlying observable sequence is just wrapped as a `Driver` trait, and that's it.\n\nThe second change is:\n\n```swift\n.asDriver(onErrorJustReturn: [])\n```\n\nAny observable sequence can be converted to `Driver` trait, as long as it satisfies 3 properties:\n* Can't error out.\n* Observe on main scheduler.\n* Sharing side effects (`share(replay: 1, scope: .whileConnected)`).\n\nSo how do you make sure those properties are satisfied? Just use normal Rx operators. `asDriver(onErrorJustReturn: [])` is equivalent to following code.\n\n```swift\nlet safeSequence = xs\n  .observeOn(MainScheduler.instance)        // observe events on main scheduler\n  .catchErrorJustReturn(onErrorJustReturn)  // can't error out\n  .share(replay: 1, scope: .whileConnected) // side effects sharing\n\nreturn Driver(raw: safeSequence)            // wrap it up\n```\n\nThe final piece is using `drive` instead of using `bind(to:)`.\n\n`drive` is defined only on the `Driver` trait. This means that if you see `drive` somewhere in code, that observable sequence can never error out and it observes on the main thread, which is safe for binding to a UI element.\n\nNote however that, theoretically, someone could still define a `drive` method to work on `ObservableType` or some other interface, so to be extra safe, creating a temporary definition with `let results: Driver<[Results]> = ...` before binding to UI elements would be necessary for complete proof. However, we'll leave it up to the reader to decide whether this is a realistic scenario or not.\n\n### Signal\n\nA `Signal` is similar to `Driver` with one difference, it does **not** replay the latest event on subscription, but subscribers still share the sequence's computational resources.\n\nIt can be considered a builder pattern to model Imperative Events in a Reactive way as part of your application.\n\nA `Signal`:\n\n* Can't error out.\n* Delivers events on Main Scheduler.\n* Shares computational resources (`share(scope: .whileConnected)`).\n* Does NOT replay elements on subscription.\n\n## ControlProperty / ControlEvent\n\n### ControlProperty\n\nTrait for `Observable`/`ObservableType` that represents a property of UI element.\n \nSequence of values only represents initial control value and user initiated value changes. Programmatic value changes won't be reported.\n\nIt's properties are:\n\n- it never fails\n- `share(replay: 1)` behavior\n    - it's stateful, upon subscription (calling subscribe) last element is immediately replayed if it was produced\n- it will `Complete` sequence on control being deallocated\n- it never errors out\n- it delivers events on `MainScheduler.instance`\n\nThe implementation of `ControlProperty` will ensure that sequence of events is being subscribed on main scheduler (`subscribeOn(ConcurrentMainScheduler.instance)` behavior).\n\n#### Practical usage example\n\nWe can find very good practical examples in the `UISearchBar+Rx` and in the `UISegmentedControl+Rx`:\n\n```swift\nextension Reactive where Base: UISearchBar {\n    /// Reactive wrapper for `text` property.\n    public var value: ControlProperty<String?> {\n        let source: Observable<String?> = Observable.deferred { [weak searchBar = self.base as UISearchBar] () -> Observable<String?> in\n            let text = searchBar?.text\n            \n            return (searchBar?.rx.delegate.methodInvoked(#selector(UISearchBarDelegate.searchBar(_:textDidChange:))) ?? Observable.empty())\n                    .map { a in\n                        return a[1] as? String\n                    }\n                    .startWith(text)\n        }\n\n        let bindingObserver = Binder(self.base) { (searchBar, text: String?) in\n            searchBar.text = text\n        }\n        \n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n}\n```\n\n```swift\nextension Reactive where Base: UISegmentedControl {\n    /// Reactive wrapper for `selectedSegmentIndex` property.\n    public var selectedSegmentIndex: ControlProperty<Int> {\n        value\n    }\n    \n    /// Reactive wrapper for `selectedSegmentIndex` property.\n    public var value: ControlProperty<Int> {\n        return UIControl.rx.value(\n            self.base,\n            getter: { segmentedControl in\n                segmentedControl.selectedSegmentIndex\n            }, setter: { segmentedControl, value in\n                segmentedControl.selectedSegmentIndex = value\n            }\n        )\n    }\n}\n```\n\n### ControlEvent\n\nTrait for `Observable`/`ObservableType` that represents an event on a UI element.\n\nIt's properties are:\n\n- it never fails\n- it won't send any initial value on subscription\n- it will `Complete` sequence on control being deallocated\n- it never errors out\n- it delivers events on `MainScheduler.instance`\n\nThe implementation of `ControlEvent` will ensure that sequence of events is being subscribed on main scheduler (`subscribeOn(ConcurrentMainScheduler.instance)` behavior).\n\n#### Practical usage example\n\nThis is a typical case example in which you can use it:\n\n```swift\npublic extension Reactive where Base: UIViewController {\n    \n    /// Reactive wrapper for `viewDidLoad` message `UIViewController:viewDidLoad:`.\n    public var viewDidLoad: ControlEvent<Void> {\n        let source = self.methodInvoked(#selector(Base.viewDidLoad)).map { _ in }\n        return ControlEvent(events: source)\n    }\n}\n```\n\nAnd in the `UICollectionView+Rx` we can found it in this way:\n\n```swift\n\nextension Reactive where Base: UICollectionView {\n    \n    /// Reactive wrapper for `delegate` message `collectionView:didSelectItemAtIndexPath:`.\n    public var itemSelected: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didSelectItemAt:)))\n            .map { a in\n                return a[1] as! IndexPath\n            }\n        \n        return ControlEvent(events: source)\n    }\n}\n```\n"
  },
  {
    "path": "Documentation/UnitTests.md",
    "content": "Unit Tests\n==========\n\n## Testing custom operators\n\nRxSwift uses `RxTest` for all operator tests, located in the AllTests-* target inside the project `Rx.xcworkspace`.\n\nThis is an example of a typical `RxSwift` operator unit test:\n\n```swift\nfunc testMap_Range() {\n    // Initializes test scheduler.\n    // Test scheduler implements virtual time that is\n    // detached from local machine clock.\n    // This enables running the simulation as fast as possible\n    // and proving that all events have been handled.\n    let scheduler = TestScheduler(initialClock: 0)\n    \n    // Creates a mock hot observable sequence.\n    // The sequence will emit events at designated\n    // times, no matter if there are observers subscribed or not.\n    // (that's what hot means).\n    // This observable sequence will also record all subscriptions\n    // made during its lifetime (`subscriptions` property).\n    let xs = scheduler.createHotObservable([\n        .next(150, 1),  // first argument is virtual time, second argument is element value\n        .next(210, 0),\n        .next(220, 1),\n        .next(230, 2),\n        .next(240, 4),\n        .completed(300) // virtual time when completed is sent\n    ])\n    \n    // `start` method will by default:\n    // * Run the simulation and record all events\n    //   using observer referenced by `res`.\n    // * Subscribe at virtual time 200\n    // * Dispose subscription at virtual time 1000\n    let res = scheduler.start { xs.map { $0 * 2 } }\n    \n    let correctMessages = Recorded.events(\n        .next(210, 0 * 2),\n        .next(220, 1 * 2),\n        .next(230, 2 * 2),\n        .next(240, 4 * 2),\n        .completed(300)\n    )\n    \n    let correctSubscriptions = [\n        Subscription(200, 300)\n    ]\n    \n    XCTAssertEqual(res.events, correctMessages)\n    XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n}\n```\n\nIn the case of non-terminating sequences where you don't necessarily care about the event times, You may also use `RxTest`'s `XCTAssertRecordedElements` to assert specific elements have been emitted.\nA terminating stop event (e.g. `completed` or `error`) will cause the test to fail.\n\n```swift\nfunc testElementsEmitted() {\n    let scheduler = TestScheduler(initialClock: 0)\n\n    let xs = scheduler.createHotObservable([\n        .next(210, \"RxSwift\"),\n        .next(220, \"is\"),\n        .next(230, \"pretty\"),\n        .next(240, \"awesome\")\n    ])\n\n    let res = scheduler.start { xs.asObservable() }\n\n    XCTAssertRecordedElements(res.events, [\"RxSwift\", \"is\", \"pretty\", \"awesome\"])\n}\n```\n\n## Testing operator compositions (view models, components)\n\nExamples of how to test operator compositions are contained inside `Rx.xcworkspace` > `RxExample-iOSTests` target.\n\nIt's easy to define `RxTest` extensions so you can write your tests in a readable way. Provided examples inside `RxExample-iOSTests` are just suggestions on how you can write those extensions, but there are a lot of possibilities on how to write those tests.\n\n```swift\n    // expected events and test data\n    let (\n        usernameEvents,\n        passwordEvents,\n        repeatedPasswordEvents,\n        loginTapEvents,\n\n        expectedValidatedUsernameEvents,\n        expectedSignupEnabledEvents\n    ) = (\n        scheduler.parseEventsAndTimes(\"e---u1----u2-----u3-----------------\", values: stringValues).first!,\n        scheduler.parseEventsAndTimes(\"e----------------------p1-----------\", values: stringValues).first!,\n        scheduler.parseEventsAndTimes(\"e---------------------------p2---p1-\", values: stringValues).first!,\n        scheduler.parseEventsAndTimes(\"------------------------------------\", values: events).first!,\n\n        scheduler.parseEventsAndTimes(\"e---v--f--v--f---v--o----------------\", values: validations).first!,\n        scheduler.parseEventsAndTimes(\"f--------------------------------t---\", values: booleans).first!\n    )\n```\n\n## Integration tests\n\nIt is also possible to write integration tests by using `RxBlocking` operators.\n\nUsing `RxBlocking`'s `toBlocking()` method, you can block the current thread and wait for the sequence to complete, allowing you to synchronously access its result.\n\nA simple way to test the result of your sequence is using the `toArray` method. It will return an array of all elements emitted once a sequence has completed successfully, or `throw` if an error caused the sequence to terminate.\n\n```swift\nlet result = try fetchResource(location)\n        .toBlocking()\n        .toArray()\n\nXCTAssertEqual(result, expectedResult)\n```\n\nAnother option would be to use the `materialize` operator which lets you more granularly examine your sequence. It will return a `MaterializedSequenceResult` enumeration that could be either `.completed` along with the emitted elements if the sequence completed successfully, or `failed` if the sequence terminated with an error, along with the emitted error.\n\n```swift\nlet result = try fetchResource(location)\n        .toBlocking()\n        .materialize()\n\n// For testing the results or error in the case of terminating with error\nswitch result {\n        case .completed:\n            XCTFail(\"Expected result to complete with error, but result was successful.\")\n        case .failed(let elements, let error):\n            XCTAssertEqual(elements, expectedResult)\n            XCTAssertErrorEqual(error, expectedError)\n        }\n\n// For testing the results in the case of termination with completion\nswitch result {\n        case .completed(let elements):\n            XCTAssertEqual(elements, expectedResult)\n        case .failed(_, let error):\n            XCTFail(\"Expected result to complete without error, but received \\(error).\")\n        }\n```\n"
  },
  {
    "path": "Documentation/Warnings.md",
    "content": "Warnings\n========\n\n### <a name=\"unused-disposable\"></a>Unused disposable (unused-disposable)\n\nThe following is valid for the `subscribe*`, `bind*` and `drive*` family of functions that return `Disposable`.\n\nYou will receive a warning for doing something such as this:\n\n```Swift\nlet xs: Observable<E> ....\n\nxs\n  .filter { ... }\n  .map { ... }\n  .switchLatest()\n  .subscribe(onNext: {\n    ...\n  }, onError: {\n    ...\n  })\n```\n\nThe `subscribe` function returns a subscription `Disposable` that can be used to cancel computation and free resources.  However, not using it (and thus not disposing it) will result in an error.\n\nThe preferred way of terminating these fluent calls is by using a `DisposeBag`, either through chaining a call to `.disposed(by: disposeBag)` or by adding the disposable directly to the bag.\n\n```Swift\nlet xs: Observable<E> ....\nlet disposeBag = DisposeBag()\n\nxs\n  .filter { ... }\n  .map { ... }\n  .switchLatest()\n  .subscribe(onNext: {\n    ...\n  }, onError: {\n    ...\n  })\n  .disposed(by: disposeBag) // <--- note `.disposed(by:)`\n```\n\nWhen `disposeBag` gets deallocated, the disposables contained within it will be automatically disposed as well.\n\nIn the case where `xs` terminates in a predictable way with either a `Completed` or `Error` message, not handling the subscription `Disposable` won't leak any resources. However, even in this case, using a dispose bag is still the preferred way to handle subscription disposables. It ensures that element computation is always terminated at a predictable moment, and makes your code robust and future proof because resources will be properly disposed even if the implementation of `xs` changes.\n\nAnother way to make sure subscriptions and resources are tied to the lifetime of some object is by using the `takeUntil` operator.\n\n```Swift\nlet xs: Observable<E> ....\nlet someObject: NSObject  ...\n\n_ = xs\n  .filter { ... }\n  .map { ... }\n  .switchLatest()\n  .takeUntil(someObject.deallocated) // <-- note the `takeUntil` operator\n  .subscribe(onNext: {\n    ...\n  }, onError: {\n    ...\n  })\n```\n\nIf ignoring the subscription `Disposable` is the desired behavior, this is how to silence the compiler warning.\n\n```Swift\nlet xs: Observable<E> ....\n\n_ = xs // <-- note the underscore\n  .filter { ... }\n  .map { ... }\n  .switchLatest()\n  .subscribe(onNext: {\n    ...\n  }, onError: {\n    ...\n  })\n```\n\n### <a name=\"unused-observable\"></a>Unused observable sequence (unused-observable)\n\nYou will receive a warning for doing something such as this:\n\n```Swift\nlet xs: Observable<E> ....\n\nxs\n  .filter { ... }\n  .map { ... }\n```\n\nThis code defines an observable sequence that is filtered and mapped from the `xs` sequence but then ignores the result.\n\nSince this code just defines an observable sequence and then ignores it, it doesn't actually do anything.\n\nYour intention was probably to either store the observable sequence definition and use it later ...\n\n```Swift\nlet xs: Observable<E> ....\n\nlet ys = xs // <--- names definition as `ys`\n  .filter { ... }\n  .map { ... }\n```\n\n... or start computation based on that definition\n\n```Swift\nlet xs: Observable<E> ....\nlet disposeBag = DisposeBag()\n\nxs\n  .filter { ... }\n  .map { ... }\n  .subscribe(onNext: { nextElement in  // <-- note the `subscribe*` method\n    // use the element\n    print(nextElement)\n  })\n  .disposed(by: disposeBag)\n```\n"
  },
  {
    "path": "Documentation/Why.md",
    "content": "## Why\n\n**Rx enables building apps in a declarative way.**\n\n### Bindings\n\n```swift\nObservable.combineLatest(firstName.rx.text, lastName.rx.text) { $0 + \" \" + $1 }\n    .map { \"Greetings, \\($0)\" }\n    .bind(to: greetingLabel.rx.text)\n```\n\nThis also works with `UITableView`s and `UICollectionView`s.\n\n```swift\nviewModel\n    .rows\n    .bind(to: resultsTableView.rx.items(cellIdentifier: \"WikipediaSearchCell\", cellType: WikipediaSearchCell.self)) { (_, viewModel, cell) in\n        cell.title = viewModel.title\n        cell.url = viewModel.url\n    }\n    .disposed(by: disposeBag)\n```\n\n**Official suggestion is to always use `.disposed(by: disposeBag)` even though that's not necessary for simple bindings.**\n\n### Retries\n\nIt would be great if APIs wouldn't fail, but unfortunately they do. Let's say there is an API method:\n\n```swift\nfunc doSomethingIncredible(forWho: String) throws -> IncredibleThing\n```\n\nIf you are using this function as it is, it's really hard to do retries in case it fails. Not to mention complexities modeling [exponential backoffs](https://en.wikipedia.org/wiki/Exponential_backoff). Sure it's possible, but the code would probably contain a lot of transient states that you really don't care about, and it wouldn't be reusable.\n\nIdeally, you would want to capture the essence of retrying, and to be able to apply it to any operation.\n\nThis is how you can do simple retries with Rx\n\n```swift\ndoSomethingIncredible(\"me\")\n    .retry(3)\n```\n\nYou can also easily create custom retry operators.\n\n### Delegates\n\nInstead of doing the tedious and non-expressive:\n\n```swift\npublic func scrollViewDidScroll(scrollView: UIScrollView) { [weak self] // what scroll view is this bound to?\n    self?.leftPositionConstraint.constant = scrollView.contentOffset.x\n}\n```\n\n... write\n\n```swift\nself.resultsTableView\n    .rx.contentOffset\n    .map { $0.x }\n    .bind(to: self.leftPositionConstraint.rx.constant)\n```\n\n### KVO\n\nInstead of:\n\n```\n`TickTock` was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object.\n```\n\nand\n\n```objc\n-(void)observeValueForKeyPath:(NSString *)keyPath\n                     ofObject:(id)object\n                       change:(NSDictionary *)change\n                      context:(void *)context\n```\n\nUse [`rx.observe` and `rx.observeWeakly`](GettingStarted.md#kvo)\n\nThis is how they can be used:\n\n```swift\nview.rx.observe(CGRect.self, \"frame\")\n    .subscribe(onNext: { frame in\n        print(\"Got new frame \\(frame)\")\n    })\n    .disposed(by: disposeBag)\n```\n\nor\n\n```swift\nsomeSuspiciousViewController\n    .rx.observeWeakly(Bool.self, \"behavingOk\")\n    .subscribe(onNext: { behavingOk in\n        print(\"Cats can purr? \\(behavingOk)\")\n    })\n    .disposed(by: disposeBag)\n```\n\n### Notifications\n\nInstead of using:\n\n```swift\n@available(iOS 4.0, *)\npublic func addObserverForName(name: String?, object obj: AnyObject?, queue: NSOperationQueue?, usingBlock block: (NSNotification) -> Void) -> NSObjectProtocol\n```\n\n... just write\n\n```swift\nNotificationCenter.default\n    .rx.notification(NSNotification.Name.UITextViewTextDidBeginEditing, object: myTextView)\n    .map {  /*do something with data*/ }\n    ....\n```\n\n### Transient state\n\nThere are also a lot of problems with transient state when writing async programs. A typical example is an autocomplete search box.\n\nIf you were to write the autocomplete code without Rx, the first problem that probably needs to be solved is when `c` in `abc` is typed, and there is a pending request for `ab`, the pending request gets canceled. OK, that shouldn't be too hard to solve, you just create an additional variable to hold reference to the pending request.\n\nThe next problem is if the request fails, you need to do that messy retry logic. But OK, a couple more fields that capture the number of retries that need to be cleaned up.\n\nIt would be great if the program would wait for some time before firing a request to the server. After all, we don't want to spam our servers in case somebody is in the process of typing something very long. An additional timer field maybe?\n\nThere is also a question of what needs to be shown on screen while that search is executing, and also what needs to be shown in case we fail even with all of the retries.\n\nWriting all of this and properly testing it would be tedious. This is that same logic written with Rx.\n\n```swift\nsearchTextField.rx.text\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .distinctUntilChanged()\n    .flatMapLatest { query in\n        API.getSearchResults(query)\n            .retry(3)\n            .startWith([]) // clears results on new search term\n            .catchErrorJustReturn([])\n    }\n    .subscribe(onNext: { results in\n      // bind to ui\n    })\n    .disposed(by: disposeBag)\n```\n\nThere are no additional flags or fields required. Rx takes care of all that transient mess.\n\n### Compositional disposal\n\nLet's assume that there is a scenario where you want to display blurred images in a table view. First, the images should be fetched from a URL, then decoded and then blurred.\n\nIt would also be nice if that entire process could be canceled if a cell exits the visible table view area since bandwidth and processor time for blurring are expensive.\n\nIt would also be nice if we didn't just immediately start to fetch an image once the cell enters the visible area since, if user swipes really fast, there could be a lot of requests fired and canceled.\n\nIt would be also nice if we could limit the number of concurrent image operations because, again, blurring images is an expensive operation.\n\nThis is how we can do it using Rx:\n\n```swift\n// this is a conceptual solution\nlet imageSubscription = imageURLs\n    .throttle(.milliseconds(200), scheduler: MainScheduler.instance)\n    .flatMapLatest { imageURL in\n        API.fetchImage(imageURL)\n    }\n    .observeOn(operationScheduler)\n    .map { imageData in\n        return decodeAndBlurImage(imageData)\n    }\n    .observeOn(MainScheduler.instance)\n    .subscribe(onNext: { blurredImage in\n        imageView.image = blurredImage\n    })\n    .disposed(by: reuseDisposeBag)\n```\n\nThis code will do all that and, when `imageSubscription` is disposed, it will cancel all dependent async operations and make sure no rogue image is bound to the UI.\n\n### Aggregating network requests\n\nWhat if you need to fire two requests and aggregate results when they have both finished?\n\nWell, there is of course the `zip` operator\n\n```swift\nlet userRequest: Observable<User> = API.getUser(\"me\")\nlet friendsRequest: Observable<[Friend]> = API.getFriends(\"me\")\n\nObservable.zip(userRequest, friendsRequest) { user, friends in\n    return (user, friends)\n}\n.subscribe(onNext: { user, friends in\n    // bind them to the user interface\n})\n.disposed(by: disposeBag)\n```\n\nSo what if those APIs return results on a background thread, and binding has to happen on the main UI thread? There is `observeOn`.\n\n```swift\nlet userRequest: Observable<User> = API.getUser(\"me\")\nlet friendsRequest: Observable<[Friend]> = API.getFriends(\"me\")\n\nObservable.zip(userRequest, friendsRequest) { user, friends in\n    return (user, friends)\n}\n.observeOn(MainScheduler.instance)\n.subscribe(onNext: { user, friends in\n    // bind them to the user interface\n})\n.disposed(by: disposeBag)\n```\n\nThere are many more practical use cases where Rx really shines.\n\n### State\n\nLanguages that allow mutation make it easy to access global state and mutate it. Uncontrolled mutations of shared global state can easily cause [combinatorial explosion](https://en.wikipedia.org/wiki/Combinatorial_explosion#Computing).\n\nBut on the other hand, when used in a smart way, imperative languages can enable writing more efficient code closer to hardware.\n\nThe usual way to battle combinatorial explosion is to keep state as simple as possible, and use [unidirectional data flows](https://developer.apple.com/videos/play/wwdc2014-229) to model derived data.\n\nThis is where Rx really shines.\n\nRx is that sweet spot between functional and imperative worlds. It enables you to use immutable definitions and pure functions to process snapshots of mutable state in a reliable composable way.\n\nSo what are some practical examples?\n\n### Easy integration\n\nWhat if you need to create your own observable? It's pretty easy. This code is taken from RxCocoa and that's all you need to wrap HTTP requests with `URLSession`\n\n```swift\nextension Reactive where Base: URLSession {\n    public func response(request: URLRequest) -> Observable<(Data, HTTPURLResponse)> {\n        return Observable.create { observer in\n            let task = self.base.dataTask(with: request) { (data, response, error) in\n            \n                guard let response = response, let data = data else {\n                    observer.on(.error(error ?? RxCocoaURLError.unknown))\n                    return\n                }\n\n                guard let httpResponse = response as? HTTPURLResponse else {\n                    observer.on(.error(RxCocoaURLError.nonHTTPResponse(response: response)))\n                    return\n                }\n\n                observer.on(.next(data, httpResponse))\n                observer.on(.completed)\n            }\n\n            task.resume()\n\n            return Disposables.create(with: task.cancel)\n        }\n    }\n}\n```\n\n### Benefits\n\nIn short, using Rx will make your code:\n\n* Composable <- Because Rx is composition's nickname\n* Reusable <- Because it's composable\n* Declarative <- Because definitions are immutable and only data changes\n* Understandable and concise <- Raising the level of abstraction and removing transient states\n* Stable <- Because Rx code is thoroughly unit tested\n* Less stateful <- Because you are modeling applications as unidirectional data flows\n* Without leaks <- Because resource management is easy\n\n### It's not all or nothing\n\nIt is usually a good idea to model as much of your application as possible using Rx.\n\nBut what if you don't know all of the operators and whether or not there even exists some operator that models your particular case?\n\nWell, all of the Rx operators are based on math and should be intuitive.\n\nThe good news is that about 10-15 operators cover most typical use cases. And that list already includes some of the familiar ones like `map`, `filter`, `zip`, `observeOn`, ...\n\nThere is a huge list of [all Rx operators](http://reactivex.io/documentation/operators.html).\n\nFor each operator, there is a [marble diagram](http://reactivex.io/documentation/operators/retry.html) that helps to explain how it works.\n\nBut what if you need some operator that isn't on that list? Well, you can make your own operator.\n\nWhat if creating that kind of operator is really hard for some reason, or you have some legacy stateful piece of code that you need to work with? Well, you've got yourself in a mess, but you can [jump out of Rx monads](GettingStarted.md#life-happens) easily, process the data, and return back into it.\n"
  },
  {
    "path": "Gemfile",
    "content": "source 'https://rubygems.org'\n\ngem 'danger'"
  },
  {
    "path": "LICENSE.md",
    "content": "**The MIT License**\n**Copyright © 2015 Shai Mishali, Krunoslav Zaher**\n**All rights reserved.**\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "format:\n\tmise x swiftformat -- swiftformat .\n"
  },
  {
    "path": "Package.swift",
    "content": "// swift-tools-version:5.5\n\nimport Foundation\nimport PackageDescription\n\nfunc isTargetingDarwin() -> Bool {\n    // Check if building for Android or other non-Darwin platforms\n    if (ProcessInfo.processInfo.environment[\"ANDROID_DATA\"] != nil) ||\n        (ProcessInfo.processInfo.environment[\"ANDROID_ROOT\"] != nil)\n    {\n        return false\n    }\n\n    #if canImport(Darwin)\n    return true\n    #else\n    return false\n    #endif\n}\n\nlet buildTests = false\nlet targetsDarwin = isTargetingDarwin()\n\nextension Product {\n    static func allTests() -> [Product] {\n        if buildTests {\n            [.executable(name: \"AllTestz\", targets: [\"AllTestz\"])]\n        } else {\n            []\n        }\n    }\n\n    static func rxCocoaProducts() -> [Product] {\n        if targetsDarwin {\n            [\n                .library(name: \"RxCocoa\", targets: [\"RxCocoa\"]),\n                .library(name: \"RxCocoa-Dynamic\", type: .dynamic, targets: [\"RxCocoa\"])\n            ]\n        } else {\n            []\n        }\n    }\n}\n\nextension Target {\n    static func rxTarget(name: String, dependencies: [Target.Dependency]) -> Target {\n        .target(\n            name: name,\n            dependencies: dependencies,\n            resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n        )\n    }\n}\n\nextension Target {\n    static func rxCocoa() -> [Target] {\n        if !targetsDarwin {\n            []\n        } else {\n            [\n                .target(\n                    name: \"RxCocoa\",\n                    dependencies: [\n                        \"RxSwift\",\n                        \"RxRelay\",\n                        .target(name: \"RxCocoaRuntime\", condition: .when(platforms: [.iOS, .macOS, .tvOS, .watchOS]))\n                    ],\n                    resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n                )\n            ]\n        }\n    }\n\n    static func rxCocoaRuntime() -> [Target] {\n        if !targetsDarwin {\n            []\n        } else {\n            [\n                .target(\n                    name: \"RxCocoaRuntime\",\n                    dependencies: [\"RxSwift\"],\n                    resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n                )\n            ]\n        }\n    }\n\n    static func allTests() -> [Target] {\n        if buildTests {\n            [.target(name: \"AllTestz\", dependencies: [\"RxSwift\", \"RxCocoa\", \"RxBlocking\", \"RxTest\"])]\n        } else {\n            []\n        }\n    }\n}\n\nlet package = Package(\n    name: \"RxSwift\",\n    platforms: [.iOS(.v9), .macOS(.v10_10), .watchOS(.v3), .tvOS(.v9)],\n    products: ([\n        [\n            .library(name: \"RxSwift\", targets: [\"RxSwift\"]),\n            .library(name: \"RxRelay\", targets: [\"RxRelay\"]),\n            .library(name: \"RxBlocking\", targets: [\"RxBlocking\"]),\n            .library(name: \"RxTest\", targets: [\"RxTest\"]),\n            .library(name: \"RxSwift-Dynamic\", type: .dynamic, targets: [\"RxSwift\"]),\n            .library(name: \"RxRelay-Dynamic\", type: .dynamic, targets: [\"RxRelay\"]),\n            .library(name: \"RxBlocking-Dynamic\", type: .dynamic, targets: [\"RxBlocking\"]),\n            .library(name: \"RxTest-Dynamic\", type: .dynamic, targets: [\"RxTest\"])\n        ],\n        Product.rxCocoaProducts(),\n        Product.allTests()\n    ] as [[Product]]).flatMap(\\.self),\n    targets: ([\n        [\n            .rxTarget(name: \"RxSwift\", dependencies: [])\n        ],\n        Target.rxCocoa(),\n        Target.rxCocoaRuntime(),\n        [\n            .rxTarget(name: \"RxRelay\", dependencies: [\"RxSwift\"]),\n            .target(name: \"RxBlocking\", dependencies: [\"RxSwift\"]),\n            .target(name: \"RxTest\", dependencies: [\"RxSwift\"])\n        ],\n        Target.allTests()\n    ] as [[Target]]).flatMap(\\.self),\n    swiftLanguageVersions: [.v5]\n)\n"
  },
  {
    "path": "Package@swift-5.9.swift",
    "content": "// swift-tools-version:5.9\n\nimport Foundation\nimport PackageDescription\n\nfunc isTargetingDarwin() -> Bool {\n    // Check if building for Android or other non-Darwin platforms\n    if (ProcessInfo.processInfo.environment[\"ANDROID_DATA\"] != nil) ||\n        (ProcessInfo.processInfo.environment[\"ANDROID_ROOT\"] != nil)\n    {\n        return false\n    }\n\n    #if canImport(Darwin)\n    return true\n    #else\n    return false\n    #endif\n}\n\nlet buildTests = false\nlet targetsDarwin = isTargetingDarwin()\n\nextension Product {\n    static func allTests() -> [Product] {\n        if buildTests {\n            [.executable(name: \"AllTestz\", targets: [\"AllTestz\"])]\n        } else {\n            []\n        }\n    }\n\n    static func rxCocoaProducts() -> [Product] {\n        if targetsDarwin {\n            [\n                .library(name: \"RxCocoa\", targets: [\"RxCocoa\"]),\n                .library(name: \"RxCocoa-Dynamic\", type: .dynamic, targets: [\"RxCocoa\"])\n            ]\n        } else {\n            []\n        }\n    }\n}\n\nextension Target {\n    static func rxTarget(name: String, dependencies: [Target.Dependency]) -> Target {\n        .target(\n            name: name,\n            dependencies: dependencies,\n            resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n        )\n    }\n}\n\nextension Target {\n    static func rxCocoa() -> [Target] {\n        if !targetsDarwin {\n            []\n        } else {\n            [\n                .target(\n                    name: \"RxCocoa\",\n                    dependencies: [\n                        \"RxSwift\",\n                        \"RxRelay\",\n                        .target(name: \"RxCocoaRuntime\", condition: .when(platforms: [.iOS, .macCatalyst, .macOS, .tvOS, .watchOS, .visionOS]))\n                    ],\n                    resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n                )\n            ]\n        }\n    }\n\n    static func rxCocoaRuntime() -> [Target] {\n        if !targetsDarwin {\n            []\n        } else {\n            [\n                .target(\n                    name: \"RxCocoaRuntime\",\n                    dependencies: [\"RxSwift\"],\n                    resources: [.copy(\"PrivacyInfo.xcprivacy\")]\n                )\n            ]\n        }\n    }\n\n    static func allTests() -> [Target] {\n        if buildTests {\n            [.target(name: \"AllTestz\", dependencies: [\"RxSwift\", \"RxCocoa\", \"RxBlocking\", \"RxTest\"])]\n        } else {\n            []\n        }\n    }\n}\n\nlet package = Package(\n    name: \"RxSwift\",\n    platforms: [.iOS(.v12), .macOS(.v10_13), .watchOS(.v4), .tvOS(.v12), .visionOS(.v1)],\n    products: ([\n        [\n            .library(name: \"RxSwift\", targets: [\"RxSwift\"]),\n            .library(name: \"RxRelay\", targets: [\"RxRelay\"]),\n            .library(name: \"RxBlocking\", targets: [\"RxBlocking\"]),\n            .library(name: \"RxTest\", targets: [\"RxTest\"]),\n            .library(name: \"RxSwift-Dynamic\", type: .dynamic, targets: [\"RxSwift\"]),\n            .library(name: \"RxRelay-Dynamic\", type: .dynamic, targets: [\"RxRelay\"]),\n            .library(name: \"RxBlocking-Dynamic\", type: .dynamic, targets: [\"RxBlocking\"]),\n            .library(name: \"RxTest-Dynamic\", type: .dynamic, targets: [\"RxTest\"])\n        ],\n        Product.rxCocoaProducts(),\n        Product.allTests()\n    ] as [[Product]]).flatMap { $0 },\n    targets: ([\n        [\n            .rxTarget(name: \"RxSwift\", dependencies: [])\n        ],\n        Target.rxCocoa(),\n        Target.rxCocoaRuntime(),\n        [\n            .rxTarget(name: \"RxRelay\", dependencies: [\"RxSwift\"]),\n            .target(name: \"RxBlocking\", dependencies: [\"RxSwift\"]),\n            .target(name: \"RxTest\", dependencies: [\"RxSwift\"])\n        ],\n        Target.allTests()\n    ] as [[Target]]).flatMap { $0 },\n    swiftLanguageVersions: [.v5]\n)\n"
  },
  {
    "path": "Platform/AtomicInt.swift",
    "content": "//\n//  AtomicInt.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 10/28/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreFoundation\n\n// This CoreFoundation import can be dropped when this issue is resolved:\n// https://github.com/swiftlang/swift-corelibs-foundation/pull/5122\nimport Foundation\n\nfinal class AtomicInt: NSLock, @unchecked Sendable {\n    fileprivate var value: Int32\n    init(_ value: Int32 = 0) {\n        self.value = value\n    }\n}\n\n@discardableResult\n@inline(__always)\nfunc add(_ this: AtomicInt, _ value: Int32) -> Int32 {\n    this.lock()\n    let oldValue = this.value\n    this.value += value\n    this.unlock()\n    return oldValue\n}\n\n@discardableResult\n@inline(__always)\nfunc sub(_ this: AtomicInt, _ value: Int32) -> Int32 {\n    this.lock()\n    let oldValue = this.value\n    this.value -= value\n    this.unlock()\n    return oldValue\n}\n\n@discardableResult\n@inline(__always)\nfunc fetchOr(_ this: AtomicInt, _ mask: Int32) -> Int32 {\n    this.lock()\n    let oldValue = this.value\n    this.value |= mask\n    this.unlock()\n    return oldValue\n}\n\n@inline(__always)\nfunc load(_ this: AtomicInt) -> Int32 {\n    this.lock()\n    let oldValue = this.value\n    this.unlock()\n    return oldValue\n}\n\n@discardableResult\n@inline(__always)\nfunc increment(_ this: AtomicInt) -> Int32 {\n    add(this, 1)\n}\n\n@discardableResult\n@inline(__always)\nfunc decrement(_ this: AtomicInt) -> Int32 {\n    sub(this, 1)\n}\n\n@inline(__always)\nfunc isFlagSet(_ this: AtomicInt, _ mask: Int32) -> Bool {\n    (load(this) & mask) != 0\n}\n"
  },
  {
    "path": "Platform/DataStructures/Bag.swift",
    "content": "//\n//  Bag.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 2/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Swift\n\nlet arrayDictionaryMaxSize = 30\n\nstruct BagKey {\n    /**\n     Unique identifier for object added to `Bag`.\n\n     It's underlying type is UInt64. If we assume there in an idealized CPU that works at 4GHz,\n      it would take ~150 years of continuous running time for it to overflow.\n     */\n    fileprivate let rawValue: UInt64\n}\n\n/**\n Data structure that represents a bag of elements typed `T`.\n\n Single element can be stored multiple times.\n\n Time and space complexity of insertion and deletion is O(n).\n\n It is suitable for storing small number of elements.\n */\nstruct Bag<T>: CustomDebugStringConvertible {\n    /// Type of identifier for inserted elements.\n    typealias KeyType = BagKey\n\n    typealias Entry = (key: BagKey, value: T)\n\n    private var _nextKey: BagKey = .init(rawValue: 0)\n\n    // data\n\n    // first fill inline variables\n    var _key0: BagKey?\n    var _value0: T?\n\n    // then fill \"array dictionary\"\n    var _pairs = ContiguousArray<Entry>()\n\n    // last is sparse dictionary\n    var _dictionary: [BagKey: T]?\n\n    var _onlyFastPath = true\n\n    /// Creates new empty `Bag`.\n    init() {}\n\n    /**\n     Inserts `value` into bag.\n\n     - parameter element: Element to insert.\n     - returns: Key that can be used to remove element from bag.\n     */\n    mutating func insert(_ element: T) -> BagKey {\n        let key = _nextKey\n\n        _nextKey = BagKey(rawValue: _nextKey.rawValue &+ 1)\n\n        if _key0 == nil {\n            _key0 = key\n            _value0 = element\n            return key\n        }\n\n        _onlyFastPath = false\n\n        if _dictionary != nil {\n            _dictionary![key] = element\n            return key\n        }\n\n        if _pairs.count < arrayDictionaryMaxSize {\n            _pairs.append((key: key, value: element))\n            return key\n        }\n\n        _dictionary = [key: element]\n\n        return key\n    }\n\n    /// - returns: Number of elements in bag.\n    var count: Int {\n        let dictionaryCount: Int = _dictionary?.count ?? 0\n        return (_value0 != nil ? 1 : 0) + _pairs.count + dictionaryCount\n    }\n\n    /// Removes all elements from bag and clears capacity.\n    mutating func removeAll() {\n        _key0 = nil\n        _value0 = nil\n\n        _pairs.removeAll(keepingCapacity: false)\n        _dictionary?.removeAll(keepingCapacity: false)\n    }\n\n    /**\n     Removes element with a specific `key` from bag.\n\n     - parameter key: Key that identifies element to remove from bag.\n     - returns: Element that bag contained, or nil in case element was already removed.\n     */\n    mutating func removeKey(_ key: BagKey) -> T? {\n        if _key0 == key {\n            _key0 = nil\n            let value = _value0!\n            _value0 = nil\n            return value\n        }\n\n        if let existingObject = _dictionary?.removeValue(forKey: key) {\n            return existingObject\n        }\n\n        for i in 0 ..< _pairs.count where _pairs[i].key == key {\n            let value = _pairs[i].value\n            _pairs.remove(at: i)\n            return value\n        }\n\n        return nil\n    }\n}\n\nextension Bag {\n    /// A textual representation of `self`, suitable for debugging.\n    var debugDescription: String {\n        \"\\(count) elements in Bag\"\n    }\n}\n\nextension Bag {\n    /// Enumerates elements inside the bag.\n    ///\n    /// - parameter action: Enumeration closure.\n    func forEach(_ action: (T) -> Void) {\n        if _onlyFastPath {\n            if let value0 = _value0 {\n                action(value0)\n            }\n            return\n        }\n\n        let value0 = _value0\n        let dictionary = _dictionary\n\n        if let value0 {\n            action(value0)\n        }\n\n        for i in 0 ..< _pairs.count {\n            action(_pairs[i].value)\n        }\n\n        if dictionary?.count ?? 0 > 0 {\n            for element in dictionary!.values {\n                action(element)\n            }\n        }\n    }\n}\n\nextension BagKey: Hashable {\n    func hash(into hasher: inout Hasher) {\n        hasher.combine(rawValue)\n    }\n}\n\nfunc == (lhs: BagKey, rhs: BagKey) -> Bool {\n    lhs.rawValue == rhs.rawValue\n}\n"
  },
  {
    "path": "Platform/DataStructures/InfiniteSequence.swift",
    "content": "//\n//  InfiniteSequence.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 6/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Sequence that repeats `repeatedValue` infinite number of times.\nstruct InfiniteSequence<Element>: Sequence {\n    typealias Iterator = AnyIterator<Element>\n\n    private let repeatedValue: Element\n\n    init(repeatedValue: Element) {\n        self.repeatedValue = repeatedValue\n    }\n\n    func makeIterator() -> Iterator {\n        let repeatedValue = repeatedValue\n        return AnyIterator { repeatedValue }\n    }\n}\n"
  },
  {
    "path": "Platform/DataStructures/PriorityQueue.swift",
    "content": "//\n//  PriorityQueue.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct PriorityQueue<Element> {\n    private let hasHigherPriority: (Element, Element) -> Bool\n    private let isEqual: (Element, Element) -> Bool\n\n    private var elements = [Element]()\n\n    init(hasHigherPriority: @escaping (Element, Element) -> Bool, isEqual: @escaping (Element, Element) -> Bool) {\n        self.hasHigherPriority = hasHigherPriority\n        self.isEqual = isEqual\n    }\n\n    mutating func enqueue(_ element: Element) {\n        elements.append(element)\n        bubbleToHigherPriority(elements.count - 1)\n    }\n\n    func peek() -> Element? {\n        elements.first\n    }\n\n    var isEmpty: Bool {\n        elements.count == 0\n    }\n\n    mutating func dequeue() -> Element? {\n        guard let front = peek() else {\n            return nil\n        }\n\n        removeAt(0)\n\n        return front\n    }\n\n    mutating func remove(_ element: Element) {\n        for i in 0 ..< elements.count {\n            if isEqual(elements[i], element) {\n                removeAt(i)\n                return\n            }\n        }\n    }\n\n    private mutating func removeAt(_ index: Int) {\n        let removingLast = index == elements.count - 1\n        if !removingLast {\n            elements.swapAt(index, elements.count - 1)\n        }\n\n        _ = elements.popLast()\n\n        if !removingLast {\n            bubbleToHigherPriority(index)\n            bubbleToLowerPriority(index)\n        }\n    }\n\n    private mutating func bubbleToHigherPriority(_ initialUnbalancedIndex: Int) {\n        precondition(initialUnbalancedIndex >= 0)\n        precondition(initialUnbalancedIndex < elements.count)\n\n        var unbalancedIndex = initialUnbalancedIndex\n\n        while unbalancedIndex > 0 {\n            let parentIndex = (unbalancedIndex - 1) / 2\n            guard hasHigherPriority(elements[unbalancedIndex], elements[parentIndex]) else { break }\n            elements.swapAt(unbalancedIndex, parentIndex)\n            unbalancedIndex = parentIndex\n        }\n    }\n\n    private mutating func bubbleToLowerPriority(_ initialUnbalancedIndex: Int) {\n        precondition(initialUnbalancedIndex >= 0)\n        precondition(initialUnbalancedIndex < elements.count)\n\n        var unbalancedIndex = initialUnbalancedIndex\n        while true {\n            let leftChildIndex = unbalancedIndex * 2 + 1\n            let rightChildIndex = unbalancedIndex * 2 + 2\n\n            var highestPriorityIndex = unbalancedIndex\n\n            if leftChildIndex < elements.count, hasHigherPriority(elements[leftChildIndex], elements[highestPriorityIndex]) {\n                highestPriorityIndex = leftChildIndex\n            }\n\n            if rightChildIndex < elements.count, hasHigherPriority(elements[rightChildIndex], elements[highestPriorityIndex]) {\n                highestPriorityIndex = rightChildIndex\n            }\n\n            guard highestPriorityIndex != unbalancedIndex else { break }\n            elements.swapAt(highestPriorityIndex, unbalancedIndex)\n\n            unbalancedIndex = highestPriorityIndex\n        }\n    }\n}\n\nextension PriorityQueue: CustomDebugStringConvertible {\n    var debugDescription: String {\n        elements.debugDescription\n    }\n}\n"
  },
  {
    "path": "Platform/DataStructures/Queue.swift",
    "content": "//\n//  Queue.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Data structure that represents queue.\n\n Complexity of `enqueue`, `dequeue` is O(1) when number of operations is\n averaged over N operations.\n\n Complexity of `peek` is O(1).\n */\nstruct Queue<T>: Sequence {\n    /// Type of generator.\n    typealias Generator = AnyIterator<T>\n\n    private let resizeFactor = 2\n\n    private var storage: ContiguousArray<T?>\n    private var innerCount = 0\n    private var pushNextIndex = 0\n    private let initialCapacity: Int\n\n    /**\n     Creates new queue.\n\n     - parameter capacity: Capacity of newly created queue.\n     */\n    init(capacity: Int) {\n        initialCapacity = capacity\n\n        storage = ContiguousArray<T?>(repeating: nil, count: capacity)\n    }\n\n    private var dequeueIndex: Int {\n        let index = pushNextIndex - count\n        return index < 0 ? index + storage.count : index\n    }\n\n    /// - returns: Is queue empty.\n    var isEmpty: Bool { count == 0 }\n\n    /// - returns: Number of elements inside queue.\n    var count: Int { innerCount }\n\n    /// - returns: Element in front of a list of elements to `dequeue`.\n    func peek() -> T {\n        precondition(count > 0)\n\n        return storage[dequeueIndex]!\n    }\n\n    private mutating func resizeTo(_ size: Int) {\n        var newStorage = ContiguousArray<T?>(repeating: nil, count: size)\n\n        let count = count\n\n        let dequeueIndex = dequeueIndex\n        let spaceToEndOfQueue = storage.count - dequeueIndex\n\n        // first batch is from dequeue index to end of array\n        let countElementsInFirstBatch = Swift.min(count, spaceToEndOfQueue)\n        // second batch is wrapped from start of array to end of queue\n        let numberOfElementsInSecondBatch = count - countElementsInFirstBatch\n\n        newStorage[0 ..< countElementsInFirstBatch] = storage[dequeueIndex ..< (dequeueIndex + countElementsInFirstBatch)]\n        newStorage[countElementsInFirstBatch ..< (countElementsInFirstBatch + numberOfElementsInSecondBatch)] = storage[0 ..< numberOfElementsInSecondBatch]\n\n        innerCount = count\n        pushNextIndex = count\n        storage = newStorage\n    }\n\n    /// Enqueues `element`.\n    ///\n    /// - parameter element: Element to enqueue.\n    mutating func enqueue(_ element: T) {\n        if count == storage.count {\n            resizeTo(Swift.max(storage.count, 1) * resizeFactor)\n        }\n\n        storage[pushNextIndex] = element\n        pushNextIndex += 1\n        innerCount += 1\n\n        if pushNextIndex >= storage.count {\n            pushNextIndex -= storage.count\n        }\n    }\n\n    private mutating func dequeueElementOnly() -> T {\n        precondition(count > 0)\n\n        let index = dequeueIndex\n\n        defer {\n            storage[index] = nil\n            innerCount -= 1\n        }\n\n        return storage[index]!\n    }\n\n    /// Dequeues element or throws an exception in case queue is empty.\n    ///\n    /// - returns: Dequeued element.\n    mutating func dequeue() -> T? {\n        if count == 0 {\n            return nil\n        }\n\n        defer {\n            let downsizeLimit = storage.count / (resizeFactor * resizeFactor)\n            if count < downsizeLimit, downsizeLimit >= initialCapacity {\n                resizeTo(storage.count / resizeFactor)\n            }\n        }\n\n        return dequeueElementOnly()\n    }\n\n    /// - returns: Generator of contained elements.\n    func makeIterator() -> AnyIterator<T> {\n        var i = dequeueIndex\n        var innerCount = count\n\n        return AnyIterator {\n            if innerCount == 0 {\n                return nil\n            }\n\n            defer {\n                innerCount -= 1\n                i += 1\n            }\n\n            if i >= storage.count {\n                i -= storage.count\n            }\n\n            return storage[i]\n        }\n    }\n}\n"
  },
  {
    "path": "Platform/DispatchQueue+Extensions.swift",
    "content": "//\n//  DispatchQueue+Extensions.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 10/22/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\n\nextension DispatchQueue {\n    private static var token: DispatchSpecificKey<Void> = {\n        let key = DispatchSpecificKey<Void>()\n        DispatchQueue.main.setSpecific(key: key, value: ())\n        return key\n    }()\n\n    static var isMain: Bool {\n        DispatchQueue.getSpecific(key: token) != nil\n    }\n}\n"
  },
  {
    "path": "Platform/Platform.Darwin.swift",
    "content": "//\n//  Platform.Darwin.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if canImport(Darwin)\nimport Darwin\nimport Foundation\n\nextension Thread {\n    static func setThreadLocalStorageValue(_ value: (some AnyObject)?, forKey key: NSCopying) {\n        let currentThread = Thread.current\n        let threadDictionary = currentThread.threadDictionary\n\n        if let newValue = value {\n            threadDictionary[key] = newValue\n        } else {\n            threadDictionary[key] = nil\n        }\n    }\n\n    static func getThreadLocalStorageValueForKey<T>(_ key: NSCopying) -> T? {\n        let currentThread = Thread.current\n        let threadDictionary = currentThread.threadDictionary\n\n        return threadDictionary[key] as? T\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Platform/Platform.Linux.swift",
    "content": "//\n//  Platform.Linux.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !canImport(Darwin)\n\nimport Foundation\n\nextension Thread {\n    static func setThreadLocalStorageValue(_ value: (some AnyObject)?, forKey key: String) {\n        if let newValue = value {\n            Thread.current.threadDictionary[key] = newValue\n        } else {\n            Thread.current.threadDictionary[key] = nil\n        }\n    }\n\n    static func getThreadLocalStorageValueForKey<T: AnyObject>(_ key: String) -> T? {\n        let currentThread = Thread.current\n        let threadDictionary = currentThread.threadDictionary\n\n        return threadDictionary[key] as? T\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Platform/RecursiveLock.swift",
    "content": "//\n//  RecursiveLock.swift\n//  Platform\n//\n//  Created by Krunoslav Zaher on 12/18/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n#if TRACE_RESOURCES\nclass RecursiveLock: NSRecursiveLock, @unchecked Sendable {\n    override init() {\n        _ = Resources.incrementTotal()\n        super.init()\n    }\n\n    override func lock() {\n        super.lock()\n        _ = Resources.incrementTotal()\n    }\n\n    override func unlock() {\n        super.unlock()\n        _ = Resources.decrementTotal()\n    }\n\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n}\n#else\ntypealias RecursiveLock = NSRecursiveLock\n#endif\n"
  },
  {
    "path": "Preprocessor/Preprocessor/main.swift",
    "content": "//\n//  main.swift\n//  Preprocessor\n//\n//  Created by Krunoslav Zaher on 4/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nif CommandLine.argc != 3 {\n    print(\"./Preprocessor <source-files-root> <derived-data> \")\n    exit(-1)\n}\n\nlet sourceFilesRoot = CommandLine.arguments[1]\nlet derivedData = CommandLine.arguments[2]\n\nlet fileManager = FileManager()\n\nfunc escape(value: String) -> String {\n    let escapedString = value.replacingOccurrences(of: \"\\n\", with: \"\\\\n\")\n    let escapedString1 = escapedString.replacingOccurrences(of: \"\\r\", with: \"\\\\r\")\n    let escapedString2 = escapedString1.replacingOccurrences(of: \"\\\"\", with: \"\\\\\\\"\")\n\n    return \"\\\"\\(escapedString2)\\\"\"\n}\n\nfunc processFile(path: String, outputPath: String) -> String {\n    let url = URL(fileURLWithPath: path)\n    let rawContent = try! Data(contentsOf: url)\n    let content = String(data: rawContent, encoding: String.Encoding.utf8)\n\n    guard let components = content?.components(separatedBy: \"<%\") else { return \"\" }\n\n    var functionContentComponents: [String] = []\n    functionContentComponents.append(\"var components: [String] = [\\\"// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project \\\\n\\\"]\\n\")\n    functionContentComponents.append(\"components.append(\\(escape(value: components[0])))\\n\")\n\n    for codePlusSuffix in components[1 ..< components.count] {\n        let codePlusSuffixSeparated = codePlusSuffix.components(separatedBy: \"%>\")\n        if codePlusSuffixSeparated.count != 2 {\n            fatalError(\"Error in \\(path) near \\(codePlusSuffix)\")\n        }\n\n        let code = codePlusSuffixSeparated[0]\n        let suffix = codePlusSuffixSeparated[1]\n\n        if code.hasPrefix(\"=\") {\n            functionContentComponents.append(\"components.append(String(\\(String(code[code.index(after: code.startIndex) ..< code.endIndex]))))\\n\")\n        } else {\n            functionContentComponents.append(\"\\(code)\\n\")\n        }\n\n        functionContentComponents.append(\"components.append(\\(escape(value: suffix)));\\n\")\n    }\n\n    functionContentComponents.append(\"try! components.joined(separator:\\\"\\\").write(toFile:\\\"\\(outputPath)\\\", atomically: false, encoding: String.Encoding.utf8)\")\n\n    return functionContentComponents.joined(separator: \"\")\n}\n\nfunc runCommand(path: String) {\n    _ = ProcessInfo().processIdentifier\n\n    let process = Process()\n    process.launchPath = \"/bin/bash\"\n    process.arguments = [\"-c\", \"xcrun swift \\\"\\(path)\\\"\"]\n\n    process.launch()\n\n    process.waitUntilExit()\n\n    if process.terminationReason != .exit {\n        exit(-1)\n    }\n}\n\nlet files = try fileManager.subpathsOfDirectory(atPath: sourceFilesRoot)\n\nvar generateAllFiles = [\"// Generated code\\n\", \"import Foundation\\n\"]\n\nfor file in files {\n    if ((file as NSString).pathExtension) != \"tt\" {\n        continue\n    }\n\n    print(file)\n\n    let path = (sourceFilesRoot as NSString).appendingPathComponent(file as String)\n    let endIndex = path.index(before: path.index(before: path.index(before: path.endIndex)))\n    let outputPath = String(path[path.startIndex ..< endIndex]) + \".swift\"\n\n    generateAllFiles.append(\"_ = { () -> Void in\\n\\(processFile(path: path, outputPath: outputPath))\\n}()\\n\")\n}\n\nlet script = generateAllFiles.joined(separator: \"\")\nlet scriptPath = (derivedData as NSString).appendingPathComponent(\"_preprocessor.sh\")\n\ndo {\n    try script.write(toFile: scriptPath, atomically: true, encoding: String.Encoding.utf8)\n} catch _ {}\n\nrunCommand(path: scriptPath)\n"
  },
  {
    "path": "Preprocessor/Preprocessor.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tC811087B1AF5114D001C13E4 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = C811087A1AF5114D001C13E4 /* main.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tC81108751AF5114D001C13E4 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = /usr/share/man/man1/;\n\t\t\tdstSubfolderSpec = 0;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 1;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\tC81108771AF5114D001C13E4 /* Preprocessor */ = {isa = PBXFileReference; explicitFileType = \"compiled.mach-o.executable\"; includeInIndex = 0; path = Preprocessor; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC811087A1AF5114D001C13E4 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = main.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tC81108741AF5114D001C13E4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\tC811086E1AF5114D001C13E4 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC81108791AF5114D001C13E4 /* Preprocessor */,\n\t\t\t\tC81108781AF5114D001C13E4 /* Products */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC81108781AF5114D001C13E4 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC81108771AF5114D001C13E4 /* Preprocessor */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC81108791AF5114D001C13E4 /* Preprocessor */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC811087A1AF5114D001C13E4 /* main.swift */,\n\t\t\t);\n\t\t\tpath = Preprocessor;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tC81108761AF5114D001C13E4 /* Preprocessor */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C811087E1AF5114D001C13E4 /* Build configuration list for PBXNativeTarget \"Preprocessor\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC81108731AF5114D001C13E4 /* Sources */,\n\t\t\t\tC81108741AF5114D001C13E4 /* Frameworks */,\n\t\t\t\tC81108751AF5114D001C13E4 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Preprocessor;\n\t\t\tproductName = Preprocessor;\n\t\t\tproductReference = C81108771AF5114D001C13E4 /* Preprocessor */;\n\t\t\tproductType = \"com.apple.product-type.tool\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC811086F1AF5114D001C13E4 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0700;\n\t\t\t\tLastUpgradeCheck = 1250;\n\t\t\t\tORGANIZATIONNAME = \"Krunoslav Zaher\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tC81108761AF5114D001C13E4 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C81108721AF5114D001C13E4 /* Build configuration list for PBXProject \"Preprocessor\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C811086E1AF5114D001C13E4;\n\t\t\tproductRefGroup = C81108781AF5114D001C13E4 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC81108761AF5114D001C13E4 /* Preprocessor */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tC81108731AF5114D001C13E4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC811087B1AF5114D001C13E4 /* main.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\tC811087C1AF5114D001C13E4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC811087D1AF5114D001C13E4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC811087F1AF5114D001C13E4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC81108801AF5114D001C13E4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tC81108721AF5114D001C13E4 /* Build configuration list for PBXProject \"Preprocessor\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC811087C1AF5114D001C13E4 /* Debug */,\n\t\t\t\tC811087D1AF5114D001C13E4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC811087E1AF5114D001C13E4 /* Build configuration list for PBXNativeTarget \"Preprocessor\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC811087F1AF5114D001C13E4 /* Debug */,\n\t\t\t\tC81108801AF5114D001C13E4 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = C811086F1AF5114D001C13E4 /* Project object */;\n}\n"
  },
  {
    "path": "Preprocessor/Preprocessor.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Preprocessor.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Preprocessor/Preprocessor.xcodeproj/xcshareddata/xcschemes/Preprocessor.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C81108761AF5114D001C13E4\"\n               BuildableName = \"Preprocessor\"\n               BlueprintName = \"Preprocessor\"\n               ReferencedContainer = \"container:Preprocessor.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C81108761AF5114D001C13E4\"\n            BuildableName = \"Preprocessor\"\n            BlueprintName = \"Preprocessor\"\n            ReferencedContainer = \"container:Preprocessor.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n      <CommandLineArguments>\n         <CommandLineArgument\n            argument = \"$(SRCROOT)/.. $(BUILT_PRODUCTS_DIR)\"\n            isEnabled = \"YES\">\n         </CommandLineArgument>\n      </CommandLineArguments>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C81108761AF5114D001C13E4\"\n            BuildableName = \"Preprocessor\"\n            BlueprintName = \"Preprocessor\"\n            ReferencedContainer = \"container:Preprocessor.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Preprocessor/README.md",
    "content": "## RxSwift KISS code generator.\n\nRxSwift code is partially machine generated. \nIt converts *.tt files into generated *.swift files.\n\nThere are multiple reasons why that is the case.\n\n* Performance\n* Consistency\n* Removes burden from developers (me :)\n* It's fun\n\nTo see how it in action, take a look at \n\nCombineLatest+arity.tt\nCombineLatest+arity.swift\n\n```\n//\n//  CombineLatest.tt.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/22/15.\n//  Copyright (c) 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n<% for i in 2 ... 10 { %>\n\n// <%= i %>\n\npublic func combineLatestOrDie<<%= \", \".join(map(1...i) { \"E\\($0)\" }) %>, R>\n    (<%= \", \".join(map(1...i) { \"source\\($0): Observable<E\\($0)>\" }) %>, resultSelector: (<%= \", \".join(map(1...i) { \"E\\($0)\" }) %>) -> Result<R>)\n        -> Observable<R> {\n    return CombineLatest<%= i %>(\n        <%= \", \".join(map(1...i) { \"source\\($0): source\\($0)\" }) %>,\n        resultSelector: resultSelector\n    )\n}\n\npublic func combineLatest<<%= \", \".join(map(1...i) { \"E\\($0)\" }) %>, R>\n    (<%= \", \".join(map(1...i) { \"source\\($0): Observable<E\\($0)>\" }) %>, resultSelector: (<%= \", \".join(map(1...i) { \"E\\($0)\" }) %>) -> R)\n        -> Observable<R> {\n    return CombineLatest<%= i %>(\n        <%= \", \".join(map(1...i) { \"source\\($0): source\\($0)\" }) %>,\n        resultSelector: { success(resultSelector(<%= \", \".join(map(0..<i) { \"$\\($0)\" }) %>)) }\n    )\n}\n```\n\nto \n\n```\n// This file is autogenerated.\n// Take a look at `Preprocessor` target in RxSwift project \n//\n//  CombineLatest.tt.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/22/15.\n//  Copyright (c) 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n\n\n// 2\n\npublic func combineLatestOrDie<E1, E2, R>\n    (source1: Observable<E1>, source2: Observable<E2>, resultSelector: (E1, E2) -> Result<R>)\n        -> Observable<R> {\n    return CombineLatest2(\n        source1: source1, source2: source2,\n        resultSelector: resultSelector\n    )\n}\n\npublic func combineLatest<E1, E2, R>\n    (source1: Observable<E1>, source2: Observable<E2>, resultSelector: (E1, E2) -> R)\n        -> Observable<R> {\n    return CombineLatest2(\n        source1: source1, source2: source2,\n        resultSelector: { success(resultSelector($0, $1)) }\n    )\n}\n\n```\n\n\nIt's pretty generic, I'm thinking of extracting it as a separate project.\n"
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n<img src=\"https://github.com/ReactiveX/RxSwift/blob/main/assets/RxSwift_Logo.png?raw=true\" width=\"35%\" alt=\"RxSwift Logo\" />\n<br />\n<a href=\"https://github.com/ReactiveX/RxSwift/actions/workflows/tests.yml\" target=\"_blank\"><img src=\"https://github.com/ReactiveX/RxSwift/actions/workflows/tests.yml/badge.svg\" alt=\"Build Status\" /></a>\n<img src=\"https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg\" alt=\"Supported Platforms: iOS, macOS, tvOS, watchOS & Linux\" />\n<br />\n<a href=\"https://github.com/Carthage/Carthage\" alt=\"RxSwift on Carthage\" title=\"RxSwift on Carthage\"><img src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" /></a>\n<a href=\"https://github.com/swiftlang/swift-package-manager\" alt=\"RxSwift on Swift Package Manager\" title=\"RxSwift on Swift Package Manager\"><img src=\"https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg\" /></a>\n</p>\n\nRx is a [generic abstraction of computation](https://youtu.be/looJcaeboBY) expressed through `Observable<Element>` interface, which lets you broadcast and subscribe to values and other events from an `Observable` stream.\n\nRxSwift is the Swift-specific implementation of the [Reactive Extensions](http://reactivex.io) standard.\n\n<p align=\"center\"><img src=\"https://github.com/ReactiveX/RxSwift/blob/main/assets/example.png?raw=true\" width=\"55%\" alt=\"RxSwift Observable Example of a price constantly changing and updating the app's UI\" /></p>\n\nWhile this version aims to stay true to the original spirit and naming conventions of Rx, this project also aims to provide a true Swift-first API for Rx APIs.\n\nCross platform documentation can be found on [ReactiveX.io](http://reactivex.io/).\n\nLike other Rx implementations, RxSwift's intention is to enable easy composition of asynchronous operations and streams of data in the form of `Observable` objects and a suite of methods to transform and compose these pieces of asynchronous work.\n\nKVO observation, async operations, UI Events and other streams of data are all unified under [abstraction of sequence](Documentation/GettingStarted.md#observables-aka-sequences). This is the reason why Rx is so simple, elegant and powerful.\n\n## I came here because I want to ...\n\n###### ... understand\n\n* [why use rx?](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Why.md)\n* [the basics, getting started with RxSwift](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md)\n* [traits](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md) - what are `Single`, `Completable`, `Maybe`, `Driver`, and `ControlProperty` ... and why do they exist?\n* [testing](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/UnitTests.md)\n* [tips and common errors](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Tips.md)\n* [debugging](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md#debugging)\n* [the math behind Rx](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/MathBehindRx.md)\n* [what are hot and cold observable sequences?](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/HotAndColdObservables.md)\n\n###### ... install\n\n* Integrate RxSwift/RxCocoa with my app. [Installation Guide](#installation)\n\n###### ... hack around\n\n* with the example app. [Running Example App](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/ExampleApp.md)\n* with operators in playgrounds. [Playgrounds](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Playgrounds.md)\n\n###### ... interact\n\n* All of this is great, but it would be nice to talk with other people using RxSwift and exchange experiences. <br />[Join Slack Channel](http://slack.rxswift.org)\n* Report a problem using the library. [Open an Issue With Bug Template](https://github.com/ReactiveX/RxSwift/blob/main/.github/ISSUE_TEMPLATE.md)\n* Request a new feature. [Open an Issue With Feature Request Template](Documentation/NewFeatureRequestTemplate.md)\n* Help out [Check out contribution guide](https://github.com/ReactiveX/RxSwift/blob/main/CONTRIBUTING.md)\n\n###### ... compare\n\n* [with Combine and ReactiveSwift](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/ComparisonWithOtherLibraries.md).\n\n###### ... understand the structure\n\nRxSwift is as compositional as the asynchronous work it drives. The core unit is RxSwift itself, while other dependencies can be added for UI Work, testing, and more.\n\nIt comprises five separate components depending on each other in the following way:\n\n```none\n┌──────────────┐    ┌──────────────┐\n│   RxCocoa    ├────▶   RxRelay    │\n└───────┬──────┘    └──────┬───────┘\n        │                  │\n┌───────▼──────────────────▼───────┐\n│             RxSwift              │\n└───────▲──────────────────▲───────┘\n        │                  │\n┌───────┴──────┐    ┌──────┴───────┐\n│    RxTest    │    │  RxBlocking  │\n└──────────────┘    └──────────────┘\n```\n\n* **RxSwift**: The core of RxSwift, providing the Rx standard as (mostly) defined by [ReactiveX](https://reactivex.io). It has no other dependencies.\n* **RxCocoa**: Provides Cocoa-specific capabilities for general iOS/macOS/watchOS & tvOS app development, such as Shared Sequences, Traits, and much more. It depends on both `RxSwift` and `RxRelay`.\n* **RxRelay**: Provides `PublishRelay`, `BehaviorRelay` and `ReplayRelay`, three [simple wrappers around Subjects](https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Subjects.md#relays). It depends on `RxSwift`.\n* **RxTest** and **RxBlocking**: Provides testing capabilities for Rx-based systems. It depends on `RxSwift`.\n\n## Usage\n\n<table>\n  <tr>\n    <th width=\"30%\">Here's an example</th>\n    <th width=\"30%\">In Action</th>\n  </tr>\n  <tr>\n    <td>Define search for GitHub repositories ...</td>\n    <th rowspan=\"9\"><img src=\"https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/GithubSearch.gif\"></th>\n  </tr>\n  <tr>\n    <td><div class=\"highlight highlight-source-swift\"><pre>\nlet searchResults = searchBar.rx.text.orEmpty\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .distinctUntilChanged()\n    .flatMapLatest { query -> Observable&lt;[Repository]&gt; in\n        if query.isEmpty {\n            return .just([])\n        }\n        return searchGitHub(query)\n            .catchAndReturn([])\n    }\n    .observe(on: MainScheduler.instance)</pre></div></td>\n  </tr>\n  <tr>\n    <td>... then bind the results to your tableview</td>\n  </tr>\n  <tr>\n    <td width=\"30%\"><div class=\"highlight highlight-source-swift\"><pre>\nsearchResults\n    .bind(to: tableView.rx.items(cellIdentifier: \"Cell\")) {\n        (index, repository: Repository, cell) in\n        cell.textLabel?.text = repository.name\n        cell.detailTextLabel?.text = repository.url\n    }\n    .disposed(by: disposeBag)</pre></div></td>\n  </tr>\n</table>\n\n## Installation\n\nRxSwift doesn't contain any external dependencies.\n\nThese are currently the supported installation options:\n\n### Manual\n\nOpen Rx.xcworkspace, choose `RxExample` and hit run. This method will build everything and run the sample app\n\n### XCFrameworks\n\nEach release starting with RxSwift 6 includes `*.xcframework` framework binaries.\n\nSimply drag the needed framework binaries to your **Frameworks, Libraries, and Embedded Content** section under your target's **General** tab.\n\n<img src=\"https://raw.githubusercontent.com/ReactiveX/RxSwift/main/assets/xcframeworks.png\" alt=\"XCFrameworks instructions\" width=\"65%\">\n\n> [!TIP]\n> RxSwift's xcframework(s) are signed with an Apple Developer account, and you can always verify the Team Name: Shai Mishali\n>\n> <img src=\"https://raw.githubusercontent.com/ReactiveX/RxSwift/main/assets/xcframeworks_signing.png\" alt=\"XCFrameworks Signing Team Name Validation\" width=\"65%\">\n\n### [Carthage](https://github.com/Carthage/Carthage)\n\nAdd this to `Cartfile`\n\n```\ngithub \"ReactiveX/RxSwift\" \"6.10.0\"\n```\n\n```bash\n$ carthage update\n```\n\n#### Carthage as a Static Library\n\nCarthage defaults to building RxSwift as a Dynamic Library.\n\nIf you wish to build RxSwift as a Static Library using Carthage you may use the script below to manually modify the framework type before building with Carthage:\n\n```bash\ncarthage update RxSwift --platform iOS --no-build\nsed -i -e 's/MACH_O_TYPE = mh_dylib/MACH_O_TYPE = staticlib/g' Carthage/Checkouts/RxSwift/Rx.xcodeproj/project.pbxproj\ncarthage build RxSwift --platform iOS\n```\n\n### [Swift Package Manager](https://github.com/swiftlang/swift-package-manager)\n\n> **Note**: There is a critical cross-dependency bug affecting many projects including RxSwift in Swift Package Manager. We've [filed a bug (SR-12303)](https://bugs.swift.org/browse/SR-12303) in early 2020 but have no answer yet. Your mileage may vary. A partial workaround can be found [here](https://github.com/ReactiveX/RxSwift/issues/2127#issuecomment-717830502).\n\nCreate a `Package.swift` file.\n\n```swift\n// swift-tools-version:5.0\n\nimport PackageDescription\n\nlet package = Package(\n  name: \"RxProject\",\n  dependencies: [\n    .package(url: \"https://github.com/ReactiveX/RxSwift.git\", .upToNextMajor(from: \"6.0.0\"))\n  ],\n  targets: [\n    .target(name: \"RxProject\", dependencies: [\"RxSwift\", .product(name: \"RxCocoa\", package: \"RxSwift\")]),\n  ]\n)\n```\n\n```bash\n$ swift build\n```\n\nTo build or test a module with RxTest dependency, set `TEST=1`.\n\n```bash\n$ TEST=1 swift test\n```\n\n### Manually using git submodules\n\n* Add RxSwift as a submodule\n\n```bash\n$ git submodule add git@github.com:ReactiveX/RxSwift.git\n```\n\n* Drag `Rx.xcodeproj` into Project Navigator\n* Go to `Project > Targets > Build Phases > Link Binary With Libraries`, click `+` and select `RxSwift`, `RxCocoa` and `RxRelay` targets\n\n## References\n\n* [http://reactivex.io/](http://reactivex.io/)\n* [Reactive Extensions GitHub (GitHub)](https://github.com/Reactive-Extensions)\n* [RxSwift RayWenderlich.com Book](https://store.raywenderlich.com/products/rxswift-reactive-programming-with-swift)\n* [RxSwift: Debunking the myth of hard (YouTube)](https://www.youtube.com/watch?v=GdvLP0ZAhhc)\n* [Boxue.io RxSwift Online Course](https://boxueio.com/series/rxswift-101) (Chinese 🇨🇳)\n* [Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)](https://youtu.be/looJcaeboBY)\n* [Reactive Programming Overview (Jafar Husain from Netflix)](https://youtu.be/-8Y1-lE6NSA)\n* [Subject/Observer is Dual to Iterator (paper)](http://csl.stanford.edu/~christos/pldi2010.fit/meijer.duality.pdf)\n* [Rx standard sequence operators visualized (visualization tool)](http://rxmarbles.com/)\n* [Haskell](https://www.haskell.org/)\n"
  },
  {
    "path": "Rx.playground/Pages/Combining_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Combination Operators\n Operators that combine multiple source `Observable`s into a single `Observable`.\n ## `startWith`\n Emits the specified sequence of elements before beginning to emit the elements from the source `Observable`. [More info](http://reactivex.io/documentation/operators/startwith.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/startwith.png)\n */\nexample(\"startWith\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐶\", \"🐱\", \"🐭\", \"🐹\")\n        .startWith(\"1️⃣\")\n        .startWith(\"2️⃣\")\n        .startWith(\"3️⃣\", \"🅰️\", \"🅱️\")\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n > As this example demonstrates, `startWith` can be chained on a last-in-first-out basis, i.e., each successive `startWith`'s elements will be prepended before the prior `startWith`'s elements.\n ----\n ## `merge`\n Combines elements from source `Observable` sequences into a single new `Observable` sequence, and will emit each element as it is emitted by each source `Observable` sequence. [More info](http://reactivex.io/documentation/operators/merge.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/merge.png)\n */\nexample(\"merge\") {\n    let disposeBag = DisposeBag()\n\n    let subject1 = PublishSubject<String>()\n    let subject2 = PublishSubject<String>()\n\n    Observable.of(subject1, subject2)\n        .merge()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    subject1.onNext(\"🅰️\")\n\n    subject1.onNext(\"🅱️\")\n\n    subject2.onNext(\"①\")\n\n    subject2.onNext(\"②\")\n\n    subject1.onNext(\"🆎\")\n\n    subject2.onNext(\"③\")\n}\n\n/*:\n ----\n ## `zip`\n Combines up to 8 source `Observable` sequences into a single new `Observable` sequence, and will emit from the combined `Observable` sequence the elements from each of the source `Observable` sequences at the corresponding index. [More info](http://reactivex.io/documentation/operators/zip.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/zip.png)\n */\nexample(\"zip\") {\n    let disposeBag = DisposeBag()\n\n    let stringSubject = PublishSubject<String>()\n    let intSubject = PublishSubject<Int>()\n\n    Observable.zip(stringSubject, intSubject) { stringElement, intElement in\n        \"\\(stringElement) \\(intElement)\"\n    }\n    .subscribe(onNext: { print($0) })\n    .disposed(by: disposeBag)\n\n    stringSubject.onNext(\"🅰️\")\n    stringSubject.onNext(\"🅱️\")\n\n    intSubject.onNext(1)\n\n    intSubject.onNext(2)\n\n    stringSubject.onNext(\"🆎\")\n    intSubject.onNext(3)\n}\n\n/*:\n ----\n ## `combineLatest`\n Combines up to 8 source `Observable` sequences into a single new `Observable` sequence, and will begin emitting from the combined `Observable` sequence the latest elements of each source `Observable` sequence once all source sequences have emitted at least one element, and also when any of the source `Observable` sequences emits a new element. [More info](http://reactivex.io/documentation/operators/combinelatest.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/combinelatest.png)\n */\nexample(\"combineLatest\") {\n    let disposeBag = DisposeBag()\n\n    let stringSubject = PublishSubject<String>()\n    let intSubject = PublishSubject<Int>()\n\n    Observable.combineLatest(stringSubject, intSubject) { stringElement, intElement in\n        \"\\(stringElement) \\(intElement)\"\n    }\n    .subscribe(onNext: { print($0) })\n    .disposed(by: disposeBag)\n\n    stringSubject.onNext(\"🅰️\")\n\n    stringSubject.onNext(\"🅱️\")\n    intSubject.onNext(1)\n\n    intSubject.onNext(2)\n\n    stringSubject.onNext(\"🆎\")\n}\n\n//: There is also a variant of `combineLatest` that takes an `Array` (or any other collection of `Observable` sequences):\nexample(\"Array.combineLatest\") {\n    let disposeBag = DisposeBag()\n\n    let stringObservable = Observable.just(\"❤️\")\n    let fruitObservable = Observable.from([\"🍎\", \"🍐\", \"🍊\"])\n    let animalObservable = Observable.of(\"🐶\", \"🐱\", \"🐭\", \"🐹\")\n\n    Observable.combineLatest([stringObservable, fruitObservable, animalObservable]) {\n        \"\\($0[0]) \\($0[1]) \\($0[2])\"\n    }\n    .subscribe(onNext: { print($0) })\n    .disposed(by: disposeBag)\n}\n\n/*:\n > Because the `combineLatest` variant that takes a collection passes an array of values to the selector function, it requires that all source `Observable` sequences are of the same type.\n ----\n ## `switchLatest`\n Transforms the elements emitted by an `Observable` sequence into `Observable` sequences, and emits elements from the most recent inner `Observable` sequence. [More info](http://reactivex.io/documentation/operators/switch.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/switch.png)\n */\nexample(\"switchLatest\") {\n    let disposeBag = DisposeBag()\n\n    let subject1 = BehaviorSubject(value: \"⚽️\")\n    let subject2 = BehaviorSubject(value: \"🍎\")\n\n    let subjectsSubject = BehaviorSubject(value: subject1)\n\n    subjectsSubject.asObservable()\n        .switchLatest()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    subject1.onNext(\"🏈\")\n    subject1.onNext(\"🏀\")\n\n    subjectsSubject.onNext(subject2)\n\n    subject1.onNext(\"⚾️\")\n\n    subject2.onNext(\"🍐\")\n}\n\n/*:\n > In this example, adding ⚾️ onto `subject1` after adding `subject2` to `subjectsSubject` has no effect, because only the most recent inner `Observable` sequence (`subject2`) will emit elements.\n\n ----\n ## `withLatestFrom`\n Merges two observable sequences into one observable sequence by combining each element from the first source with the latest element from the second source, if any.\n */\nexample(\"withLatestFrom\") {\n    let disposeBag = DisposeBag()\n\n    let foodSubject = PublishSubject<String>()\n    let drinksSubject = PublishSubject<String>()\n\n    foodSubject.asObservable()\n        .withLatestFrom(drinksSubject) { \"\\($0) + \\($1)\" }\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    foodSubject.onNext(\"🥗\")\n\n    drinksSubject.onNext(\"☕️\")\n    foodSubject.onNext(\"🥐\")\n\n    drinksSubject.onNext(\"🍷\")\n    foodSubject.onNext(\"🍔\")\n\n    foodSubject.onNext(\"🍟\")\n\n    drinksSubject.onNext(\"🍾\")\n}\n\n/*:\n > In this example 🥗 is not printed because `drinksSubject` did not emit any values before 🥗 was received. The last drink (🍾) will be printed whenever `foodSubject` will emit another event.\n */\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Connectable_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\nplaygroundShouldContinueIndefinitely()\n/*:\n # Connectable Operators\n  Connectable `Observable` sequences resembles ordinary `Observable` sequences, except that they not begin emitting elements when subscribed to, but instead, only when their `connect()` method is called. In this way, you can wait for all intended subscribers to subscribe to a connectable `Observable` sequence before it begins emitting elements.\n  > Within each example on this page is a commented-out method. Uncomment that method to run the example, and then comment it out again to stop running the example.\n  #\n  Before learning about connectable operators, let's take a look at an example of a non-connectable operator:\n */\nfunc sampleWithoutConnectableOperators() {\n    printExampleHeader(#function)\n\n    let interval = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n\n    _ = interval\n        .subscribe(onNext: { print(\"Subscription: 1, Event: \\($0)\") })\n\n    delay(5) {\n        _ = interval\n            .subscribe(onNext: { print(\"Subscription: 2, Event: \\($0)\") })\n    }\n}\n\n// sampleWithoutConnectableOperators() // ⚠️ Uncomment to run this example; comment to stop running\n/*:\n > `interval` creates an `Observable` sequence that emits elements after each `period`, on the specified scheduler. [More info](http://reactivex.io/documentation/operators/interval.html)\n ![](http://reactivex.io/documentation/operators/images/interval.c.png)\n ----\n ## `publish`\n Converts the source `Observable` sequence into a connectable sequence. [More info](http://reactivex.io/documentation/operators/publish.html)\n ![](http://reactivex.io/documentation/operators/images/publishConnect.c.png)\n */\nfunc sampleWithPublish() {\n    printExampleHeader(#function)\n\n    let intSequence = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n        .publish()\n\n    _ = intSequence\n        .subscribe(onNext: { print(\"Subscription 1:, Event: \\($0)\") })\n\n    delay(2) { _ = intSequence.connect() }\n\n    delay(4) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"Subscription 2:, Event: \\($0)\") })\n    }\n\n    delay(6) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"Subscription 3:, Event: \\($0)\") })\n    }\n}\n\n// sampleWithPublish() // ⚠️ Uncomment to run this example; comment to stop running\n\n//: > Schedulers are an abstraction of mechanisms for performing work, such as on specific threads or dispatch queues. [More info](https://github.com/ReactiveX/RxSwift/blob/master/Documentation/Schedulers.md)\n\n/*:\n ----\n ## `replay`\n Converts the source `Observable` sequence into a connectable sequence, and will replay `bufferSize` number of previous emissions to each new subscriber. [More info](http://reactivex.io/documentation/operators/replay.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/replay.png)\n */\nfunc sampleWithReplayBuffer() {\n    printExampleHeader(#function)\n\n    let intSequence = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n        .replay(5)\n\n    _ = intSequence\n        .subscribe(onNext: { print(\"Subscription 1:, Event: \\($0)\") })\n\n    delay(2) { _ = intSequence.connect() }\n\n    delay(4) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"Subscription 2:, Event: \\($0)\") })\n    }\n\n    delay(8) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"Subscription 3:, Event: \\($0)\") })\n    }\n}\n\n// sampleWithReplayBuffer() // ⚠️ Uncomment to run this example; comment to stop running\n\n/*:\n ----\n ## `multicast`\n Converts the source `Observable` sequence into a connectable sequence, and broadcasts its emissions via the specified `subject`.\n */\nfunc sampleWithMulticast() {\n    printExampleHeader(#function)\n\n    let subject = PublishSubject<Int>()\n\n    _ = subject\n        .subscribe(onNext: { print(\"Subject: \\($0)\") })\n\n    let intSequence = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n        .multicast(subject)\n\n    _ = intSequence\n        .subscribe(onNext: { print(\"\\tSubscription 1:, Event: \\($0)\") })\n\n    delay(2) { _ = intSequence.connect() }\n\n    delay(4) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"\\tSubscription 2:, Event: \\($0)\") })\n    }\n\n    delay(6) {\n        _ = intSequence\n            .subscribe(onNext: { print(\"\\tSubscription 3:, Event: \\($0)\") })\n    }\n}\n\n// sampleWithMulticast() // ⚠️ Uncomment to run this example; comment to stop running\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Creating_and_Subscribing_to_Observables.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Creating and Subscribing to `Observable`s\n There are several ways to create and subscribe to `Observable` sequences.\n ## never\n Creates a sequence that never terminates and never emits any events. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html)\n */\nexample(\"never\") {\n    let disposeBag = DisposeBag()\n    let neverSequence = Observable<String>.never()\n\n    let neverSequenceSubscription = neverSequence\n        .subscribe { _ in\n            print(\"This will never be printed\")\n        }\n\n    neverSequenceSubscription.disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## empty\n Creates an empty `Observable` sequence that only emits a Completed event. [More info](http://reactivex.io/documentation/operators/empty-never-throw.html)\n */\nexample(\"empty\") {\n    let disposeBag = DisposeBag()\n\n    Observable<Int>.empty()\n        .subscribe { event in\n            print(event)\n        }\n        .disposed(by: disposeBag)\n}\n\n/*:\n > This example also introduces chaining together creating and subscribing to an `Observable` sequence.\n ----\n ## just\n Creates an `Observable` sequence with a single element. [More info](http://reactivex.io/documentation/operators/just.html)\n */\nexample(\"just\") {\n    let disposeBag = DisposeBag()\n\n    Observable.just(\"🔴\")\n        .subscribe { event in\n            print(event)\n        }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## of\n Creates an `Observable` sequence with a fixed number of elements.\n */\nexample(\"of\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐶\", \"🐱\", \"🐭\", \"🐹\")\n        .subscribe(onNext: { element in\n            print(element)\n        })\n        .disposed(by: disposeBag)\n}\n\n/*:\n  > This example also introduces using the `subscribe(onNext:)` convenience method. Unlike `subscribe(_:)`, which subscribes an _event_ handler for all event types (Next, Error, and Completed), `subscribe(onNext:)` subscribes an _element_ handler that will ignore Error and Completed events and only produce Next event elements. There are also `subscribe(onError:)` and `subscribe(onCompleted:)` convenience methods, should you only want to subscribe to those event types. And there is a `subscribe(onNext:onError:onCompleted:onDisposed:)` method, which allows you to react to one or more event types and when the subscription is terminated for any reason, or disposed, in a single call:\n  ```\n  someObservable.subscribe(\n      onNext: { print(\"Element:\", $0) },\n      onError: { print(\"Error:\", $0) },\n      onCompleted: { print(\"Completed\") },\n      onDisposed: { print(\"Disposed\") }\n  )\n ```\n  ----\n  ## from\n  Creates an `Observable` sequence from a `Sequence`, such as an `Array`, `Dictionary`, or `Set`.\n  */\nexample(\"from\") {\n    let disposeBag = DisposeBag()\n\n    Observable.from([\"🐶\", \"🐱\", \"🐭\", \"🐹\"])\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n  > This example also demonstrates using the default argument name `$0` instead of explicitly naming the argument.\n ----\n  ## create\n  Creates a custom `Observable` sequence. [More info](http://reactivex.io/documentation/operators/create.html)\n */\nexample(\"create\") {\n    let disposeBag = DisposeBag()\n\n    let myJust = { (element: String) -> Observable<String> in\n        return Observable.create { observer in\n            observer.on(.next(element))\n            observer.on(.completed)\n            return Disposables.create()\n        }\n    }\n\n    myJust(\"🔴\")\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## range\n Creates an `Observable` sequence that emits a range of sequential integers and then terminates. [More info](http://reactivex.io/documentation/operators/range.html)\n */\nexample(\"range\") {\n    let disposeBag = DisposeBag()\n\n    Observable.range(start: 1, count: 10)\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## repeatElement\n Creates an `Observable` sequence that emits the given element indefinitely. [More info](http://reactivex.io/documentation/operators/repeat.html)\n */\nexample(\"repeatElement\") {\n    let disposeBag = DisposeBag()\n\n    Observable.repeatElement(\"🔴\")\n        .take(3)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n > This example also introduces using the `take` operator to return a specified number of elements from the start of a sequence.\n ----\n ## generate\n Creates an `Observable` sequence that generates values for as long as the provided condition evaluates to `true`.\n */\nexample(\"generate\") {\n    let disposeBag = DisposeBag()\n\n    Observable.generate(\n        initialState: 0,\n        condition: { $0 < 3 },\n        iterate: { $0 + 1 }\n    )\n    .subscribe(onNext: { print($0) })\n    .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## deferred\n Creates a new `Observable` sequence for each subscriber. [More info](http://reactivex.io/documentation/operators/defer.html)\n */\nexample(\"deferred\") {\n    let disposeBag = DisposeBag()\n    var count = 1\n\n    let deferredSequence = Observable<String>.deferred {\n        print(\"Creating \\(count)\")\n        count += 1\n\n        return Observable.create { observer in\n            print(\"Emitting...\")\n            observer.onNext(\"🐶\")\n            observer.onNext(\"🐱\")\n            observer.onNext(\"🐵\")\n            return Disposables.create()\n        }\n    }\n\n    deferredSequence\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    deferredSequence\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## error\n Creates an `Observable` sequence that emits no items and immediately terminates with an error.\n */\nexample(\"error\") {\n    let disposeBag = DisposeBag()\n\n    Observable<Int>.error(TestError.test)\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## doOn\n Invokes a side-effect action for each emitted event and returns (passes through) the original event. [More info](http://reactivex.io/documentation/operators/do.html)\n */\nexample(\"doOn\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🍎\", \"🍐\", \"🍊\", \"🍋\")\n        .do(onNext: { print(\"Intercepted:\", $0) }, afterNext: { print(\"Intercepted after:\", $0) }, onError: { print(\"Intercepted error:\", $0) }, afterError: { print(\"Intercepted after error:\", $0) }, onCompleted: { print(\"Completed\") }, afterCompleted: { print(\"After completed\") })\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n//: > There are also `doOnNext(_:)`, `doOnError(_:)`, and `doOnCompleted(_:)` convenience methods to intercept those specific events, and `doOn(onNext:onError:onCompleted:)` to intercept one or more events in a single call.\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Debugging_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Debugging Operators\n Operators to help debug Rx code.\n ## `debug`\n Prints out all subscriptions, events, and disposals.\n */\nexample(\"debug\") {\n    let disposeBag = DisposeBag()\n    var count = 1\n\n    let sequenceThatErrors = Observable<String>.create { observer in\n        observer.onNext(\"🍎\")\n        observer.onNext(\"🍐\")\n        observer.onNext(\"🍊\")\n\n        if count < 5 {\n            observer.onError(TestError.test)\n            print(\"Error encountered\")\n            count += 1\n        }\n\n        observer.onNext(\"🐶\")\n        observer.onNext(\"🐱\")\n        observer.onNext(\"🐭\")\n        observer.onCompleted()\n\n        return Disposables.create()\n    }\n\n    sequenceThatErrors\n        .retry(3)\n        .debug()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n/*:\n ----\n ## `RxSwift.Resources.total`\n Provides a count of all Rx resource allocations, which is useful for detecting leaks during development.\n */\n#if NOT_IN_PLAYGROUND\n#else\nexample(\"RxSwift.Resources.total\") {\n    print(RxSwift.Resources.total)\n\n    let disposeBag = DisposeBag()\n\n    print(RxSwift.Resources.total)\n\n    let subject = BehaviorSubject(value: \"🍎\")\n\n    let subscription1 = subject.subscribe(onNext: { print($0) })\n\n    print(RxSwift.Resources.total)\n\n    let subscription2 = subject.subscribe(onNext: { print($0) })\n\n    print(RxSwift.Resources.total)\n\n    subscription1.dispose()\n\n    print(RxSwift.Resources.total)\n\n    subscription2.dispose()\n\n    print(RxSwift.Resources.total)\n}\n\nprint(RxSwift.Resources.total)\n#endif\n//: > `RxSwift.Resources.total` is not enabled by default, and should generally not be enabled in Release builds. [Click here](Enable_RxSwift.Resources.total) for instructions on how to enable it.\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Enable_RxSwift.Resources.total.xcplaygroundpage/Contents.swift",
    "content": "//: [Back](@previous)\n/*:\n Follow these instructions to enable `RxSwift.Resources.total` in your project:\n #\n **CocoaPods**\n 1. Add a `post_install` hook to your Podfile, e.g.:\n ```\n target 'AppTarget' do\n pod 'RxSwift'\n end\n\n post_install do |installer|\n     installer.pods_project.targets.each do |target|\n         if target.name == 'RxSwift'\n             target.build_configurations.each do |config|\n                 if config.name == 'Debug'\n                     config.build_settings['OTHER_SWIFT_FLAGS'] ||= ['-D', 'TRACE_RESOURCES']\n                 end\n             end\n         end\n     end\n end\n ```\n 2. Run `pod update`.\n 3. Build project (**Product** → **Build**).\n #\n **Carthage**\n 1. Run `carthage build --configuration Debug`.\n 2. Build project (**Product** → **Build**).\n */\n"
  },
  {
    "path": "Rx.playground/Pages/Error_Handling_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Error Handling Operators\n Operators that help to recover from error notifications from an Observable.\n ## `catchErrorJustReturn`\n Recovers from an Error event by returning an `Observable` sequence that emits a single element and then terminates. [More info](http://reactivex.io/documentation/operators/catch.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/catch.png)\n */\nexample(\"catchErrorJustReturn\") {\n    let disposeBag = DisposeBag()\n\n    let sequenceThatFails = PublishSubject<String>()\n\n    sequenceThatFails\n        .catchAndReturn(\"😊\")\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    sequenceThatFails.onNext(\"😬\")\n    sequenceThatFails.onNext(\"😨\")\n    sequenceThatFails.onNext(\"😡\")\n    sequenceThatFails.onNext(\"🔴\")\n    sequenceThatFails.onError(TestError.test)\n}\n\n/*:\n ----\n ## `catchError`\n Recovers from an Error event by switching to the provided recovery `Observable` sequence. [More info](http://reactivex.io/documentation/operators/catch.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/catch.png)\n */\nexample(\"catchError\") {\n    let disposeBag = DisposeBag()\n\n    let sequenceThatFails = PublishSubject<String>()\n    let recoverySequence = PublishSubject<String>()\n\n    sequenceThatFails\n        .catch {\n            print(\"Error:\", $0)\n            return recoverySequence\n        }\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    sequenceThatFails.onNext(\"😬\")\n    sequenceThatFails.onNext(\"😨\")\n    sequenceThatFails.onNext(\"😡\")\n    sequenceThatFails.onNext(\"🔴\")\n    sequenceThatFails.onError(TestError.test)\n\n    recoverySequence.onNext(\"😊\")\n}\n\n/*:\n ----\n ## `retry`\n Recovers repeatedly Error events by resubscribing to the `Observable` sequence, indefinitely. [More info](http://reactivex.io/documentation/operators/retry.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/retry.png)\n */\nexample(\"retry\") {\n    let disposeBag = DisposeBag()\n    var count = 1\n\n    let sequenceThatErrors = Observable<String>.create { observer in\n        observer.onNext(\"🍎\")\n        observer.onNext(\"🍐\")\n        observer.onNext(\"🍊\")\n\n        if count == 1 {\n            observer.onError(TestError.test)\n            print(\"Error encountered\")\n            count += 1\n        }\n\n        observer.onNext(\"🐶\")\n        observer.onNext(\"🐱\")\n        observer.onNext(\"🐭\")\n        observer.onCompleted()\n\n        return Disposables.create()\n    }\n\n    sequenceThatErrors\n        .retry()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n  ----\n  ## `retry(_:)`\n Recovers repeatedly from Error events by resubscribing to the `Observable` sequence, up to `maxAttemptCount` number of retries. [More info](http://reactivex.io/documentation/operators/retry.html)\n  ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/retry.png)\n  */\nexample(\"retry maxAttemptCount\") {\n    let disposeBag = DisposeBag()\n    var count = 1\n\n    let sequenceThatErrors = Observable<String>.create { observer in\n        observer.onNext(\"🍎\")\n        observer.onNext(\"🍐\")\n        observer.onNext(\"🍊\")\n\n        if count < 5 {\n            observer.onError(TestError.test)\n            print(\"Error encountered\")\n            count += 1\n        }\n\n        observer.onNext(\"🐶\")\n        observer.onNext(\"🐱\")\n        observer.onNext(\"🐭\")\n        observer.onCompleted()\n\n        return Disposables.create()\n    }\n\n    sequenceThatErrors\n        .retry(3)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Filtering_and_Conditional_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Filtering and Conditional Operators\n Operators that selectively emit elements from a source `Observable` sequence.\n ## `filter`\n Emits only those elements from an `Observable` sequence that meet the specified condition. [More info](http://reactivex.io/documentation/operators/filter.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/filter.png)\n */\nexample(\"filter\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\n        \"🐱\", \"🐰\", \"🐶\",\n        \"🐸\", \"🐱\", \"🐰\",\n        \"🐹\", \"🐸\", \"🐱\"\n    )\n    .filter {\n        $0 == \"🐱\"\n    }\n    .subscribe(onNext: { print($0) })\n    .disposed(by: disposeBag)\n}\n\n/*:\n  ----\n ## `distinctUntilChanged`\n  Suppresses sequential duplicate elements emitted by an `Observable` sequence. [More info](http://reactivex.io/documentation/operators/distinct.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/distinct.png)\n */\nexample(\"distinctUntilChanged\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐷\", \"🐱\", \"🐱\", \"🐱\", \"🐵\", \"🐱\")\n        .distinctUntilChanged()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `elementAt`\n Emits only the element at the specified index of all elements emitted by an `Observable` sequence. [More info](http://reactivex.io/documentation/operators/elementat.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/elementat.png)\n */\nexample(\"elementAt\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .element(at: 3)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `single`\n Emits only the first element (or the first element that meets a condition) emitted by an `Observable` sequence. Will throw an error if the `Observable` sequence does not emit exactly one element.\n */\nexample(\"single\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .single()\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\nexample(\"single with conditions\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .single { $0 == \"🐸\" }\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐱\", \"🐰\", \"🐶\")\n        .single { $0 == \"🐰\" }\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .single { $0 == \"🔵\" }\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `take`\n Emits only the specified number of elements from the beginning of an `Observable` sequence. [More info](http://reactivex.io/documentation/operators/take.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/take.png)\n */\nexample(\"take\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .take(3)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `takeLast`\n Emits only the specified number of elements from the end of an `Observable` sequence. [More info](http://reactivex.io/documentation/operators/takelast.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takelast.png)\n */\nexample(\"takeLast\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .takeLast(3)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `takeWhile`\n Emits elements from the beginning of an `Observable` sequence as long as the specified condition evaluates to `true`. [More info](http://reactivex.io/documentation/operators/takewhile.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takewhile.png)\n */\nexample(\"takeWhile\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(1, 2, 3, 4, 5, 6)\n        .take(while: { $0 < 4 })\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `takeUntil`\n Emits elements from a source `Observable` sequence until a reference `Observable` sequence emits an element. [More info](http://reactivex.io/documentation/operators/takeuntil.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/takeuntil.png)\n */\nexample(\"takeUntil\") {\n    let disposeBag = DisposeBag()\n\n    let sourceSequence = PublishSubject<String>()\n    let referenceSequence = PublishSubject<String>()\n\n    sourceSequence\n        .take(until: referenceSequence)\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    sourceSequence.onNext(\"🐱\")\n    sourceSequence.onNext(\"🐰\")\n    sourceSequence.onNext(\"🐶\")\n\n    referenceSequence.onNext(\"🔴\")\n\n    sourceSequence.onNext(\"🐸\")\n    sourceSequence.onNext(\"🐷\")\n    sourceSequence.onNext(\"🐵\")\n}\n\n/*:\n ----\n ## `skip`\n Suppresses emitting the specified number of elements from the beginning of an `Observable` sequence. [More info](http://reactivex.io/documentation/operators/skip.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/skip.png)\n */\nexample(\"skip\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .skip(2)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `skipWhile`\n Suppresses emitting the elements from the beginning of an `Observable` sequence that meet the specified condition. [More info](http://reactivex.io/documentation/operators/skipwhile.html)\n ![](http://reactivex.io/documentation/operators/images/skipWhile.c.png)\n */\nexample(\"skipWhile\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(1, 2, 3, 4, 5, 6)\n        .skip(while: { $0 < 4 })\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `skipWhileWithIndex`\n Suppresses emitting the elements from the beginning of an `Observable` sequence that meet the specified condition, and emits the remaining elements. The closure is also passed each element's index.\n */\nexample(\"skipWhileWithIndex\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(\"🐱\", \"🐰\", \"🐶\", \"🐸\", \"🐷\", \"🐵\")\n        .enumerated()\n        .skip(while: { $0.index < 3 })\n        .map(\\.element)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `skipUntil`\n Suppresses emitting the elements from a source `Observable` sequence until a reference `Observable` sequence emits an element. [More info](http://reactivex.io/documentation/operators/skipuntil.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/skipuntil.png)\n */\nexample(\"skipUntil\") {\n    let disposeBag = DisposeBag()\n\n    let sourceSequence = PublishSubject<String>()\n    let referenceSequence = PublishSubject<String>()\n\n    sourceSequence\n        .skip(until: referenceSequence)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    sourceSequence.onNext(\"🐱\")\n    sourceSequence.onNext(\"🐰\")\n    sourceSequence.onNext(\"🐶\")\n\n    referenceSequence.onNext(\"🔴\")\n\n    sourceSequence.onNext(\"🐸\")\n    sourceSequence.onNext(\"🐷\")\n    sourceSequence.onNext(\"🐵\")\n}\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Introduction.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous)\n */\n\nimport RxSwift\n\n/*:\n # Introduction\n\n ## Why use RxSwift?\n\n A vast majority of the code we write involves responding to external events. When a user manipulates a control, we need to write an `@IBAction` handler to respond. We need to observe notifications to detect when the keyboard changes position. We must provide closures to execute when URL sessions respond with data. And we use KVO to detect changes to variables.\n All of these various systems makes our code needlessly complex. Wouldn't it be better if there was one consistent system that handled all of our call/response code? Rx is such a system.\n\n  RxSwift is the official implementation of [Reactive Extensions](http://reactivex.io) (aka Rx), which exist for [most major languages and platforms](http://reactivex.io/languages.html).\n */\n/*:\n ## Concepts\n\n **Every `Observable` instance is just a sequence.**\n\n The key advantage for an `Observable` sequence vs. Swift's `Sequence` is that it can also receive elements asynchronously. _This is the essence of RxSwift._ Everything else expands upon this concept.\n\n * An `Observable` (`ObservableType`) is equivalent to a `Sequence`.\n * The `ObservableType.subscribe(_:)` method is equivalent to `Sequence.makeIterator()`.\n * `ObservableType.subscribe(_:)` takes an observer (`ObserverType`) parameter, which will be subscribed to automatically receive sequence events and elements emitted by the `Observable`, instead of manually calling `next()` on the returned generator.\n */\n/*:\n If an `Observable` emits a next event (`Event.next(Element)`), it can continue to emit more events. However, if the `Observable` emits either an error event (`Event.error(ErrorType)`) or a completed event (`Event.completed`), the `Observable` sequence cannot emit additional events to the subscriber.\n\n Sequence grammar explains this more concisely:\n\n `next* (error | completed)?`\n\n And this can also be explained more visually using diagrams:\n\n `--1--2--3--4--5--6--|----> // \"|\" = Terminates normally`\n\n `--a--b--c--d--e--f--X----> // \"X\" = Terminates with an error`\n\n `--tap--tap----------tap--> // \"|\" = Continues indefinitely, such as a sequence of button taps`\n\n > These diagrams are called marble diagrams. You can learn more about them at [RxMarbles.com](http://rxmarbles.com).\n */\n/*:\n ### Observables and observers (aka subscribers)\n\n `Observable`s will not execute their subscription closure unless there is a subscriber. In the following example, the closure of the `Observable` will never be executed, because there are no subscribers:\n */\nexample(\"Observable with no subscribers\") {\n    _ = Observable<String>.create { observerOfString -> Disposable in\n        print(\"This will never be printed\")\n        observerOfString.on(.next(\"😬\"))\n        observerOfString.on(.completed)\n        return Disposables.create()\n    }\n}\n\n/*:\n ----\n In the following example, the closure will be executed when `subscribe(_:)` is called:\n */\nexample(\"Observable with subscriber\") {\n    _ = Observable<String>.create { observerOfString in\n        print(\"Observable created\")\n        observerOfString.on(.next(\"😉\"))\n        observerOfString.on(.completed)\n        return Disposables.create()\n    }\n    .subscribe { event in\n        print(event)\n    }\n}\n\n/*:\n > Don't concern yourself with the details of how these `Observable`s were created in these examples. We'll get into that [next](@next).\n #\n > `subscribe(_:)` returns a `Disposable` instance that represents a disposable resource such as a subscription. It was ignored in the previous simple example, but it should normally be properly handled. This usually means adding it to a `DisposeBag` instance. All examples going forward will include proper handling, because, well, practice makes _permanent_ 🙂. You can learn more about this in the [Disposing section](https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md#disposing) of the [Getting Started guide](https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md).\n */\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Mathematical_and_Aggregate_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Mathematical and Aggregate Operators\n Operators that operate on the entire sequence of items emitted by an `Observable`.\n ## `toArray`\n Converts an `Observable` sequence into an array, emits that array as a new single-element `Observable` sequence, and then terminates. [More info](http://reactivex.io/documentation/operators/to.html)\n ![](http://reactivex.io/documentation/operators/images/to.c.png)\n */\nexample(\"toArray\") {\n    let disposeBag = DisposeBag()\n\n    Observable.range(start: 1, count: 10)\n        .toArray()\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `reduce`\n Begins with an initial seed value, and then applies an accumulator closure to all elements emitted by an `Observable` sequence, and returns the aggregate result as a single-element `Observable` sequence. [More info](http://reactivex.io/documentation/operators/reduce.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/reduce.png)\n */\nexample(\"reduce\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(10, 100, 1000)\n        .reduce(1, accumulator: +)\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `concat`\n Joins elements from inner `Observable` sequences of an `Observable` sequence in a sequential manner, waiting for each sequence to terminate successfully before emitting elements from the next sequence. [More info](http://reactivex.io/documentation/operators/concat.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/concat.png)\n */\nexample(\"concat\") {\n    let disposeBag = DisposeBag()\n\n    let subject1 = BehaviorSubject(value: \"🍎\")\n    let subject2 = BehaviorSubject(value: \"🐶\")\n\n    let subjectsSubject = BehaviorSubject(value: subject1)\n\n    subjectsSubject.asObservable()\n        .concat()\n        .subscribe { print($0) }\n        .disposed(by: disposeBag)\n\n    subject1.onNext(\"🍐\")\n    subject1.onNext(\"🍊\")\n\n    subjectsSubject.onNext(subject2)\n\n    subject2.onNext(\"I would be ignored\")\n    subject2.onNext(\"🐱\")\n\n    subject1.onCompleted()\n\n    subject2.onNext(\"🐭\")\n}\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/Table_of_Contents.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n ## Table of Contents:\n 1. [Introduction](Introduction)\n 1. [Creating and Subscribing to Observables](Creating_and_Subscribing_to_Observables)\n 1. [Working with Subjects](Working_with_Subjects)\n 1. [Combining Operators](Combining_Operators)\n 1. [Transforming Operators](Transforming_Operators)\n 1. [Filtering and Conditional Operators](Filtering_and_Conditional_Operators)\n 1. [Mathematical and Aggregate Operators](Mathematical_and_Aggregate_Operators)\n 1. [Connectable Operators](Connectable_Operators)\n 1. [Error Handling Operators](Error_Handling_Operators)\n 1. [Debugging Operators](Debugging_Operators)\n */\n\n//: [Next](@next)\n"
  },
  {
    "path": "Rx.playground/Pages/Transforming_Operators.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Transforming Operators\n Operators that transform Next event elements emitted by an `Observable` sequence.\n ## `map`\n  Applies a transforming closure to elements emitted by an `Observable` sequence, and returns a new `Observable` sequence of the transformed elements. [More info](http://reactivex.io/documentation/operators/map.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/map.png)\n */\nexample(\"map\") {\n    let disposeBag = DisposeBag()\n    Observable.of(1, 2, 3)\n        .map { $0 * $0 }\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n/*:\n ----\n ## `flatMap` and `flatMapLatest`\n Transforms the elements emitted by an `Observable` sequence into `Observable` sequences, and merges the emissions from both `Observable` sequences into a single `Observable` sequence. This is also useful when, for example, when you have an `Observable` sequence that itself emits `Observable` sequences, and you want to be able to react to new emissions from either `Observable` sequence. The difference between `flatMap` and `flatMapLatest` is, `flatMapLatest` will only emit elements from the most recent inner `Observable` sequence. [More info](http://reactivex.io/documentation/operators/flatmap.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/flatmap.png)\n */\nexample(\"flatMap and flatMapLatest\") {\n    let disposeBag = DisposeBag()\n\n    struct Player {\n        init(score: Int) {\n            self.score = BehaviorSubject(value: score)\n        }\n\n        let score: BehaviorSubject<Int>\n    }\n\n    let 👦🏻 = Player(score: 80)\n    let 👧🏼 = Player(score: 90)\n\n    let player = BehaviorSubject(value: 👦🏻)\n\n    player.asObservable()\n        .flatMap { $0.score.asObservable() } // Change flatMap to flatMapLatest and observe change in printed output\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n\n    👦🏻.score.onNext(85)\n\n    player.onNext(👧🏼)\n\n    👦🏻.score.onNext(95) // Will be printed when using flatMap, but will not be printed when using flatMapLatest\n\n    👧🏼.score.onNext(100)\n}\n\n/*:\n > In this example, using `flatMap` may have unintended consequences. After assigning 👧🏼 to `player.value`, `👧🏼.score` will begin to emit elements, but the previous inner `Observable` sequence (`👦🏻.score`) will also still emit elements. By changing `flatMap` to `flatMapLatest`, only the most recent inner `Observable` sequence (`👧🏼.score`) will emit elements, i.e., setting `👦🏻.score.value` to `95` has no effect.\n #\n > `flatMapLatest` is actually a combination of the `map` and `switchLatest` operators.\n */\n/*:\n ----\n ## `scan`\n Begins with an initial seed value, and then applies an accumulator closure to each element emitted by an `Observable` sequence, and returns each intermediate result as a single-element `Observable` sequence. [More info](http://reactivex.io/documentation/operators/scan.html)\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/scan.png)\n */\nexample(\"scan\") {\n    let disposeBag = DisposeBag()\n\n    Observable.of(10, 100, 1000)\n        .scan(1) { aggregateValue, newValue in\n            aggregateValue + newValue\n        }\n        .subscribe(onNext: { print($0) })\n        .disposed(by: disposeBag)\n}\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Pages/TryYourself.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n */\nimport RxSwift\n\n/*:\n # Try Yourself\n\n It's time to play with Rx 🎉\n */\nplaygroundShouldContinueIndefinitely()\n\nexample(\"Try yourself\") {\n    // let disposeBag = DisposeBag()\n    _ = Observable.just(\"Hello, RxSwift!\")\n        .debug(\"Observable\")\n        .subscribe()\n    // .disposed(by: disposeBag) // If dispose bag is used instead, sequence will terminate on scope exit\n}\n"
  },
  {
    "path": "Rx.playground/Pages/Working_with_Subjects.xcplaygroundpage/Contents.swift",
    "content": "/*:\n > # IMPORTANT: To use **Rx.playground**:\n 1. Open **Rx.xcworkspace**.\n 1. Build the **RxExample-macOS** scheme (**Product** → **Build**).\n 1. Open **Rx** playground in the **Project navigator** (under RxExample project).\n 1. Show the Debug Area (**View** → **Debug Area** → **Show Debug Area**).\n ----\n [Previous](@previous) - [Table of Contents](Table_of_Contents)\n */\nimport RxSwift\n\n/*:\n # Working with Subjects\n A Subject is a sort of bridge or proxy that is available in some implementations of Rx that acts as both an observer and `Observable`. Because it is an observer, it can subscribe to one or more `Observable`s, and because it is an `Observable`, it can pass through the items it observes by reemitting them, and it can also emit new items. [More info](http://reactivex.io/documentation/subject.html)\n */\nextension ObservableType {\n    /**\n     Add observer with `id` and print each emitted event.\n     - parameter id: an identifier for the subscription.\n     */\n    func addObserver(_ id: String) -> Disposable {\n        subscribe { print(\"Subscription:\", id, \"Event:\", $0) }\n    }\n}\n\nfunc writeSequenceToConsole(name: String, sequence: some ObservableType) -> Disposable {\n    sequence.subscribe { event in\n        print(\"Subscription: \\(name), event: \\(event)\")\n    }\n}\n\n/*:\n ## PublishSubject\n Broadcasts new events to all observers as of their time of the subscription.\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/publishsubject.png \"PublishSubject\")\n */\nexample(\"PublishSubject\") {\n    let disposeBag = DisposeBag()\n    let subject = PublishSubject<String>()\n\n    subject.addObserver(\"1\").disposed(by: disposeBag)\n    subject.onNext(\"🐶\")\n    subject.onNext(\"🐱\")\n\n    subject.addObserver(\"2\").disposed(by: disposeBag)\n    subject.onNext(\"🅰️\")\n    subject.onNext(\"🅱️\")\n}\n\n/*:\n > This example also introduces using the `onNext(_:)` convenience method, equivalent to `on(.next(_:)`, which causes a new Next event to be emitted to subscribers with the provided `element`. There are also `onError(_:)` and `onCompleted()` convenience methods, equivalent to `on(.error(_:))` and `on(.completed)`, respectively.\n ----\n ## ReplaySubject\n Broadcasts new events to all subscribers, and the specified `bufferSize` number of previous events to new subscribers.\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/replaysubject.png)\n */\nexample(\"ReplaySubject\") {\n    let disposeBag = DisposeBag()\n    let subject = ReplaySubject<String>.create(bufferSize: 1)\n\n    subject.addObserver(\"1\").disposed(by: disposeBag)\n    subject.onNext(\"🐶\")\n    subject.onNext(\"🐱\")\n\n    subject.addObserver(\"2\").disposed(by: disposeBag)\n    subject.onNext(\"🅰️\")\n    subject.onNext(\"🅱️\")\n}\n\n/*:\n  ----\n ## BehaviorSubject\n Broadcasts new events to all subscribers, and the most recent (or initial) value to new subscribers.\n ![](https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/MarbleDiagrams/png/behaviorsubject.png)\n */\nexample(\"BehaviorSubject\") {\n    let disposeBag = DisposeBag()\n    let subject = BehaviorSubject(value: \"🔴\")\n\n    subject.addObserver(\"1\").disposed(by: disposeBag)\n    subject.onNext(\"🐶\")\n    subject.onNext(\"🐱\")\n\n    subject.addObserver(\"2\").disposed(by: disposeBag)\n    subject.onNext(\"🅰️\")\n    subject.onNext(\"🅱️\")\n\n    subject.addObserver(\"3\").disposed(by: disposeBag)\n    subject.onNext(\"🍐\")\n    subject.onNext(\"🍊\")\n}\n\n/*:\n > Notice what's missing in these previous examples? A Completed event. `PublishSubject`, `ReplaySubject`, and `BehaviorSubject` do not automatically emit Completed events when they are about to be disposed of.\n */\n\n//: [Next](@next) - [Table of Contents](Table_of_Contents)\n"
  },
  {
    "path": "Rx.playground/Sources/SupportCode.swift",
    "content": "import Dispatch\n\n/**\n Encloses each code example in its own scope. Prints a `description` header and then executes the `action` closure.\n - parameter description: example description\n - parameter action: `Void` closure\n */\npublic func example(_ description: String, action: () -> Void) {\n    printExampleHeader(description)\n    action()\n}\n\npublic func printExampleHeader(_ description: String) {\n    print(\"\\n--- \\(description) example ---\")\n}\n\npublic enum TestError: Swift.Error {\n    case test\n}\n\n/**\n Executes `closure` on main thread after `delay` seconds.\n - parameter delay: time in seconds to wait before executing `closure`\n - parameter closure: `Void` closure\n */\npublic func delay(_ delay: Double, closure: @escaping () -> Void) {\n    DispatchQueue.main.asyncAfter(deadline: .now() + delay) {\n        closure()\n    }\n}\n\n#if NOT_IN_PLAYGROUND\n\npublic func playgroundShouldContinueIndefinitely() {}\n\n#else\n\nimport PlaygroundSupport\n\npublic func playgroundShouldContinueIndefinitely() {\n    PlaygroundPage.current.needsIndefiniteExecution = true\n}\n\n#endif\n"
  },
  {
    "path": "Rx.playground/SupportCode.remap",
    "content": "[\n]"
  },
  {
    "path": "Rx.playground/contents.xcplayground",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<playground version='6.0' target-platform='macos' display-mode='rendered' buildActiveScheme='true' last-migration='1020'>\n    <pages>\n        <page name='Table_of_Contents'/>\n        <page name='Introduction'/>\n        <page name='Creating_and_Subscribing_to_Observables'/>\n        <page name='Working_with_Subjects'/>\n        <page name='Combining_Operators'/>\n        <page name='Transforming_Operators'/>\n        <page name='Filtering_and_Conditional_Operators'/>\n        <page name='Mathematical_and_Aggregate_Operators'/>\n        <page name='Connectable_Operators'/>\n        <page name='Error_Handling_Operators'/>\n        <page name='Debugging_Operators'/>\n        <page name='Enable_RxSwift.resourceCount'/>\n        <page name='Playground'/>\n    </pages>\n</playground>"
  },
  {
    "path": "Rx.playground/playground.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Rx.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 55;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t033C2EF61D081C460050C015 /* UIScrollView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 033C2EF41D081B2A0050C015 /* UIScrollView+RxTests.swift */; };\n\t\t0BA949671E224B7E0036DD06 /* AsyncSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BA949661E224B7E0036DD06 /* AsyncSubject.swift */; };\n\t\t0BA9496C1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BA9496B1E224B9C0036DD06 /* AsyncSubjectTests.swift */; };\n\t\t0BA9496D1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BA9496B1E224B9C0036DD06 /* AsyncSubjectTests.swift */; };\n\t\t0BA9496E1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BA9496B1E224B9C0036DD06 /* AsyncSubjectTests.swift */; };\n\t\t1AF67DA21CED420A00C310FA /* PublishSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA11CED420A00C310FA /* PublishSubjectTest.swift */; };\n\t\t1AF67DA31CED427D00C310FA /* PublishSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA11CED420A00C310FA /* PublishSubjectTest.swift */; };\n\t\t1AF67DA41CED427D00C310FA /* PublishSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA11CED420A00C310FA /* PublishSubjectTest.swift */; };\n\t\t1AF67DA61CED430100C310FA /* ReplaySubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA51CED430100C310FA /* ReplaySubjectTest.swift */; };\n\t\t1AF67DA71CED430100C310FA /* ReplaySubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA51CED430100C310FA /* ReplaySubjectTest.swift */; };\n\t\t1AF67DA81CED430100C310FA /* ReplaySubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AF67DA51CED430100C310FA /* ReplaySubjectTest.swift */; };\n\t\t1D858B6629E57EE900CD6814 /* Infallible+CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D858B6529E57EE900CD6814 /* Infallible+CombineLatest+Collection.swift */; };\n\t\t1E3079AC21FB52330072A7E6 /* AtomicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E3079AB21FB52330072A7E6 /* AtomicTests.swift */; };\n\t\t1E3079AD21FB52330072A7E6 /* AtomicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E3079AB21FB52330072A7E6 /* AtomicTests.swift */; };\n\t\t1E3079AE21FB52330072A7E6 /* AtomicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E3079AB21FB52330072A7E6 /* AtomicTests.swift */; };\n\t\t1E3EDF65226356A000B631B9 /* Date+Dispatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E3EDF64226356A000B631B9 /* Date+Dispatch.swift */; };\n\t\t1E9DA0C522006858000EB80A /* Synchronized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9DA0C422006858000EB80A /* Synchronized.swift */; };\n\t\t1E9DA0C622006858000EB80A /* Synchronized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9DA0C422006858000EB80A /* Synchronized.swift */; };\n\t\t1E9DA0C722006858000EB80A /* Synchronized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9DA0C422006858000EB80A /* Synchronized.swift */; };\n\t\t25F6ECBC1F48C366008552FA /* Maybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25F6ECBB1F48C366008552FA /* Maybe.swift */; };\n\t\t25F6ECBE1F48C373008552FA /* Completable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25F6ECBD1F48C373008552FA /* Completable.swift */; };\n\t\t25F6ECC01F48C37C008552FA /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25F6ECBF1F48C37C008552FA /* Single.swift */; };\n\t\t271A97441CFC9F7B00D64125 /* UIViewController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271A97421CFC99FE00D64125 /* UIViewController+RxTests.swift */; };\n\t\t4583D8231FE94BBA00AA1BB1 /* Recorded+Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4583D8211FE94BB100AA1BB1 /* Recorded+Event.swift */; };\n\t\t4C5213AA225D41E60079FC77 /* CompactMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5213A9225D41E60079FC77 /* CompactMap.swift */; };\n\t\t4C5213AE225E224F0079FC77 /* Observable+CompactMapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5213AB225E20350079FC77 /* Observable+CompactMapTests.swift */; };\n\t\t4C5213AF225E22500079FC77 /* Observable+CompactMapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5213AB225E20350079FC77 /* Observable+CompactMapTests.swift */; };\n\t\t4C5213B0225E22510079FC77 /* Observable+CompactMapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5213AB225E20350079FC77 /* Observable+CompactMapTests.swift */; };\n\t\t4C8DE0E220D54545003E2D8A /* DisposeBagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8DE0E120D54545003E2D8A /* DisposeBagTest.swift */; };\n\t\t4C8DE0E320D54545003E2D8A /* DisposeBagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8DE0E120D54545003E2D8A /* DisposeBagTest.swift */; };\n\t\t4C8DE0E420D54545003E2D8A /* DisposeBagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8DE0E120D54545003E2D8A /* DisposeBagTest.swift */; };\n\t\t504540C924196D960098665F /* WKWebView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540C824196D960098665F /* WKWebView+Rx.swift */; };\n\t\t504540CB24196EB10098665F /* WKWebView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540CA24196EB10098665F /* WKWebView+RxTests.swift */; };\n\t\t504540CC24196EB10098665F /* WKWebView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540CA24196EB10098665F /* WKWebView+RxTests.swift */; };\n\t\t504540D0241971E80098665F /* DelegateProxyTest+WebKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540CF241971E70098665F /* DelegateProxyTest+WebKit.swift */; };\n\t\t504540D1241971E80098665F /* DelegateProxyTest+WebKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540CF241971E70098665F /* DelegateProxyTest+WebKit.swift */; };\n\t\t54700CA01CE37E1800EF3A8F /* UINavigationItem+RxTests.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */; };\n\t\t54700CA11CE37E1900EF3A8F /* UINavigationItem+RxTests.swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */; };\n\t\t601AE3DA1EE24E4F00617386 /* SwiftSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 601AE3D91EE24E4F00617386 /* SwiftSupport.swift */; };\n\t\t6A7D2CD423BBDBDC0038576E /* ReplayRelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D2CD323BBDBDC0038576E /* ReplayRelayTests.swift */; };\n\t\t6A7D2CD523BBDBDC0038576E /* ReplayRelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D2CD323BBDBDC0038576E /* ReplayRelayTests.swift */; };\n\t\t6A7D2CD623BBDBDC0038576E /* ReplayRelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7D2CD323BBDBDC0038576E /* ReplayRelayTests.swift */; };\n\t\t6A94254A23AFC2F300B7A24C /* ReplayRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A94254923AFC2F300B7A24C /* ReplayRelay.swift */; };\n\t\t78067D1125164938007CB7EE /* NSTextView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 927A78C82117BCB400A45638 /* NSTextView+RxTests.swift */; };\n\t\t7846F56624F83AF400A39919 /* Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7846F56524F83AF400A39919 /* Infallible.swift */; };\n\t\t786DED6324F83DE5008C4FAC /* ObservableConvertibleType+Infallible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED6224F83DE5008C4FAC /* ObservableConvertibleType+Infallible.swift */; };\n\t\t786DED6924F8415B008C4FAC /* Infallible+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED6824F8415B008C4FAC /* Infallible+Zip+arity.swift */; };\n\t\t786DED6C24F844BC008C4FAC /* Infallible+CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED6B24F844BC008C4FAC /* Infallible+CombineLatest+arity.swift */; };\n\t\t786DED6E24F84623008C4FAC /* Infallible+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED6D24F84623008C4FAC /* Infallible+Operators.swift */; };\n\t\t786DED7024F847BF008C4FAC /* Infallible+Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED6F24F847BF008C4FAC /* Infallible+Create.swift */; };\n\t\t786DED7224F849F3008C4FAC /* Infallible+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786DED7124F849F3008C4FAC /* Infallible+Bind.swift */; };\n\t\t788DCE5D24CB8249005B8F8C /* Decode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 788DCE5C24CB8249005B8F8C /* Decode.swift */; };\n\t\t788DCE5F24CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 788DCE5E24CB8512005B8F8C /* Observable+DecodeTests.swift */; };\n\t\t788DCE6024CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 788DCE5E24CB8512005B8F8C /* Observable+DecodeTests.swift */; };\n\t\t788DCE6124CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 788DCE5E24CB8512005B8F8C /* Observable+DecodeTests.swift */; };\n\t\t78B6157523B69F49009C2AD9 /* Binder.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E65EFA1F6E91D1004478C3 /* Binder.swift */; };\n\t\t78B6157723B6A035009C2AD9 /* Binder+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B6157623B6A035009C2AD9 /* Binder+Tests.swift */; };\n\t\t78C385CE25685076005E39B3 /* Infallible+BindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C385CD25685076005E39B3 /* Infallible+BindTests.swift */; };\n\t\t78C385CF25685076005E39B3 /* Infallible+BindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C385CD25685076005E39B3 /* Infallible+BindTests.swift */; };\n\t\t78C385EB256859DC005E39B3 /* Infallible+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C385EA256859DC005E39B3 /* Infallible+Tests.swift */; };\n\t\t78C385EC256859DC005E39B3 /* Infallible+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C385EA256859DC005E39B3 /* Infallible+Tests.swift */; };\n\t\t78F2D93E24C8D35700D13F0C /* RxWKNavigationDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504540CD2419701D0098665F /* RxWKNavigationDelegateProxy.swift */; };\n\t\t7EDBAEB41C89B1A6006CBE67 /* UITabBarItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */; };\n\t\t7EDBAEC31C89BCB9006CBE67 /* UITabBarItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */; };\n\t\t7F600F411C5D0C6E00535B1D /* UIRefreshControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */; };\n\t\t819C2F091F2FBC7F009104B6 /* First.swift in Sources */ = {isa = PBXBuildFile; fileRef = 819C2F081F2FBC7F009104B6 /* First.swift */; };\n\t\t842A5A2C1C357F92003568D5 /* NSTextStorage+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */; };\n\t\t844BC8AC1CE4FA6300F5C7CB /* RxPickerViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BC8AA1CE4FA5600F5C7CB /* RxPickerViewDelegateProxy.swift */; };\n\t\t844BC8B41CE4FD7500F5C7CB /* UIPickerView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BC8B31CE4FD7500F5C7CB /* UIPickerView+Rx.swift */; };\n\t\t844BC8BB1CE5024500F5C7CB /* UIPickerView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 844BC8B71CE5023200F5C7CB /* UIPickerView+RxTests.swift */; };\n\t\t846436E31C9AF65B0035B40D /* RxSearchControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 846436E11C9AF64C0035B40D /* RxSearchControllerDelegateProxy.swift */; };\n\t\t84C225A31C33F00B008724EC /* RxTextStorageDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84C225A21C33F00B008724EC /* RxTextStorageDelegateProxy.swift */; };\n\t\t84E4D3921C9AFD3400ADFDC9 /* UISearchController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E4D3901C9AFCD500ADFDC9 /* UISearchController+Rx.swift */; };\n\t\t84E4D3961C9B011000ADFDC9 /* UISearchController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E4D3951C9B011000ADFDC9 /* UISearchController+RxTests.swift */; };\n\t\t88718CFE1CE5D80000D88D60 /* UITabBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88718CFD1CE5D80000D88D60 /* UITabBar+Rx.swift */; };\n\t\t88718D011CE5DE2600D88D60 /* UITabBar+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88718D001CE5DE2500D88D60 /* UITabBar+RxTests.swift */; };\n\t\t88718D021CE5DE2600D88D60 /* UITabBar+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88718D001CE5DE2500D88D60 /* UITabBar+RxTests.swift */; };\n\t\t88D98F2E1CE7549A00D50457 /* RxTabBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D98F2D1CE7549A00D50457 /* RxTabBarDelegateProxy.swift */; };\n\t\t914FCD671CCDB82E0058B304 /* UIPageControl+RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914FCD661CCDB82E0058B304 /* UIPageControl+RxTest.swift */; };\n\t\t914FCD681CCDB82E0058B304 /* UIPageControl+RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914FCD661CCDB82E0058B304 /* UIPageControl+RxTest.swift */; };\n\t\t9BA1CBD31C0F7D550044B50A /* UIActivityIndicatorView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */; };\n\t\tA20CC6C9259F3FE700370AE3 /* WithUnretained.swift in Sources */ = {isa = PBXBuildFile; fileRef = A20CC6C8259F3FE700370AE3 /* WithUnretained.swift */; };\n\t\tA20CC6EA259F40A100370AE3 /* Observable+WithUnretainedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A20CC6D4259F408100370AE3 /* Observable+WithUnretainedTests.swift */; };\n\t\tA20CC6F5259F40A100370AE3 /* Observable+WithUnretainedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A20CC6D4259F408100370AE3 /* Observable+WithUnretainedTests.swift */; };\n\t\tA20CC6F6259F40A200370AE3 /* Observable+WithUnretainedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A20CC6D4259F408100370AE3 /* Observable+WithUnretainedTests.swift */; };\n\t\tA2690E7D22688CAE0032C00E /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C809396D1B8A71760088E94D /* RxCocoa.framework */; };\n\t\tA2690E7E22688CAE0032C00E /* RxBlocking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8093BC71B8A71F00088E94D /* RxBlocking.framework */; };\n\t\tA2690E7F22688CAE0032C00E /* RxTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C88FA50C1C25C44800CCFEA4 /* RxTest.framework */; };\n\t\tA2690E8022688CAE0032C00E /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2897D53225CA1E7004EA481 /* RxRelay.framework */; };\n\t\tA2690E8122688CB50032C00E /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A56AD71AD7424700B4673B /* RxSwift.framework */; };\n\t\tA2690E8222688CB50032C00E /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C809396D1B8A71760088E94D /* RxCocoa.framework */; };\n\t\tA2690E8322688CB50032C00E /* RxBlocking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8093BC71B8A71F00088E94D /* RxBlocking.framework */; };\n\t\tA2690E8422688CB50032C00E /* RxTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C88FA50C1C25C44800CCFEA4 /* RxTest.framework */; };\n\t\tA2690E8522688CB50032C00E /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2897D53225CA1E7004EA481 /* RxRelay.framework */; };\n\t\tA2690E8622688CB80032C00E /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A56AD71AD7424700B4673B /* RxSwift.framework */; };\n\t\tA2690E8722688CB80032C00E /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C809396D1B8A71760088E94D /* RxCocoa.framework */; };\n\t\tA2690E8822688CB80032C00E /* RxBlocking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8093BC71B8A71F00088E94D /* RxBlocking.framework */; };\n\t\tA2690E8922688CB80032C00E /* RxTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C88FA50C1C25C44800CCFEA4 /* RxTest.framework */; };\n\t\tA2690E8A22688CB80032C00E /* RxRelay.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2897D53225CA1E7004EA481 /* RxRelay.framework */; };\n\t\tA2897D57225CA236004EA481 /* PublishRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B0F7101F530CA700548EBE /* PublishRelay.swift */; };\n\t\tA2897D58225CA236004EA481 /* BehaviorRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C8BCCE1F8944B800501D4D /* BehaviorRelay.swift */; };\n\t\tA2897D62225CA3F3004EA481 /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2897D61225CA3F3004EA481 /* Observable+Bind.swift */; };\n\t\tA2897D66225D0182004EA481 /* PublishRelay+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2897D65225D0182004EA481 /* PublishRelay+Signal.swift */; };\n\t\tA2897D69225D023A004EA481 /* Utils.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2897D68225D023A004EA481 /* Utils.swift */; };\n\t\tA2FD4E9D225D050A00288525 /* Observable+RelayBindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD4E9B225D04FF00288525 /* Observable+RelayBindTests.swift */; };\n\t\tA2FD4E9E225D050B00288525 /* Observable+RelayBindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD4E9B225D04FF00288525 /* Observable+RelayBindTests.swift */; };\n\t\tA2FD4E9F225D050B00288525 /* Observable+RelayBindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2FD4E9B225D04FF00288525 /* Observable+RelayBindTests.swift */; };\n\t\tA520FFF71F0D258E00573734 /* RxPickerViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = A520FFF61F0D258E00573734 /* RxPickerViewDataSourceType.swift */; };\n\t\tA520FFFC1F0D291500573734 /* RxPickerViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = A520FFFB1F0D291500573734 /* RxPickerViewDataSourceProxy.swift */; };\n\t\tA5CD038A1F1660F40005A376 /* RxPickerViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CD03891F1660F40005A376 /* RxPickerViewAdapter.swift */; };\n\t\tB44D73EC1EE6D4A300EBFBE8 /* UIViewController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 271A97421CFC99FE00D64125 /* UIViewController+RxTests.swift */; };\n\t\tB562478F203515DD00D3EE75 /* RxCollectionViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B562478D2035154900D3EE75 /* RxCollectionViewDataSourcePrefetchingProxy.swift */; };\n\t\tB5624794203532F500D3EE75 /* RxTableViewDataSourcePrefetchingProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5624793203532F500D3EE75 /* RxTableViewDataSourcePrefetchingProxy.swift */; };\n\t\tC801DE361F6EAD3C008DB060 /* SingleTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE351F6EAD3C008DB060 /* SingleTest.swift */; };\n\t\tC801DE371F6EAD3C008DB060 /* SingleTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE351F6EAD3C008DB060 /* SingleTest.swift */; };\n\t\tC801DE381F6EAD3C008DB060 /* SingleTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE351F6EAD3C008DB060 /* SingleTest.swift */; };\n\t\tC801DE3A1F6EAD48008DB060 /* MaybeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE391F6EAD48008DB060 /* MaybeTest.swift */; };\n\t\tC801DE3B1F6EAD48008DB060 /* MaybeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE391F6EAD48008DB060 /* MaybeTest.swift */; };\n\t\tC801DE3C1F6EAD48008DB060 /* MaybeTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE391F6EAD48008DB060 /* MaybeTest.swift */; };\n\t\tC801DE3E1F6EAD57008DB060 /* CompletableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE3D1F6EAD57008DB060 /* CompletableTest.swift */; };\n\t\tC801DE3F1F6EAD57008DB060 /* CompletableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE3D1F6EAD57008DB060 /* CompletableTest.swift */; };\n\t\tC801DE401F6EAD57008DB060 /* CompletableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE3D1F6EAD57008DB060 /* CompletableTest.swift */; };\n\t\tC801DE451F6EBB32008DB060 /* ObservableType+PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE411F6EBB29008DB060 /* ObservableType+PrimitiveSequence.swift */; };\n\t\tC801DE4A1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE491F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift */; };\n\t\tC801DE4B1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE491F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift */; };\n\t\tC801DE4C1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C801DE491F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift */; };\n\t\tC8091C4E1FAA345C001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8091C4D1FAA345C001DB32A /* ObservableConvertibleType+SharedSequence.swift */; };\n\t\tC8091C531FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8091C521FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift */; };\n\t\tC8091C541FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8091C521FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift */; };\n\t\tC8091C551FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8091C521FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift */; };\n\t\tC8091C571FAA39C1001DB32A /* ControlEvent+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8091C561FAA39C1001DB32A /* ControlEvent+Signal.swift */; };\n\t\tC8093CC51B8A72BE0088E94D /* Cancelable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C491B8A72BE0088E94D /* Cancelable.swift */; };\n\t\tC8093CC71B8A72BE0088E94D /* AsyncLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C4B1B8A72BE0088E94D /* AsyncLock.swift */; };\n\t\tC8093CC91B8A72BE0088E94D /* Lock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C4C1B8A72BE0088E94D /* Lock.swift */; };\n\t\tC8093CCB1B8A72BE0088E94D /* ConnectableObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C4D1B8A72BE0088E94D /* ConnectableObservableType.swift */; };\n\t\tC8093CD31B8A72BE0088E94D /* Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C521B8A72BE0088E94D /* Disposable.swift */; };\n\t\tC8093CD51B8A72BE0088E94D /* AnonymousDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C541B8A72BE0088E94D /* AnonymousDisposable.swift */; };\n\t\tC8093CD71B8A72BE0088E94D /* BinaryDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C551B8A72BE0088E94D /* BinaryDisposable.swift */; };\n\t\tC8093CDB1B8A72BE0088E94D /* CompositeDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C571B8A72BE0088E94D /* CompositeDisposable.swift */; };\n\t\tC8093CDD1B8A72BE0088E94D /* DisposeBag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C581B8A72BE0088E94D /* DisposeBag.swift */; };\n\t\tC8093CDF1B8A72BE0088E94D /* DisposeBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C591B8A72BE0088E94D /* DisposeBase.swift */; };\n\t\tC8093CE51B8A72BE0088E94D /* NopDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5C1B8A72BE0088E94D /* NopDisposable.swift */; };\n\t\tC8093CE71B8A72BE0088E94D /* ScheduledDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */; };\n\t\tC8093CEB1B8A72BE0088E94D /* SerialDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */; };\n\t\tC8093CED1B8A72BE0088E94D /* SingleAssignmentDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C601B8A72BE0088E94D /* SingleAssignmentDisposable.swift */; };\n\t\tC8093CF31B8A72BE0088E94D /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C631B8A72BE0088E94D /* Errors.swift */; };\n\t\tC8093CF51B8A72BE0088E94D /* Event.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C641B8A72BE0088E94D /* Event.swift */; };\n\t\tC8093CF71B8A72BE0088E94D /* ImmediateSchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C651B8A72BE0088E94D /* ImmediateSchedulerType.swift */; };\n\t\tC8093CFB1B8A72BE0088E94D /* ObservableType+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C671B8A72BE0088E94D /* ObservableType+Extensions.swift */; };\n\t\tC8093CFD1B8A72BE0088E94D /* Observable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C681B8A72BE0088E94D /* Observable.swift */; };\n\t\tC8093D651B8A72BE0088E94D /* ObservableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093C9E1B8A72BE0088E94D /* ObservableType.swift */; };\n\t\tC8093D691B8A72BE0088E94D /* AnyObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CA01B8A72BE0088E94D /* AnyObserver.swift */; };\n\t\tC8093D6B1B8A72BE0088E94D /* AnonymousObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CA21B8A72BE0088E94D /* AnonymousObserver.swift */; };\n\t\tC8093D731B8A72BE0088E94D /* ObserverBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CA61B8A72BE0088E94D /* ObserverBase.swift */; };\n\t\tC8093D791B8A72BE0088E94D /* TailRecursiveSink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CA91B8A72BE0088E94D /* TailRecursiveSink.swift */; };\n\t\tC8093D7D1B8A72BE0088E94D /* ObserverType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CAB1B8A72BE0088E94D /* ObserverType.swift */; };\n\t\tC8093D851B8A72BE0088E94D /* Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CAF1B8A72BE0088E94D /* Rx.swift */; };\n\t\tC8093D871B8A72BE0088E94D /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB01B8A72BE0088E94D /* RxMutableBox.swift */; };\n\t\tC8093D8D1B8A72BE0088E94D /* SchedulerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB31B8A72BE0088E94D /* SchedulerType.swift */; };\n\t\tC8093D8F1B8A72BE0088E94D /* ConcurrentDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB51B8A72BE0088E94D /* ConcurrentDispatchQueueScheduler.swift */; };\n\t\tC8093D931B8A72BE0088E94D /* MainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB71B8A72BE0088E94D /* MainScheduler.swift */; };\n\t\tC8093D951B8A72BE0088E94D /* OperationQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB81B8A72BE0088E94D /* OperationQueueScheduler.swift */; };\n\t\tC8093D971B8A72BE0088E94D /* RecursiveScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB91B8A72BE0088E94D /* RecursiveScheduler.swift */; };\n\t\tC8093D9B1B8A72BE0088E94D /* SchedulerServices+Emulation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CBB1B8A72BE0088E94D /* SchedulerServices+Emulation.swift */; };\n\t\tC8093D9D1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CBC1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift */; };\n\t\tC8093D9F1B8A72BE0088E94D /* BehaviorSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CBE1B8A72BE0088E94D /* BehaviorSubject.swift */; };\n\t\tC8093DA11B8A72BE0088E94D /* PublishSubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CBF1B8A72BE0088E94D /* PublishSubject.swift */; };\n\t\tC8093DA31B8A72BE0088E94D /* ReplaySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CC01B8A72BE0088E94D /* ReplaySubject.swift */; };\n\t\tC8093DA51B8A72BE0088E94D /* SubjectType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CC11B8A72BE0088E94D /* SubjectType.swift */; };\n\t\tC8093EE11B8A732E0088E94D /* DelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093E8B1B8A732E0088E94D /* DelegateProxy.swift */; };\n\t\tC8093EE31B8A732E0088E94D /* DelegateProxyType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093E8C1B8A732E0088E94D /* DelegateProxyType.swift */; };\n\t\tC8093EFD1B8A732E0088E94D /* RxTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093E9C1B8A732E0088E94D /* RxTarget.swift */; };\n\t\tC8093F5E1B8A73A20088E94D /* ObservableConvertibleType+Blocking.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093F581B8A73A20088E94D /* ObservableConvertibleType+Blocking.swift */; };\n\t\tC80D338F1B91EF9E0014629D /* Observable+Bind.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80D338E1B91EF9E0014629D /* Observable+Bind.swift */; };\n\t\tC80EEC341D42D06E00131C39 /* DispatchQueueConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80EEC331D42D06E00131C39 /* DispatchQueueConfiguration.swift */; };\n\t\tC8165ACB21891BBF00494BEF /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8165ACA21891BBF00494BEF /* AtomicInt.swift */; };\n\t\tC8165ACD21891BE400494BEF /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8165ACC21891BE400494BEF /* AtomicInt.swift */; };\n\t\tC8165AD521891DBF00494BEF /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8165AD421891DBE00494BEF /* AtomicInt.swift */; };\n\t\tC8165AD621891DBF00494BEF /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8165AD421891DBE00494BEF /* AtomicInt.swift */; };\n\t\tC8165AD721891DBF00494BEF /* AtomicInt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8165AD421891DBE00494BEF /* AtomicInt.swift */; };\n\t\tC81A097D1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81A097C1E6C27A100900B3B /* Observable+ZipTests.swift */; };\n\t\tC81A097E1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81A097C1E6C27A100900B3B /* Observable+ZipTests.swift */; };\n\t\tC81A097F1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81A097C1E6C27A100900B3B /* Observable+ZipTests.swift */; };\n\t\tC81A09871E6C702700900B3B /* PrimitiveSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81A09861E6C702700900B3B /* PrimitiveSequence.swift */; };\n\t\tC81B6AAA1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA81DB2C15C0047CF86 /* Platform.Darwin.swift */; };\n\t\tC81B6AAB1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA81DB2C15C0047CF86 /* Platform.Darwin.swift */; };\n\t\tC81B6AAC1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA81DB2C15C0047CF86 /* Platform.Darwin.swift */; };\n\t\tC81B6AAD1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA91DB2C15C0047CF86 /* Platform.Linux.swift */; };\n\t\tC81B6AAE1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA91DB2C15C0047CF86 /* Platform.Linux.swift */; };\n\t\tC81B6AAF1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81B6AA91DB2C15C0047CF86 /* Platform.Linux.swift */; };\n\t\tC820A82C1EB4DA5900D431BC /* Map.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7E61EB4DA5900D431BC /* Map.swift */; };\n\t\tC820A8301EB4DA5900D431BC /* Switch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7E71EB4DA5900D431BC /* Switch.swift */; };\n\t\tC820A8341EB4DA5900D431BC /* Delay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7E81EB4DA5900D431BC /* Delay.swift */; };\n\t\tC820A8381EB4DA5900D431BC /* Timeout.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7E91EB4DA5900D431BC /* Timeout.swift */; };\n\t\tC820A83C1EB4DA5900D431BC /* Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7EA1EB4DA5900D431BC /* Window.swift */; };\n\t\tC820A8401EB4DA5900D431BC /* Buffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7EB1EB4DA5900D431BC /* Buffer.swift */; };\n\t\tC820A8441EB4DA5900D431BC /* DelaySubscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7EC1EB4DA5900D431BC /* DelaySubscription.swift */; };\n\t\tC820A8481EB4DA5900D431BC /* Skip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7ED1EB4DA5900D431BC /* Skip.swift */; };\n\t\tC820A84C1EB4DA5900D431BC /* Take.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7EE1EB4DA5900D431BC /* Take.swift */; };\n\t\tC820A8501EB4DA5900D431BC /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7EF1EB4DA5900D431BC /* Timer.swift */; };\n\t\tC820A8541EB4DA5900D431BC /* Sample.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F01EB4DA5900D431BC /* Sample.swift */; };\n\t\tC820A8581EB4DA5900D431BC /* Debounce.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F11EB4DA5900D431BC /* Debounce.swift */; };\n\t\tC820A85C1EB4DA5A00D431BC /* Throttle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F21EB4DA5900D431BC /* Throttle.swift */; };\n\t\tC820A8601EB4DA5A00D431BC /* Generate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F31EB4DA5900D431BC /* Generate.swift */; };\n\t\tC820A8641EB4DA5A00D431BC /* GroupBy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F41EB4DA5900D431BC /* GroupBy.swift */; };\n\t\tC820A8681EB4DA5A00D431BC /* SingleAsync.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F51EB4DA5900D431BC /* SingleAsync.swift */; };\n\t\tC820A86C1EB4DA5A00D431BC /* ElementAt.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F61EB4DA5900D431BC /* ElementAt.swift */; };\n\t\tC820A8701EB4DA5A00D431BC /* Merge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F71EB4DA5900D431BC /* Merge.swift */; };\n\t\tC820A8741EB4DA5A00D431BC /* SkipWhile.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F81EB4DA5900D431BC /* SkipWhile.swift */; };\n\t\tC820A8781EB4DA5A00D431BC /* TakeLast.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7F91EB4DA5900D431BC /* TakeLast.swift */; };\n\t\tC820A8801EB4DA5A00D431BC /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7FB1EB4DA5900D431BC /* Filter.swift */; };\n\t\tC820A8841EB4DA5A00D431BC /* Dematerialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7FC1EB4DA5900D431BC /* Dematerialize.swift */; };\n\t\tC820A8881EB4DA5A00D431BC /* Materialize.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7FD1EB4DA5900D431BC /* Materialize.swift */; };\n\t\tC820A88C1EB4DA5A00D431BC /* DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7FE1EB4DA5900D431BC /* DefaultIfEmpty.swift */; };\n\t\tC820A8901EB4DA5A00D431BC /* Scan.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A7FF1EB4DA5900D431BC /* Scan.swift */; };\n\t\tC820A8941EB4DA5A00D431BC /* RetryWhen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8001EB4DA5900D431BC /* RetryWhen.swift */; };\n\t\tC820A8981EB4DA5A00D431BC /* Catch.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8011EB4DA5900D431BC /* Catch.swift */; };\n\t\tC820A89C1EB4DA5A00D431BC /* StartWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8021EB4DA5900D431BC /* StartWith.swift */; };\n\t\tC820A8A01EB4DA5A00D431BC /* Do.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8031EB4DA5900D431BC /* Do.swift */; };\n\t\tC820A8A41EB4DA5A00D431BC /* DistinctUntilChanged.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8041EB4DA5900D431BC /* DistinctUntilChanged.swift */; };\n\t\tC820A8A81EB4DA5A00D431BC /* WithLatestFrom.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8051EB4DA5900D431BC /* WithLatestFrom.swift */; };\n\t\tC820A8AC1EB4DA5A00D431BC /* Amb.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8061EB4DA5900D431BC /* Amb.swift */; };\n\t\tC820A8B01EB4DA5A00D431BC /* SkipUntil.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8071EB4DA5900D431BC /* SkipUntil.swift */; };\n\t\tC820A8B41EB4DA5A00D431BC /* TakeWithPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8081EB4DA5900D431BC /* TakeWithPredicate.swift */; };\n\t\tC820A8B81EB4DA5A00D431BC /* Concat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8091EB4DA5900D431BC /* Concat.swift */; };\n\t\tC820A8BC1EB4DA5A00D431BC /* SwitchIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80A1EB4DA5900D431BC /* SwitchIfEmpty.swift */; };\n\t\tC820A8C01EB4DA5A00D431BC /* Zip+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80B1EB4DA5900D431BC /* Zip+Collection.swift */; };\n\t\tC820A8C41EB4DA5A00D431BC /* CombineLatest+Collection.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80C1EB4DA5900D431BC /* CombineLatest+Collection.swift */; };\n\t\tC820A8C81EB4DA5A00D431BC /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80D1EB4DA5900D431BC /* Debug.swift */; };\n\t\tC820A8CC1EB4DA5A00D431BC /* Optional.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80E1EB4DA5900D431BC /* Optional.swift */; };\n\t\tC820A8D01EB4DA5A00D431BC /* Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A80F1EB4DA5900D431BC /* Sequence.swift */; };\n\t\tC820A8D41EB4DA5A00D431BC /* Range.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8101EB4DA5900D431BC /* Range.swift */; };\n\t\tC820A8D81EB4DA5A00D431BC /* Using.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8111EB4DA5900D431BC /* Using.swift */; };\n\t\tC820A8DC1EB4DA5A00D431BC /* Repeat.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8121EB4DA5900D431BC /* Repeat.swift */; };\n\t\tC820A8E01EB4DA5A00D431BC /* Deferred.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8131EB4DA5900D431BC /* Deferred.swift */; };\n\t\tC820A8E41EB4DA5A00D431BC /* Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8141EB4DA5900D431BC /* Error.swift */; };\n\t\tC820A8E81EB4DA5A00D431BC /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8151EB4DA5900D431BC /* Just.swift */; };\n\t\tC820A8EC1EB4DA5A00D431BC /* Never.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8161EB4DA5900D431BC /* Never.swift */; };\n\t\tC820A8F01EB4DA5A00D431BC /* Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8171EB4DA5900D431BC /* Empty.swift */; };\n\t\tC820A8F41EB4DA5A00D431BC /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8181EB4DA5900D431BC /* Create.swift */; };\n\t\tC820A8F81EB4DA5A00D431BC /* SubscribeOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8191EB4DA5900D431BC /* SubscribeOn.swift */; };\n\t\tC820A8FC1EB4DA5A00D431BC /* ObserveOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A81A1EB4DA5900D431BC /* ObserveOn.swift */; };\n\t\tC820A9081EB4DA5A00D431BC /* Multicast.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A81D1EB4DA5900D431BC /* Multicast.swift */; };\n\t\tC820A9101EB4DA5A00D431BC /* Reduce.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A81F1EB4DA5900D431BC /* Reduce.swift */; };\n\t\tC820A9141EB4DA5A00D431BC /* ToArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8201EB4DA5900D431BC /* ToArray.swift */; };\n\t\tC820A9181EB4DA5A00D431BC /* AsMaybe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8211EB4DA5900D431BC /* AsMaybe.swift */; };\n\t\tC820A91C1EB4DA5A00D431BC /* AsSingle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8221EB4DA5900D431BC /* AsSingle.swift */; };\n\t\tC820A9201EB4DA5A00D431BC /* AddRef.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8231EB4DA5900D431BC /* AddRef.swift */; };\n\t\tC820A9241EB4DA5A00D431BC /* CombineLatest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8241EB4DA5900D431BC /* CombineLatest.swift */; };\n\t\tC820A9281EB4DA5A00D431BC /* CombineLatest+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8251EB4DA5900D431BC /* CombineLatest+arity.swift */; };\n\t\tC820A9301EB4DA5A00D431BC /* Producer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8271EB4DA5900D431BC /* Producer.swift */; };\n\t\tC820A9341EB4DA5A00D431BC /* Sink.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8281EB4DA5900D431BC /* Sink.swift */; };\n\t\tC820A9381EB4DA5A00D431BC /* Zip.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A8291EB4DA5900D431BC /* Zip.swift */; };\n\t\tC820A93C1EB4DA5A00D431BC /* Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A82A1EB4DA5900D431BC /* Zip+arity.swift */; };\n\t\tC820A94A1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9491EB4E75E00D431BC /* Observable+AmbTests.swift */; };\n\t\tC820A94B1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9491EB4E75E00D431BC /* Observable+AmbTests.swift */; };\n\t\tC820A94C1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9491EB4E75E00D431BC /* Observable+AmbTests.swift */; };\n\t\tC820A94E1EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A94D1EB4EC3C00D431BC /* Observable+ReduceTests.swift */; };\n\t\tC820A94F1EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A94D1EB4EC3C00D431BC /* Observable+ReduceTests.swift */; };\n\t\tC820A9501EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A94D1EB4EC3C00D431BC /* Observable+ReduceTests.swift */; };\n\t\tC820A9521EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9511EB4ECC000D431BC /* Observable+ToArrayTests.swift */; };\n\t\tC820A9531EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9511EB4ECC000D431BC /* Observable+ToArrayTests.swift */; };\n\t\tC820A9541EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9511EB4ECC000D431BC /* Observable+ToArrayTests.swift */; };\n\t\tC820A9561EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */; };\n\t\tC820A9571EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */; };\n\t\tC820A9581EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */; };\n\t\tC820A9621EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9611EB4EFD300D431BC /* Observable+ObserveOnTests.swift */; };\n\t\tC820A9631EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9611EB4EFD300D431BC /* Observable+ObserveOnTests.swift */; };\n\t\tC820A9641EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9611EB4EFD300D431BC /* Observable+ObserveOnTests.swift */; };\n\t\tC820A9661EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9651EB4F39500D431BC /* Observable+SubscribeOnTests.swift */; };\n\t\tC820A9671EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9651EB4F39500D431BC /* Observable+SubscribeOnTests.swift */; };\n\t\tC820A9681EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9651EB4F39500D431BC /* Observable+SubscribeOnTests.swift */; };\n\t\tC820A96A1EB4F64800D431BC /* Observable+JustTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9691EB4F64800D431BC /* Observable+JustTests.swift */; };\n\t\tC820A96B1EB4F64800D431BC /* Observable+JustTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9691EB4F64800D431BC /* Observable+JustTests.swift */; };\n\t\tC820A96C1EB4F64800D431BC /* Observable+JustTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9691EB4F64800D431BC /* Observable+JustTests.swift */; };\n\t\tC820A96E1EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A96D1EB4F7AC00D431BC /* Observable+SequenceTests.swift */; };\n\t\tC820A96F1EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A96D1EB4F7AC00D431BC /* Observable+SequenceTests.swift */; };\n\t\tC820A9701EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A96D1EB4F7AC00D431BC /* Observable+SequenceTests.swift */; };\n\t\tC820A9721EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9711EB4F84000D431BC /* Observable+OptionalTests.swift */; };\n\t\tC820A9731EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9711EB4F84000D431BC /* Observable+OptionalTests.swift */; };\n\t\tC820A9741EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9711EB4F84000D431BC /* Observable+OptionalTests.swift */; };\n\t\tC820A9761EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9751EB4F92100D431BC /* Observable+GenerateTests.swift */; };\n\t\tC820A9771EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9751EB4F92100D431BC /* Observable+GenerateTests.swift */; };\n\t\tC820A9781EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9751EB4F92100D431BC /* Observable+GenerateTests.swift */; };\n\t\tC820A97A1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9791EB4FA0800D431BC /* Observable+RangeTests.swift */; };\n\t\tC820A97B1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9791EB4FA0800D431BC /* Observable+RangeTests.swift */; };\n\t\tC820A97C1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9791EB4FA0800D431BC /* Observable+RangeTests.swift */; };\n\t\tC820A97E1EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A97D1EB4FA5A00D431BC /* Observable+RepeatTests.swift */; };\n\t\tC820A97F1EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A97D1EB4FA5A00D431BC /* Observable+RepeatTests.swift */; };\n\t\tC820A9801EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A97D1EB4FA5A00D431BC /* Observable+RepeatTests.swift */; };\n\t\tC820A9821EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9811EB4FB0400D431BC /* Observable+UsingTests.swift */; };\n\t\tC820A9831EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9811EB4FB0400D431BC /* Observable+UsingTests.swift */; };\n\t\tC820A9841EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9811EB4FB0400D431BC /* Observable+UsingTests.swift */; };\n\t\tC820A9861EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9851EB4FB5B00D431BC /* Observable+DebugTests.swift */; };\n\t\tC820A9871EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9851EB4FB5B00D431BC /* Observable+DebugTests.swift */; };\n\t\tC820A9881EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9851EB4FB5B00D431BC /* Observable+DebugTests.swift */; };\n\t\tC820A98A1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9891EB4FBD600D431BC /* Observable+CatchTests.swift */; };\n\t\tC820A98B1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9891EB4FBD600D431BC /* Observable+CatchTests.swift */; };\n\t\tC820A98C1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9891EB4FBD600D431BC /* Observable+CatchTests.swift */; };\n\t\tC820A98E1EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A98D1EB4FCC400D431BC /* Observable+SwitchTests.swift */; };\n\t\tC820A98F1EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A98D1EB4FCC400D431BC /* Observable+SwitchTests.swift */; };\n\t\tC820A9901EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A98D1EB4FCC400D431BC /* Observable+SwitchTests.swift */; };\n\t\tC820A9921EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9911EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift */; };\n\t\tC820A9931EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9911EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift */; };\n\t\tC820A9941EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9911EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift */; };\n\t\tC820A9961EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9951EB4FF7000D431BC /* Observable+ConcatTests.swift */; };\n\t\tC820A9971EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9951EB4FF7000D431BC /* Observable+ConcatTests.swift */; };\n\t\tC820A9981EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9951EB4FF7000D431BC /* Observable+ConcatTests.swift */; };\n\t\tC820A99A1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9991EB5001C00D431BC /* Observable+MergeTests.swift */; };\n\t\tC820A99B1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9991EB5001C00D431BC /* Observable+MergeTests.swift */; };\n\t\tC820A99C1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9991EB5001C00D431BC /* Observable+MergeTests.swift */; };\n\t\tC820A9A21EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A11EB5011700D431BC /* Observable+TakeUntilTests.swift */; };\n\t\tC820A9A31EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A11EB5011700D431BC /* Observable+TakeUntilTests.swift */; };\n\t\tC820A9A41EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A11EB5011700D431BC /* Observable+TakeUntilTests.swift */; };\n\t\tC820A9A61EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A51EB5056C00D431BC /* Observable+SkipUntilTests.swift */; };\n\t\tC820A9A71EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A51EB5056C00D431BC /* Observable+SkipUntilTests.swift */; };\n\t\tC820A9A81EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A51EB5056C00D431BC /* Observable+SkipUntilTests.swift */; };\n\t\tC820A9AA1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A91EB505A800D431BC /* Observable+WithLatestFromTests.swift */; };\n\t\tC820A9AB1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A91EB505A800D431BC /* Observable+WithLatestFromTests.swift */; };\n\t\tC820A9AC1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9A91EB505A800D431BC /* Observable+WithLatestFromTests.swift */; };\n\t\tC820A9AE1EB5073E00D431BC /* Observable+FilterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9AD1EB5073E00D431BC /* Observable+FilterTests.swift */; };\n\t\tC820A9AF1EB5073E00D431BC /* Observable+FilterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9AD1EB5073E00D431BC /* Observable+FilterTests.swift */; };\n\t\tC820A9B01EB5073E00D431BC /* Observable+FilterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9AD1EB5073E00D431BC /* Observable+FilterTests.swift */; };\n\t\tC820A9B21EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B11EB507D300D431BC /* Observable+TakeWhileTests.swift */; };\n\t\tC820A9B31EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B11EB507D300D431BC /* Observable+TakeWhileTests.swift */; };\n\t\tC820A9B41EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B11EB507D300D431BC /* Observable+TakeWhileTests.swift */; };\n\t\tC820A9B61EB5081400D431BC /* Observable+MapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B51EB5081400D431BC /* Observable+MapTests.swift */; };\n\t\tC820A9B71EB5081400D431BC /* Observable+MapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B51EB5081400D431BC /* Observable+MapTests.swift */; };\n\t\tC820A9B81EB5081400D431BC /* Observable+MapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B51EB5081400D431BC /* Observable+MapTests.swift */; };\n\t\tC820A9BA1EB5097700D431BC /* Observable+TakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B91EB5097700D431BC /* Observable+TakeTests.swift */; };\n\t\tC820A9BB1EB5097700D431BC /* Observable+TakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B91EB5097700D431BC /* Observable+TakeTests.swift */; };\n\t\tC820A9BC1EB5097700D431BC /* Observable+TakeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9B91EB5097700D431BC /* Observable+TakeTests.swift */; };\n\t\tC820A9BE1EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9BD1EB509B500D431BC /* Observable+TakeLastTests.swift */; };\n\t\tC820A9BF1EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9BD1EB509B500D431BC /* Observable+TakeLastTests.swift */; };\n\t\tC820A9C01EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9BD1EB509B500D431BC /* Observable+TakeLastTests.swift */; };\n\t\tC820A9C21EB509FC00D431BC /* Observable+SkipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C11EB509FC00D431BC /* Observable+SkipTests.swift */; };\n\t\tC820A9C31EB509FC00D431BC /* Observable+SkipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C11EB509FC00D431BC /* Observable+SkipTests.swift */; };\n\t\tC820A9C41EB509FC00D431BC /* Observable+SkipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C11EB509FC00D431BC /* Observable+SkipTests.swift */; };\n\t\tC820A9C61EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C51EB50A4200D431BC /* Observable+SkipWhileTests.swift */; };\n\t\tC820A9C71EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C51EB50A4200D431BC /* Observable+SkipWhileTests.swift */; };\n\t\tC820A9C81EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C51EB50A4200D431BC /* Observable+SkipWhileTests.swift */; };\n\t\tC820A9CA1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C91EB50A7100D431BC /* Observable+ElementAtTests.swift */; };\n\t\tC820A9CB1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C91EB50A7100D431BC /* Observable+ElementAtTests.swift */; };\n\t\tC820A9CC1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9C91EB50A7100D431BC /* Observable+ElementAtTests.swift */; };\n\t\tC820A9CE1EB50AD400D431BC /* Observable+SingleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9CD1EB50AD400D431BC /* Observable+SingleTests.swift */; };\n\t\tC820A9CF1EB50AD400D431BC /* Observable+SingleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9CD1EB50AD400D431BC /* Observable+SingleTests.swift */; };\n\t\tC820A9D01EB50AD400D431BC /* Observable+SingleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9CD1EB50AD400D431BC /* Observable+SingleTests.swift */; };\n\t\tC820A9D21EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */; };\n\t\tC820A9D31EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */; };\n\t\tC820A9D41EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */; };\n\t\tC820A9D61EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D51EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift */; };\n\t\tC820A9D71EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D51EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift */; };\n\t\tC820A9D81EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D51EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift */; };\n\t\tC820A9DA1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D91EB50CAA00D431BC /* Observable+DoOnTests.swift */; };\n\t\tC820A9DB1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D91EB50CAA00D431BC /* Observable+DoOnTests.swift */; };\n\t\tC820A9DC1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9D91EB50CAA00D431BC /* Observable+DoOnTests.swift */; };\n\t\tC820A9DE1EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9DD1EB50CF800D431BC /* Observable+ThrottleTests.swift */; };\n\t\tC820A9DF1EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9DD1EB50CF800D431BC /* Observable+ThrottleTests.swift */; };\n\t\tC820A9E01EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9DD1EB50CF800D431BC /* Observable+ThrottleTests.swift */; };\n\t\tC820A9E21EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E11EB50D6C00D431BC /* Observable+SampleTests.swift */; };\n\t\tC820A9E31EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E11EB50D6C00D431BC /* Observable+SampleTests.swift */; };\n\t\tC820A9E41EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E11EB50D6C00D431BC /* Observable+SampleTests.swift */; };\n\t\tC820A9E61EB50DB900D431BC /* Observable+TimerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E51EB50DB900D431BC /* Observable+TimerTests.swift */; };\n\t\tC820A9E71EB50DB900D431BC /* Observable+TimerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E51EB50DB900D431BC /* Observable+TimerTests.swift */; };\n\t\tC820A9E81EB50DB900D431BC /* Observable+TimerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E51EB50DB900D431BC /* Observable+TimerTests.swift */; };\n\t\tC820A9EA1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E91EB50E3400D431BC /* Observable+RetryWhenTests.swift */; };\n\t\tC820A9EB1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E91EB50E3400D431BC /* Observable+RetryWhenTests.swift */; };\n\t\tC820A9EC1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9E91EB50E3400D431BC /* Observable+RetryWhenTests.swift */; };\n\t\tC820A9EE1EB50EA100D431BC /* Observable+ScanTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9ED1EB50EA100D431BC /* Observable+ScanTests.swift */; };\n\t\tC820A9EF1EB50EA100D431BC /* Observable+ScanTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9ED1EB50EA100D431BC /* Observable+ScanTests.swift */; };\n\t\tC820A9F01EB50EA100D431BC /* Observable+ScanTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9ED1EB50EA100D431BC /* Observable+ScanTests.swift */; };\n\t\tC820A9F21EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F11EB5109300D431BC /* Observable+DefaultIfEmpty.swift */; };\n\t\tC820A9F31EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F11EB5109300D431BC /* Observable+DefaultIfEmpty.swift */; };\n\t\tC820A9F41EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F11EB5109300D431BC /* Observable+DefaultIfEmpty.swift */; };\n\t\tC820A9FA1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */; };\n\t\tC820A9FB1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */; };\n\t\tC820A9FC1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */; };\n\t\tC820A9FE1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9FD1EB5110E00D431BC /* Observable+DematerializeTests.swift */; };\n\t\tC820A9FF1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9FD1EB5110E00D431BC /* Observable+DematerializeTests.swift */; };\n\t\tC820AA001EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820A9FD1EB5110E00D431BC /* Observable+DematerializeTests.swift */; };\n\t\tC820AA021EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA011EB5134000D431BC /* Observable+DelaySubscriptionTests.swift */; };\n\t\tC820AA031EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA011EB5134000D431BC /* Observable+DelaySubscriptionTests.swift */; };\n\t\tC820AA041EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA011EB5134000D431BC /* Observable+DelaySubscriptionTests.swift */; };\n\t\tC820AA061EB5139C00D431BC /* Observable+BufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA051EB5139C00D431BC /* Observable+BufferTests.swift */; };\n\t\tC820AA071EB5139C00D431BC /* Observable+BufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA051EB5139C00D431BC /* Observable+BufferTests.swift */; };\n\t\tC820AA081EB5139C00D431BC /* Observable+BufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA051EB5139C00D431BC /* Observable+BufferTests.swift */; };\n\t\tC820AA0A1EB513C800D431BC /* Observable+WindowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA091EB513C800D431BC /* Observable+WindowTests.swift */; };\n\t\tC820AA0B1EB513C800D431BC /* Observable+WindowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA091EB513C800D431BC /* Observable+WindowTests.swift */; };\n\t\tC820AA0C1EB513C800D431BC /* Observable+WindowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA091EB513C800D431BC /* Observable+WindowTests.swift */; };\n\t\tC820AA0E1EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA0D1EB5140100D431BC /* Observable+TimeoutTests.swift */; };\n\t\tC820AA0F1EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA0D1EB5140100D431BC /* Observable+TimeoutTests.swift */; };\n\t\tC820AA101EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA0D1EB5140100D431BC /* Observable+TimeoutTests.swift */; };\n\t\tC820AA121EB5145200D431BC /* Observable+DelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA111EB5145200D431BC /* Observable+DelayTests.swift */; };\n\t\tC820AA131EB5145200D431BC /* Observable+DelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA111EB5145200D431BC /* Observable+DelayTests.swift */; };\n\t\tC820AA141EB5145200D431BC /* Observable+DelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C820AA111EB5145200D431BC /* Observable+DelayTests.swift */; };\n\t\tC822BACA1DB4058000F98810 /* Event+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BAC51DB4048F00F98810 /* Event+Test.swift */; };\n\t\tC822BACB1DB4058000F98810 /* Event+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BAC51DB4048F00F98810 /* Event+Test.swift */; };\n\t\tC822BACC1DB4058100F98810 /* Event+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BAC51DB4048F00F98810 /* Event+Test.swift */; };\n\t\tC822BACE1DB424EC00F98810 /* Reactive+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BACD1DB424EC00F98810 /* Reactive+Tests.swift */; };\n\t\tC822BACF1DB424EC00F98810 /* Reactive+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BACD1DB424EC00F98810 /* Reactive+Tests.swift */; };\n\t\tC822BAD01DB424EC00F98810 /* Reactive+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822BACD1DB424EC00F98810 /* Reactive+Tests.swift */; };\n\t\tC82A336B1E2C3343003A6044 /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */; };\n\t\tC82A336D1E2C3344003A6044 /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */; };\n\t\tC82FF0EF1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF0EE1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift */; };\n\t\tC82FF0F01F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF0EE1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift */; };\n\t\tC82FF0F11F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF0EE1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift */; };\n\t\tC8323A8E1E33FD5200CC0C7F /* Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8323A8D1E33FD5200CC0C7F /* Resources.swift */; };\n\t\tC8323A8F1E33FD5200CC0C7F /* Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8323A8D1E33FD5200CC0C7F /* Resources.swift */; };\n\t\tC8323A901E33FD5200CC0C7F /* Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8323A8D1E33FD5200CC0C7F /* Resources.swift */; };\n\t\tC834F6C21DB394E100C29244 /* Observable+BlockingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C834F6C11DB394E100C29244 /* Observable+BlockingTest.swift */; };\n\t\tC834F6C31DB394E100C29244 /* Observable+BlockingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C834F6C11DB394E100C29244 /* Observable+BlockingTest.swift */; };\n\t\tC834F6C41DB394E100C29244 /* Observable+BlockingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C834F6C11DB394E100C29244 /* Observable+BlockingTest.swift */; };\n\t\tC834F6C61DB3950600C29244 /* NSControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C834F6C51DB3950600C29244 /* NSControl+RxTests.swift */; };\n\t\tC83508C81C386F6F0027C24C /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A56AD71AD7424700B4673B /* RxSwift.framework */; };\n\t\tC835092E1C38706E0027C24C /* ControlEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DD1C38706D0027C24C /* ControlEventTests.swift */; };\n\t\tC835092F1C38706E0027C24C /* ControlPropertyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DE1C38706D0027C24C /* ControlPropertyTests.swift */; };\n\t\tC83509311C38706E0027C24C /* DelegateProxyTest+UIKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E01C38706D0027C24C /* DelegateProxyTest+UIKit.swift */; };\n\t\tC83509321C38706E0027C24C /* DelegateProxyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E11C38706D0027C24C /* DelegateProxyTest.swift */; };\n\t\tC83509351C38706E0027C24C /* KVOObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E41C38706D0027C24C /* KVOObservableTests.swift */; };\n\t\tC83509361C38706E0027C24C /* NSLayoutConstraint+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E51C38706D0027C24C /* NSLayoutConstraint+RxTests.swift */; };\n\t\tC83509371C38706E0027C24C /* NotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E61C38706D0027C24C /* NotificationCenterTests.swift */; };\n\t\tC83509381C38706E0027C24C /* NSObject+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E71C38706D0027C24C /* NSObject+RxTests.swift */; };\n\t\tC835093A1C38706E0027C24C /* RuntimeStateSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E91C38706D0027C24C /* RuntimeStateSnapshot.swift */; };\n\t\tC835093B1C38706E0027C24C /* RXObjCRuntime+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = C83508EB1C38706D0027C24C /* RXObjCRuntime+Testing.m */; };\n\t\tC835093C1C38706E0027C24C /* RxObjCRuntimeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508EC1C38706D0027C24C /* RxObjCRuntimeState.swift */; };\n\t\tC835093D1C38706E0027C24C /* SentMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F01C38706D0027C24C /* SentMessageTest.swift */; };\n\t\tC835093E1C38706E0027C24C /* UIView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F11C38706D0027C24C /* UIView+RxTests.swift */; };\n\t\tC835093F1C38706E0027C24C /* ElementIndexPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F41C38706D0027C24C /* ElementIndexPair.swift */; };\n\t\tC83509401C38706E0027C24C /* EquatableArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F51C38706D0027C24C /* EquatableArray.swift */; };\n\t\tC83509411C38706E0027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F71C38706D0027C24C /* BackgroundThreadPrimitiveHotObservable.swift */; };\n\t\tC83509421C38706E0027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F81C38706D0027C24C /* MainThreadPrimitiveHotObservable.swift */; };\n\t\tC83509431C38706E0027C24C /* MockDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F91C38706D0027C24C /* MockDisposable.swift */; };\n\t\tC83509441C38706E0027C24C /* MySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FA1C38706D0027C24C /* MySubject.swift */; };\n\t\tC83509451C38706E0027C24C /* Observable.Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FB1C38706D0027C24C /* Observable.Extensions.swift */; };\n\t\tC83509461C38706E0027C24C /* PrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FC1C38706D0027C24C /* PrimitiveHotObservable.swift */; };\n\t\tC83509471C38706E0027C24C /* PrimitiveMockObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FD1C38706D0027C24C /* PrimitiveMockObserver.swift */; };\n\t\tC83509481C38706E0027C24C /* TestConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FE1C38706D0027C24C /* TestConnectableObservable.swift */; };\n\t\tC83509491C38706E0027C24C /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FF1C38706D0027C24C /* Observable+Extensions.swift */; };\n\t\tC835094A1C38706E0027C24C /* TestVirtualScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509001C38706D0027C24C /* TestVirtualScheduler.swift */; };\n\t\tC835094B1C38706E0027C24C /* Observable+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509021C38706D0027C24C /* Observable+Tests.swift */; };\n\t\tC835094C1C38706E0027C24C /* AssumptionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509031C38706D0027C24C /* AssumptionsTest.swift */; };\n\t\tC835094D1C38706E0027C24C /* BagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509041C38706D0027C24C /* BagTest.swift */; };\n\t\tC835094E1C38706E0027C24C /* BehaviorSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509051C38706D0027C24C /* BehaviorSubjectTest.swift */; };\n\t\tC835094F1C38706E0027C24C /* CurrentThreadSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509061C38706D0027C24C /* CurrentThreadSchedulerTest.swift */; };\n\t\tC83509501C38706E0027C24C /* DisposableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509071C38706D0027C24C /* DisposableTest.swift */; };\n\t\tC83509511C38706E0027C24C /* HistoricalSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509081C38706D0027C24C /* HistoricalSchedulerTest.swift */; };\n\t\tC83509521C38706E0027C24C /* MainSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509091C38706D0027C24C /* MainSchedulerTests.swift */; };\n\t\tC83509581C38706E0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835090F1C38706D0027C24C /* Observable+CombineLatestTests+arity.swift */; };\n\t\tC835095A1C38706E0027C24C /* Observable+ZipTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509111C38706D0027C24C /* Observable+ZipTests+arity.swift */; };\n\t\tC835095F1C38706E0027C24C /* Observable+SubscriptionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509161C38706D0027C24C /* Observable+SubscriptionTest.swift */; };\n\t\tC83509611C38706E0027C24C /* ObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509181C38706D0027C24C /* ObserverTests.swift */; };\n\t\tC83509621C38706E0027C24C /* QueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509191C38706D0027C24C /* QueueTests.swift */; };\n\t\tC83509631C38706E0027C24C /* SubjectConcurrencyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091A1C38706D0027C24C /* SubjectConcurrencyTest.swift */; };\n\t\tC83509651C38706E0027C24C /* VirtualSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091C1C38706D0027C24C /* VirtualSchedulerTest.swift */; };\n\t\tC835097E1C38726E0027C24C /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB01B8A72BE0088E94D /* RxMutableBox.swift */; };\n\t\tC83509B81C38750D0027C24C /* ControlEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DD1C38706D0027C24C /* ControlEventTests.swift */; };\n\t\tC83509B91C38750D0027C24C /* ControlPropertyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DE1C38706D0027C24C /* ControlPropertyTests.swift */; };\n\t\tC83509BC1C38750D0027C24C /* ControlEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DD1C38706D0027C24C /* ControlEventTests.swift */; };\n\t\tC83509BD1C38750D0027C24C /* ControlPropertyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DE1C38706D0027C24C /* ControlPropertyTests.swift */; };\n\t\tC83509BE1C3875100027C24C /* DelegateProxyTest+Cocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508DF1C38706D0027C24C /* DelegateProxyTest+Cocoa.swift */; };\n\t\tC83509BF1C3875220027C24C /* DelegateProxyTest+UIKit.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E01C38706D0027C24C /* DelegateProxyTest+UIKit.swift */; };\n\t\tC83509C01C3875220027C24C /* DelegateProxyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E11C38706D0027C24C /* DelegateProxyTest.swift */; };\n\t\tC83509C31C3875220027C24C /* KVOObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E41C38706D0027C24C /* KVOObservableTests.swift */; };\n\t\tC83509C41C3875220027C24C /* NSLayoutConstraint+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E51C38706D0027C24C /* NSLayoutConstraint+RxTests.swift */; };\n\t\tC83509C51C3875220027C24C /* NotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E61C38706D0027C24C /* NotificationCenterTests.swift */; };\n\t\tC83509C61C3875220027C24C /* NSObject+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E71C38706D0027C24C /* NSObject+RxTests.swift */; };\n\t\tC83509C81C3875230027C24C /* DelegateProxyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E11C38706D0027C24C /* DelegateProxyTest.swift */; };\n\t\tC83509CB1C3875230027C24C /* KVOObservableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E41C38706D0027C24C /* KVOObservableTests.swift */; };\n\t\tC83509CC1C3875230027C24C /* NSLayoutConstraint+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E51C38706D0027C24C /* NSLayoutConstraint+RxTests.swift */; };\n\t\tC83509CD1C3875230027C24C /* NotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E61C38706D0027C24C /* NotificationCenterTests.swift */; };\n\t\tC83509CE1C3875230027C24C /* NSObject+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E71C38706D0027C24C /* NSObject+RxTests.swift */; };\n\t\tC83509CF1C3875260027C24C /* NSView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E81C38706D0027C24C /* NSView+RxTests.swift */; };\n\t\tC83509D01C38752E0027C24C /* RuntimeStateSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E91C38706D0027C24C /* RuntimeStateSnapshot.swift */; };\n\t\tC83509D11C38752E0027C24C /* RuntimeStateSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508E91C38706D0027C24C /* RuntimeStateSnapshot.swift */; };\n\t\tC83509D21C3875380027C24C /* RXObjCRuntime+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = C83508EB1C38706D0027C24C /* RXObjCRuntime+Testing.m */; };\n\t\tC83509D31C3875390027C24C /* RXObjCRuntime+Testing.m in Sources */ = {isa = PBXBuildFile; fileRef = C83508EB1C38706D0027C24C /* RXObjCRuntime+Testing.m */; };\n\t\tC83509D41C38753C0027C24C /* RxObjCRuntimeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508EC1C38706D0027C24C /* RxObjCRuntimeState.swift */; };\n\t\tC83509D51C38753E0027C24C /* RxObjCRuntimeState.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508EC1C38706D0027C24C /* RxObjCRuntimeState.swift */; };\n\t\tC83509D61C3875420027C24C /* SentMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F01C38706D0027C24C /* SentMessageTest.swift */; };\n\t\tC83509D81C3875420027C24C /* SentMessageTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F01C38706D0027C24C /* SentMessageTest.swift */; };\n\t\tC83509DA1C38754C0027C24C /* ElementIndexPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F41C38706D0027C24C /* ElementIndexPair.swift */; };\n\t\tC83509DB1C38754C0027C24C /* EquatableArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F51C38706D0027C24C /* EquatableArray.swift */; };\n\t\tC83509DC1C38754C0027C24C /* ElementIndexPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F41C38706D0027C24C /* ElementIndexPair.swift */; };\n\t\tC83509DD1C38754C0027C24C /* EquatableArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F51C38706D0027C24C /* EquatableArray.swift */; };\n\t\tC83509DE1C38754F0027C24C /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FF1C38706D0027C24C /* Observable+Extensions.swift */; };\n\t\tC83509DF1C38754F0027C24C /* TestVirtualScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509001C38706D0027C24C /* TestVirtualScheduler.swift */; };\n\t\tC83509E01C3875500027C24C /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FF1C38706D0027C24C /* Observable+Extensions.swift */; };\n\t\tC83509E11C3875500027C24C /* TestVirtualScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509001C38706D0027C24C /* TestVirtualScheduler.swift */; };\n\t\tC83509E21C3875580027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F71C38706D0027C24C /* BackgroundThreadPrimitiveHotObservable.swift */; };\n\t\tC83509E31C3875580027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F81C38706D0027C24C /* MainThreadPrimitiveHotObservable.swift */; };\n\t\tC83509E41C3875580027C24C /* MockDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F91C38706D0027C24C /* MockDisposable.swift */; };\n\t\tC83509E51C3875580027C24C /* MySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FA1C38706D0027C24C /* MySubject.swift */; };\n\t\tC83509E61C3875580027C24C /* Observable.Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FB1C38706D0027C24C /* Observable.Extensions.swift */; };\n\t\tC83509E71C3875580027C24C /* PrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FC1C38706D0027C24C /* PrimitiveHotObservable.swift */; };\n\t\tC83509E81C3875580027C24C /* PrimitiveMockObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FD1C38706D0027C24C /* PrimitiveMockObserver.swift */; };\n\t\tC83509E91C3875580027C24C /* TestConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FE1C38706D0027C24C /* TestConnectableObservable.swift */; };\n\t\tC83509EA1C3875580027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F71C38706D0027C24C /* BackgroundThreadPrimitiveHotObservable.swift */; };\n\t\tC83509EB1C3875580027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F81C38706D0027C24C /* MainThreadPrimitiveHotObservable.swift */; };\n\t\tC83509EC1C3875580027C24C /* MockDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F91C38706D0027C24C /* MockDisposable.swift */; };\n\t\tC83509ED1C3875580027C24C /* MySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FA1C38706D0027C24C /* MySubject.swift */; };\n\t\tC83509EE1C3875580027C24C /* Observable.Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FB1C38706D0027C24C /* Observable.Extensions.swift */; };\n\t\tC83509EF1C3875580027C24C /* PrimitiveHotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FC1C38706D0027C24C /* PrimitiveHotObservable.swift */; };\n\t\tC83509F01C3875580027C24C /* PrimitiveMockObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FD1C38706D0027C24C /* PrimitiveMockObserver.swift */; };\n\t\tC83509F11C3875580027C24C /* TestConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508FE1C38706D0027C24C /* TestConnectableObservable.swift */; };\n\t\tC83509F21C38755D0027C24C /* Observable+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509021C38706D0027C24C /* Observable+Tests.swift */; };\n\t\tC83509F31C38755D0027C24C /* AssumptionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509031C38706D0027C24C /* AssumptionsTest.swift */; };\n\t\tC83509F41C38755D0027C24C /* BagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509041C38706D0027C24C /* BagTest.swift */; };\n\t\tC83509F51C38755D0027C24C /* BehaviorSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509051C38706D0027C24C /* BehaviorSubjectTest.swift */; };\n\t\tC83509F61C38755D0027C24C /* CurrentThreadSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509061C38706D0027C24C /* CurrentThreadSchedulerTest.swift */; };\n\t\tC83509F71C38755D0027C24C /* DisposableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509071C38706D0027C24C /* DisposableTest.swift */; };\n\t\tC83509F81C38755D0027C24C /* HistoricalSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509081C38706D0027C24C /* HistoricalSchedulerTest.swift */; };\n\t\tC83509F91C38755D0027C24C /* MainSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509091C38706D0027C24C /* MainSchedulerTests.swift */; };\n\t\tC83509FF1C38755D0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835090F1C38706D0027C24C /* Observable+CombineLatestTests+arity.swift */; };\n\t\tC8350A001C38755E0027C24C /* Observable+Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509021C38706D0027C24C /* Observable+Tests.swift */; };\n\t\tC8350A011C38755E0027C24C /* AssumptionsTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509031C38706D0027C24C /* AssumptionsTest.swift */; };\n\t\tC8350A021C38755E0027C24C /* BagTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509041C38706D0027C24C /* BagTest.swift */; };\n\t\tC8350A031C38755E0027C24C /* BehaviorSubjectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509051C38706D0027C24C /* BehaviorSubjectTest.swift */; };\n\t\tC8350A041C38755E0027C24C /* CurrentThreadSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509061C38706D0027C24C /* CurrentThreadSchedulerTest.swift */; };\n\t\tC8350A051C38755E0027C24C /* DisposableTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509071C38706D0027C24C /* DisposableTest.swift */; };\n\t\tC8350A061C38755E0027C24C /* HistoricalSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509081C38706D0027C24C /* HistoricalSchedulerTest.swift */; };\n\t\tC8350A071C38755E0027C24C /* MainSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509091C38706D0027C24C /* MainSchedulerTests.swift */; };\n\t\tC8350A0D1C38755E0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835090F1C38706D0027C24C /* Observable+CombineLatestTests+arity.swift */; };\n\t\tC8350A0E1C3875630027C24C /* Observable+ZipTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509111C38706D0027C24C /* Observable+ZipTests+arity.swift */; };\n\t\tC8350A0F1C3875630027C24C /* Observable+ZipTests+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509111C38706D0027C24C /* Observable+ZipTests+arity.swift */; };\n\t\tC8350A131C38756A0027C24C /* Observable+SubscriptionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509161C38706D0027C24C /* Observable+SubscriptionTest.swift */; };\n\t\tC8350A151C38756A0027C24C /* ObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509181C38706D0027C24C /* ObserverTests.swift */; };\n\t\tC8350A161C38756A0027C24C /* QueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509191C38706D0027C24C /* QueueTests.swift */; };\n\t\tC8350A171C38756A0027C24C /* SubjectConcurrencyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091A1C38706D0027C24C /* SubjectConcurrencyTest.swift */; };\n\t\tC8350A191C38756A0027C24C /* VirtualSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091C1C38706D0027C24C /* VirtualSchedulerTest.swift */; };\n\t\tC8350A1D1C38756B0027C24C /* Observable+SubscriptionTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509161C38706D0027C24C /* Observable+SubscriptionTest.swift */; };\n\t\tC8350A1F1C38756B0027C24C /* ObserverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509181C38706D0027C24C /* ObserverTests.swift */; };\n\t\tC8350A201C38756B0027C24C /* QueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83509191C38706D0027C24C /* QueueTests.swift */; };\n\t\tC8350A211C38756B0027C24C /* SubjectConcurrencyTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091A1C38706D0027C24C /* SubjectConcurrencyTest.swift */; };\n\t\tC8350A231C38756B0027C24C /* VirtualSchedulerTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C835091C1C38706D0027C24C /* VirtualSchedulerTest.swift */; };\n\t\tC8350A2A1C3875B50027C24C /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB01B8A72BE0088E94D /* RxMutableBox.swift */; };\n\t\tC8350A2B1C3875B60027C24C /* RxMutableBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8093CB01B8A72BE0088E94D /* RxMutableBox.swift */; };\n\t\tC8353CDC1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CDB1DA19BA000BE3F5C /* MessageProcessingStage.swift */; };\n\t\tC8353CDD1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CDB1DA19BA000BE3F5C /* MessageProcessingStage.swift */; };\n\t\tC8353CDE1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CDB1DA19BA000BE3F5C /* MessageProcessingStage.swift */; };\n\t\tC8353CE61DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE01DA19BC500BE3F5C /* Recorded+Timeless.swift */; };\n\t\tC8353CE71DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE01DA19BC500BE3F5C /* Recorded+Timeless.swift */; };\n\t\tC8353CE81DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE01DA19BC500BE3F5C /* Recorded+Timeless.swift */; };\n\t\tC8353CE91DA19BC500BE3F5C /* TestErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE11DA19BC500BE3F5C /* TestErrors.swift */; };\n\t\tC8353CEA1DA19BC500BE3F5C /* TestErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE11DA19BC500BE3F5C /* TestErrors.swift */; };\n\t\tC8353CEB1DA19BC500BE3F5C /* TestErrors.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE11DA19BC500BE3F5C /* TestErrors.swift */; };\n\t\tC8353CEC1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE21DA19BC500BE3F5C /* XCTest+AllTests.swift */; };\n\t\tC8353CED1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE21DA19BC500BE3F5C /* XCTest+AllTests.swift */; };\n\t\tC8353CEE1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8353CE21DA19BC500BE3F5C /* XCTest+AllTests.swift */; };\n\t\tC8379EF41D1DD326003EF8FC /* UIButton+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8379EF31D1DD326003EF8FC /* UIButton+RxTests.swift */; };\n\t\tC8379EF51D1DD326003EF8FC /* UIButton+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8379EF31D1DD326003EF8FC /* UIButton+RxTests.swift */; };\n\t\tC83D73BC1C1DBAEE003DC470 /* InvocableScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83D73B41C1DBAEE003DC470 /* InvocableScheduledItem.swift */; };\n\t\tC83D73C01C1DBAEE003DC470 /* InvocableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83D73B51C1DBAEE003DC470 /* InvocableType.swift */; };\n\t\tC83D73C41C1DBAEE003DC470 /* ScheduledItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83D73B61C1DBAEE003DC470 /* ScheduledItem.swift */; };\n\t\tC83D73C81C1DBAEE003DC470 /* ScheduledItemType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83D73B71C1DBAEE003DC470 /* ScheduledItemType.swift */; };\n\t\tC83E397F2189066F001F4F0E /* NSButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781911DB823B500B2029A /* NSButton+Rx.swift */; };\n\t\tC83E39802189066F001F4F0E /* NSControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781921DB823B500B2029A /* NSControl+Rx.swift */; };\n\t\tC83E39822189066F001F4F0E /* NSSlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781941DB823B500B2029A /* NSSlider+Rx.swift */; };\n\t\tC83E39832189066F001F4F0E /* NSTextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781951DB823B500B2029A /* NSTextField+Rx.swift */; };\n\t\tC83E39842189066F001F4F0E /* NSView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781961DB823B500B2029A /* NSView+Rx.swift */; };\n\t\tC83E39852189066F001F4F0E /* NSTextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 927A78B621179FFD00A45638 /* NSTextView+Rx.swift */; };\n\t\tC849BE2B1BAB5D070019AD27 /* ObservableConvertibleType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */; };\n\t\tC84CB1721C3876B800EB63CC /* UIView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83508F11C38706D0027C24C /* UIView+RxTests.swift */; };\n\t\tC84CC54E1BDCF48200E06A64 /* LockOwnerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84CC54D1BDCF48200E06A64 /* LockOwnerType.swift */; };\n\t\tC84CC5531BDCF49300E06A64 /* SynchronizedOnType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84CC5521BDCF49300E06A64 /* SynchronizedOnType.swift */; };\n\t\tC84CC55D1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84CC55C1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift */; };\n\t\tC84CC5621BDD037900E06A64 /* SynchronizedDisposeType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84CC5611BDD037900E06A64 /* SynchronizedDisposeType.swift */; };\n\t\tC84CC5671BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84CC5661BDD08A500E06A64 /* SubscriptionDisposable.swift */; };\n\t\tC85217E91E3374970015DD38 /* GroupedObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85217E81E3374970015DD38 /* GroupedObservable.swift */; };\n\t\tC85217EE1E33C8E60015DD38 /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */; };\n\t\tC85217F31E33ECA00015DD38 /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */; };\n\t\tC85217F71E33FBBE0015DD38 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85217F61E33FBBE0015DD38 /* RecursiveLock.swift */; };\n\t\tC85217FC1E33FBFB0015DD38 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85217FB1E33FBFB0015DD38 /* RecursiveLock.swift */; };\n\t\tC85218011E33FC160015DD38 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85218001E33FC160015DD38 /* RecursiveLock.swift */; };\n\t\tC85218021E33FC160015DD38 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85218001E33FC160015DD38 /* RecursiveLock.swift */; };\n\t\tC85218031E33FC160015DD38 /* RecursiveLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85218001E33FC160015DD38 /* RecursiveLock.swift */; };\n\t\tC85218051E33FCA50015DD38 /* Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85218041E33FCA50015DD38 /* Resources.swift */; };\n\t\tC8550B4B1D95A41400A6FCFE /* Reactive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8550B4A1D95A41400A6FCFE /* Reactive.swift */; };\n\t\tC8561B661DFE1169005E97F1 /* ExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8561B651DFE1169005E97F1 /* ExampleTests.swift */; };\n\t\tC85B01691DB2ACAF006043C3 /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85B01671DB2ACAF006043C3 /* Platform.Darwin.swift */; };\n\t\tC85B016D1DB2ACAF006043C3 /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85B01681DB2ACAF006043C3 /* Platform.Linux.swift */; };\n\t\tC85E6FBE1F53025700C5681E /* SchedulerType+SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85E6FBD1F53025700C5681E /* SchedulerType+SharedSequence.swift */; };\n\t\tC85E6FC21F5305E300C5681E /* Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85E6FBB1F52FF4F00C5681E /* Signal.swift */; };\n\t\tC86781701DB8129E00B2029A /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867816C1DB8129E00B2029A /* Bag.swift */; };\n\t\tC86781741DB8129E00B2029A /* InfiniteSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867816D1DB8129E00B2029A /* InfiniteSequence.swift */; };\n\t\tC86781781DB8129E00B2029A /* PriorityQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867816E1DB8129E00B2029A /* PriorityQueue.swift */; };\n\t\tC867817C1DB8129E00B2029A /* Queue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C867816F1DB8129E00B2029A /* Queue.swift */; };\n\t\tC86781831DB8143A00B2029A /* Bag.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781821DB8143A00B2029A /* Bag.swift */; };\n\t\tC86781881DB814AD00B2029A /* Bag+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781871DB814AD00B2029A /* Bag+Rx.swift */; };\n\t\tC86B1E221D42BF5200130546 /* SchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86B1E211D42BF5200130546 /* SchedulerTests.swift */; };\n\t\tC86B1E231D42BF5200130546 /* SchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86B1E211D42BF5200130546 /* SchedulerTests.swift */; };\n\t\tC86B1E241D42BF5200130546 /* SchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86B1E211D42BF5200130546 /* SchedulerTests.swift */; };\n\t\tC8802DD41F8CD47F001D677E /* UIControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8802DD31F8CD47F001D677E /* UIControl+RxTests.swift */; };\n\t\tC88254161B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */; };\n\t\tC88254171B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */; };\n\t\tC88254181B8A752B00B02D69 /* ItemEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F41B8A752B00B02D69 /* ItemEvents.swift */; };\n\t\tC882541A1B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F71B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift */; };\n\t\tC882541B1B8A752B00B02D69 /* RxTableViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253F81B8A752B00B02D69 /* RxTableViewDataSourceType.swift */; };\n\t\tC882541E1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253FC1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift */; };\n\t\tC882541F1B8A752B00B02D69 /* RxCollectionViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253FD1B8A752B00B02D69 /* RxCollectionViewDelegateProxy.swift */; };\n\t\tC88254201B8A752B00B02D69 /* RxScrollViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253FE1B8A752B00B02D69 /* RxScrollViewDelegateProxy.swift */; };\n\t\tC88254211B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88253FF1B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift */; };\n\t\tC88254221B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254001B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift */; };\n\t\tC88254231B8A752B00B02D69 /* RxTableViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254011B8A752B00B02D69 /* RxTableViewDelegateProxy.swift */; };\n\t\tC88254241B8A752B00B02D69 /* RxTextViewDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254021B8A752B00B02D69 /* RxTextViewDelegateProxy.swift */; };\n\t\tC88254271B8A752B00B02D69 /* UIBarButtonItem+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254051B8A752B00B02D69 /* UIBarButtonItem+Rx.swift */; };\n\t\tC88254281B8A752B00B02D69 /* UIButton+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254061B8A752B00B02D69 /* UIButton+Rx.swift */; };\n\t\tC88254291B8A752B00B02D69 /* UICollectionView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254071B8A752B00B02D69 /* UICollectionView+Rx.swift */; };\n\t\tC882542A1B8A752B00B02D69 /* UIControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254081B8A752B00B02D69 /* UIControl+Rx.swift */; };\n\t\tC882542B1B8A752B00B02D69 /* UIDatePicker+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254091B8A752B00B02D69 /* UIDatePicker+Rx.swift */; };\n\t\tC882542C1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C882540A1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift */; };\n\t\tC882542F1B8A752B00B02D69 /* UIScrollView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C882540D1B8A752B00B02D69 /* UIScrollView+Rx.swift */; };\n\t\tC88254301B8A752B00B02D69 /* UISearchBar+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C882540E1B8A752B00B02D69 /* UISearchBar+Rx.swift */; };\n\t\tC88254311B8A752B00B02D69 /* UISegmentedControl+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C882540F1B8A752B00B02D69 /* UISegmentedControl+Rx.swift */; };\n\t\tC88254321B8A752B00B02D69 /* UISlider+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254101B8A752B00B02D69 /* UISlider+Rx.swift */; };\n\t\tC88254331B8A752B00B02D69 /* UISwitch+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254111B8A752B00B02D69 /* UISwitch+Rx.swift */; };\n\t\tC88254341B8A752B00B02D69 /* UITableView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254121B8A752B00B02D69 /* UITableView+Rx.swift */; };\n\t\tC88254351B8A752B00B02D69 /* UITextField+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254131B8A752B00B02D69 /* UITextField+Rx.swift */; };\n\t\tC88254361B8A752B00B02D69 /* UITextView+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88254141B8A752B00B02D69 /* UITextView+Rx.swift */; };\n\t\tC8845AD41EDB4C9900B36836 /* ShareReplayScope.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8845AD31EDB4C9900B36836 /* ShareReplayScope.swift */; };\n\t\tC8845ADA1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8845AD91EDB607800B36836 /* Observable+ShareReplayScopeTests.swift */; };\n\t\tC8845ADB1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8845AD91EDB607800B36836 /* Observable+ShareReplayScopeTests.swift */; };\n\t\tC8845ADC1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8845AD91EDB607800B36836 /* Observable+ShareReplayScopeTests.swift */; };\n\t\tC88E296B1BEB712E001CCB92 /* RunLoopLock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88E296A1BEB712E001CCB92 /* RunLoopLock.swift */; };\n\t\tC88F76811CE5341700D5A014 /* TextInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88F76801CE5341700D5A014 /* TextInput.swift */; };\n\t\tC89046581DC5F6F70041C7D8 /* UISearchBar+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B2908C1C94D6C500E923D0 /* UISearchBar+RxTests.swift */; };\n\t\tC8941BDF1BD5695C00A0E874 /* BlockingObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8941BDE1BD5695C00A0E874 /* BlockingObservable.swift */; };\n\t\tC8941BE41BD56B0700A0E874 /* BlockingObservable+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8941BE31BD56B0700A0E874 /* BlockingObservable+Operators.swift */; };\n\t\tC896A68B1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C896A68A1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift */; };\n\t\tC896A68C1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C896A68A1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift */; };\n\t\tC896A68D1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C896A68A1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift */; };\n\t\tC89814781E75A7D70035949C /* PrimitiveSequence+Zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89814771E75A7D70035949C /* PrimitiveSequence+Zip+arity.swift */; };\n\t\tC898147E1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C898147D1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift */; };\n\t\tC898147F1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C898147D1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift */; };\n\t\tC89814801E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C898147D1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift */; };\n\t\tC89AB1731DAAC1680065FBE6 /* ControlTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1711DAAC1680065FBE6 /* ControlTarget.swift */; };\n\t\tC89AB1A61DAAC25A0065FBE6 /* RxCocoaObjCRuntimeError+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1A51DAAC25A0065FBE6 /* RxCocoaObjCRuntimeError+Extensions.swift */; };\n\t\tC89AB1C61DAAC3350065FBE6 /* ControlEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1AB1DAAC3350065FBE6 /* ControlEvent.swift */; };\n\t\tC89AB1CA1DAAC3350065FBE6 /* ControlProperty.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1AC1DAAC3350065FBE6 /* ControlProperty.swift */; };\n\t\tC89AB1CE1DAAC3350065FBE6 /* ControlEvent+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1AE1DAAC3350065FBE6 /* ControlEvent+Driver.swift */; };\n\t\tC89AB1D21DAAC3350065FBE6 /* ControlProperty+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1AF1DAAC3350065FBE6 /* ControlProperty+Driver.swift */; };\n\t\tC89AB1D61DAAC3350065FBE6 /* Driver+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B01DAAC3350065FBE6 /* Driver+Subscription.swift */; };\n\t\tC89AB1DA1DAAC3350065FBE6 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B11DAAC3350065FBE6 /* Driver.swift */; };\n\t\tC89AB1DE1DAAC3350065FBE6 /* ObservableConvertibleType+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B21DAAC3350065FBE6 /* ObservableConvertibleType+Driver.swift */; };\n\t\tC89AB1EA1DAAC3350065FBE6 /* SharedSequence+Operators+arity.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B61DAAC3350065FBE6 /* SharedSequence+Operators+arity.swift */; };\n\t\tC89AB1F21DAAC3350065FBE6 /* SharedSequence+Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B81DAAC3350065FBE6 /* SharedSequence+Operators.swift */; };\n\t\tC89AB1F61DAAC3350065FBE6 /* SharedSequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1B91DAAC3350065FBE6 /* SharedSequence.swift */; };\n\t\tC89AB2021DAAC3350065FBE6 /* KVORepresentable+CoreGraphics.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1BD1DAAC3350065FBE6 /* KVORepresentable+CoreGraphics.swift */; };\n\t\tC89AB2061DAAC3350065FBE6 /* KVORepresentable+Swift.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1BE1DAAC3350065FBE6 /* KVORepresentable+Swift.swift */; };\n\t\tC89AB20A1DAAC3350065FBE6 /* KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1BF1DAAC3350065FBE6 /* KVORepresentable.swift */; };\n\t\tC89AB2121DAAC3350065FBE6 /* NotificationCenter+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1C11DAAC3350065FBE6 /* NotificationCenter+Rx.swift */; };\n\t\tC89AB2161DAAC3350065FBE6 /* NSObject+Rx+KVORepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1C21DAAC3350065FBE6 /* NSObject+Rx+KVORepresentable.swift */; };\n\t\tC89AB21A1DAAC3350065FBE6 /* NSObject+Rx+RawRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1C31DAAC3350065FBE6 /* NSObject+Rx+RawRepresentable.swift */; };\n\t\tC89AB21E1DAAC3350065FBE6 /* NSObject+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1C41DAAC3350065FBE6 /* NSObject+Rx.swift */; };\n\t\tC89AB2221DAAC3350065FBE6 /* URLSession+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB1C51DAAC3350065FBE6 /* URLSession+Rx.swift */; };\n\t\tC89AB2271DAAC33F0065FBE6 /* RxCocoa.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89AB2261DAAC33F0065FBE6 /* RxCocoa.swift */; };\n\t\tC89AB2381DAAC3A60065FBE6 /* _RX.m in Sources */ = {isa = PBXBuildFile; fileRef = C89AB22D1DAAC3A60065FBE6 /* _RX.m */; };\n\t\tC89AB2401DAAC3A60065FBE6 /* _RXDelegateProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C89AB22F1DAAC3A60065FBE6 /* _RXDelegateProxy.m */; };\n\t\tC89AB2481DAAC3A60065FBE6 /* _RXKVOObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = C89AB2311DAAC3A60065FBE6 /* _RXKVOObserver.m */; };\n\t\tC89AB2501DAAC3A60065FBE6 /* _RXObjCRuntime.m in Sources */ = {isa = PBXBuildFile; fileRef = C89AB2331DAAC3A60065FBE6 /* _RXObjCRuntime.m */; };\n\t\tC89AB25A1DAACC580065FBE6 /* _RX.h in Headers */ = {isa = PBXBuildFile; fileRef = C89AB2551DAACC580065FBE6 /* _RX.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC89AB25E1DAACC580065FBE6 /* _RXDelegateProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = C89AB2561DAACC580065FBE6 /* _RXDelegateProxy.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC89AB2621DAACC580065FBE6 /* _RXKVOObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = C89AB2571DAACC580065FBE6 /* _RXKVOObserver.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC89AB2661DAACC580065FBE6 /* _RXObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = C89AB2581DAACC580065FBE6 /* _RXObjCRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC89AB2791DAACE490065FBE6 /* RxCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = C89AB2781DAACE490065FBE6 /* RxCocoa.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tC89CFA0C1DAAB4670079D23B /* RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA0B1DAAB4670079D23B /* RxTest.swift */; };\n\t\tC89CFA0D1DAAB4670079D23B /* RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA0B1DAAB4670079D23B /* RxTest.swift */; };\n\t\tC89CFA0E1DAAB4670079D23B /* RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA0B1DAAB4670079D23B /* RxTest.swift */; };\n\t\tC89CFA1E1DAABBE20079D23B /* Any+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA101DAABBE20079D23B /* Any+Equatable.swift */; };\n\t\tC89CFA221DAABBE20079D23B /* ColdObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA111DAABBE20079D23B /* ColdObservable.swift */; };\n\t\tC89CFA261DAABBE20079D23B /* Event+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA121DAABBE20079D23B /* Event+Equatable.swift */; };\n\t\tC89CFA2A1DAABBE20079D23B /* HotObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA131DAABBE20079D23B /* HotObservable.swift */; };\n\t\tC89CFA321DAABBE20079D23B /* Recorded.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA151DAABBE20079D23B /* Recorded.swift */; };\n\t\tC89CFA361DAABBE20079D23B /* RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA161DAABBE20079D23B /* RxTest.swift */; };\n\t\tC89CFA3A1DAABBE20079D23B /* TestScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA181DAABBE20079D23B /* TestScheduler.swift */; };\n\t\tC89CFA3E1DAABBE20079D23B /* TestSchedulerVirtualTimeConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA191DAABBE20079D23B /* TestSchedulerVirtualTimeConverter.swift */; };\n\t\tC89CFA421DAABBE20079D23B /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA1A1DAABBE20079D23B /* Subscription.swift */; };\n\t\tC89CFA461DAABBE20079D23B /* TestableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA1B1DAABBE20079D23B /* TestableObservable.swift */; };\n\t\tC89CFA4A1DAABBE20079D23B /* TestableObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA1C1DAABBE20079D23B /* TestableObserver.swift */; };\n\t\tC89CFA4E1DAABBE20079D23B /* XCTest+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89CFA1D1DAABBE20079D23B /* XCTest+Rx.swift */; };\n\t\tC8A53AE01F09178700490535 /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A53ADF1F09178700490535 /* Completable+AndThen.swift */; };\n\t\tC8A53AE51F09292A00490535 /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A53AE41F09292A00490535 /* Completable+AndThen.swift */; };\n\t\tC8A53AE61F09292A00490535 /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A53AE41F09292A00490535 /* Completable+AndThen.swift */; };\n\t\tC8A53AE71F09292A00490535 /* Completable+AndThen.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A53AE41F09292A00490535 /* Completable+AndThen.swift */; };\n\t\tC8A81CA01E05E82C0008DEF4 /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A81C9F1E05E82C0008DEF4 /* DispatchQueue+Extensions.swift */; };\n\t\tC8A9B6F41DAD752200C9B027 /* Observable+BindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A9B6F31DAD752200C9B027 /* Observable+BindTests.swift */; };\n\t\tC8A9B6F51DAD752200C9B027 /* Observable+BindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A9B6F31DAD752200C9B027 /* Observable+BindTests.swift */; };\n\t\tC8A9B6F61DAD752200C9B027 /* Observable+BindTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A9B6F31DAD752200C9B027 /* Observable+BindTests.swift */; };\n\t\tC8ADC18E2200F9B000B611D4 /* Atomic+Overrides.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8ADC18D2200F9B000B611D4 /* Atomic+Overrides.swift */; };\n\t\tC8ADC18F2200F9B000B611D4 /* Atomic+Overrides.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8ADC18D2200F9B000B611D4 /* Atomic+Overrides.swift */; };\n\t\tC8ADC1902200F9B000B611D4 /* Atomic+Overrides.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8ADC18D2200F9B000B611D4 /* Atomic+Overrides.swift */; };\n\t\tC8B0F70D1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B0F70C1F530A1700548EBE /* SharingSchedulerTests.swift */; };\n\t\tC8B0F70E1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B0F70C1F530A1700548EBE /* SharingSchedulerTests.swift */; };\n\t\tC8B0F70F1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B0F70C1F530A1700548EBE /* SharingSchedulerTests.swift */; };\n\t\tC8B0F7221F53135100548EBE /* ObservableConvertibleType+Signal.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B0F7211F53135100548EBE /* ObservableConvertibleType+Signal.swift */; };\n\t\tC8B144FB1BD2D44500267DCE /* ConcurrentMainScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B144FA1BD2D44500267DCE /* ConcurrentMainScheduler.swift */; };\n\t\tC8B290891C94D64600E923D0 /* RxTest+Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B290841C94D55600E923D0 /* RxTest+Controls.swift */; };\n\t\tC8B2908A1C94D64700E923D0 /* RxTest+Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B290841C94D55600E923D0 /* RxTest+Controls.swift */; };\n\t\tC8B2908B1C94D64700E923D0 /* RxTest+Controls.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B290841C94D55600E923D0 /* RxTest+Controls.swift */; };\n\t\tC8BAA78D1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BAA78C1E34F8D400EEC727 /* RecursiveLockTest.swift */; };\n\t\tC8BAA78E1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BAA78C1E34F8D400EEC727 /* RecursiveLockTest.swift */; };\n\t\tC8BAA78F1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BAA78C1E34F8D400EEC727 /* RecursiveLockTest.swift */; };\n\t\tC8BF34CB1C2E426800416CAE /* Platform.Darwin.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BF34C91C2E426800416CAE /* Platform.Darwin.swift */; };\n\t\tC8BF34CF1C2E426800416CAE /* Platform.Linux.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BF34CA1C2E426800416CAE /* Platform.Linux.swift */; };\n\t\tC8C217D51CB7100E0038A2E6 /* UITableView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C217D41CB7100E0038A2E6 /* UITableView+RxTests.swift */; };\n\t\tC8C217D71CB710200038A2E6 /* UICollectionView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C217D61CB710200038A2E6 /* UICollectionView+RxTests.swift */; };\n\t\tC8C3DA0F1B939767004D233E /* CurrentThreadScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C3DA0E1B939767004D233E /* CurrentThreadScheduler.swift */; };\n\t\tC8C4F15D1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F15C1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift */; };\n\t\tC8C4F15F1DE9CC5B00003FA7 /* UISwitch+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F15E1DE9CC5B00003FA7 /* UISwitch+RxTests.swift */; };\n\t\tC8C4F1611DE9CD1600003FA7 /* UILabel+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1601DE9CD1600003FA7 /* UILabel+RxTests.swift */; };\n\t\tC8C4F1631DE9D0A800003FA7 /* UIProgressView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1621DE9D0A800003FA7 /* UIProgressView+RxTests.swift */; };\n\t\tC8C4F1651DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1641DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift */; };\n\t\tC8C4F1671DE9D44600003FA7 /* UISegmentedControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1661DE9D44600003FA7 /* UISegmentedControl+RxTests.swift */; };\n\t\tC8C4F1691DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1681DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift */; };\n\t\tC8C4F16B1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16A1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift */; };\n\t\tC8C4F16D1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16C1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift */; };\n\t\tC8C4F16F1DE9D5E000003FA7 /* UISlider+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16E1DE9D5E000003FA7 /* UISlider+RxTests.swift */; };\n\t\tC8C4F1711DE9D68000003FA7 /* UIStepper+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1701DE9D68000003FA7 /* UIStepper+RxTests.swift */; };\n\t\tC8C4F1731DE9D7A300003FA7 /* NSTextField+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1721DE9D7A300003FA7 /* NSTextField+RxTests.swift */; };\n\t\tC8C4F1751DE9D80A00003FA7 /* NSSlider+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1741DE9D80A00003FA7 /* NSSlider+RxTests.swift */; };\n\t\tC8C4F1771DE9D84900003FA7 /* NSButton+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1761DE9D84900003FA7 /* NSButton+RxTests.swift */; };\n\t\tC8C4F1781DE9DF0200003FA7 /* UIActivityIndicatorView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1681DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift */; };\n\t\tC8C4F1791DE9DF0200003FA7 /* UIAlertAction+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16A1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift */; };\n\t\tC8C4F17A1DE9DF0200003FA7 /* UIBarButtonItem+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F15C1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift */; };\n\t\tC8C4F17B1DE9DF0200003FA7 /* UICollectionView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C217D61CB710200038A2E6 /* UICollectionView+RxTests.swift */; };\n\t\tC8C4F17C1DE9DF0200003FA7 /* UIDatePicker+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16C1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift */; };\n\t\tC8C4F17D1DE9DF0200003FA7 /* UIGestureRecognizer+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1641DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift */; };\n\t\tC8C4F17E1DE9DF0200003FA7 /* UILabel+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1601DE9CD1600003FA7 /* UILabel+RxTests.swift */; };\n\t\tC8C4F1801DE9DF0200003FA7 /* UIProgressView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1621DE9D0A800003FA7 /* UIProgressView+RxTests.swift */; };\n\t\tC8C4F1811DE9DF0200003FA7 /* UIScrollView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 033C2EF41D081B2A0050C015 /* UIScrollView+RxTests.swift */; };\n\t\tC8C4F1831DE9DF0200003FA7 /* UISearchController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E4D3951C9B011000ADFDC9 /* UISearchController+RxTests.swift */; };\n\t\tC8C4F1841DE9DF0200003FA7 /* UISegmentedControl+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1661DE9D44600003FA7 /* UISegmentedControl+RxTests.swift */; };\n\t\tC8C4F1851DE9DF0200003FA7 /* UISlider+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F16E1DE9D5E000003FA7 /* UISlider+RxTests.swift */; };\n\t\tC8C4F1861DE9DF0200003FA7 /* UIStepper+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F1701DE9D68000003FA7 /* UIStepper+RxTests.swift */; };\n\t\tC8C4F1871DE9DF0200003FA7 /* UISwitch+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C4F15E1DE9CC5B00003FA7 /* UISwitch+RxTests.swift */; };\n\t\tC8C4F1881DE9DF0200003FA7 /* UITableView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C217D41CB7100E0038A2E6 /* UITableView+RxTests.swift */; };\n\t\tC8C4F18A1DE9DFA400003FA7 /* UISearchBar+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8B2908C1C94D6C500E923D0 /* UISearchBar+RxTests.swift */; };\n\t\tC8C8BCD41F89459300501D4D /* BehaviorRelay+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C8BCD31F89459300501D4D /* BehaviorRelay+Driver.swift */; };\n\t\tC8D132441C42D15E00B59FFF /* SectionedViewDataSourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D132431C42D15E00B59FFF /* SectionedViewDataSourceType.swift */; };\n\t\tC8D970CE1F5324D90058F2FE /* Signal+Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970CD1F5324D90058F2FE /* Signal+Subscription.swift */; };\n\t\tC8D970E31F532FD30058F2FE /* Signal+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DC1F532FD10058F2FE /* Signal+Test.swift */; };\n\t\tC8D970E41F532FD30058F2FE /* Signal+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DC1F532FD10058F2FE /* Signal+Test.swift */; };\n\t\tC8D970E51F532FD30058F2FE /* Signal+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DC1F532FD10058F2FE /* Signal+Test.swift */; };\n\t\tC8D970E61F532FD30058F2FE /* SharedSequence+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DD1F532FD10058F2FE /* SharedSequence+Test.swift */; };\n\t\tC8D970E71F532FD30058F2FE /* SharedSequence+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DD1F532FD10058F2FE /* SharedSequence+Test.swift */; };\n\t\tC8D970E81F532FD30058F2FE /* SharedSequence+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DD1F532FD10058F2FE /* SharedSequence+Test.swift */; };\n\t\tC8D970E91F532FD30058F2FE /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DE1F532FD20058F2FE /* Driver+Test.swift */; };\n\t\tC8D970EA1F532FD30058F2FE /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DE1F532FD20058F2FE /* Driver+Test.swift */; };\n\t\tC8D970EB1F532FD30058F2FE /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970DE1F532FD20058F2FE /* Driver+Test.swift */; };\n\t\tC8D970EC1F532FD30058F2FE /* SectionedViewDataSourceMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E01F532FD20058F2FE /* SectionedViewDataSourceMock.swift */; };\n\t\tC8D970ED1F532FD30058F2FE /* SectionedViewDataSourceMock.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E01F532FD20058F2FE /* SectionedViewDataSourceMock.swift */; };\n\t\tC8D970EF1F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E11F532FD20058F2FE /* SharedSequence+Extensions.swift */; };\n\t\tC8D970F01F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E11F532FD20058F2FE /* SharedSequence+Extensions.swift */; };\n\t\tC8D970F11F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E11F532FD20058F2FE /* SharedSequence+Extensions.swift */; };\n\t\tC8D970F21F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E21F532FD30058F2FE /* SharedSequence+OperatorTest.swift */; };\n\t\tC8D970F31F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E21F532FD30058F2FE /* SharedSequence+OperatorTest.swift */; };\n\t\tC8D970F41F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D970E21F532FD30058F2FE /* SharedSequence+OperatorTest.swift */; };\n\t\tC8E390631F379041004FC993 /* Enumerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E390621F379041004FC993 /* Enumerated.swift */; };\n\t\tC8E390681F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E390671F379386004FC993 /* Observable+EnumeratedTests.swift */; };\n\t\tC8E390691F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E390671F379386004FC993 /* Observable+EnumeratedTests.swift */; };\n\t\tC8E3906A1F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E390671F379386004FC993 /* Observable+EnumeratedTests.swift */; };\n\t\tC8E8BA5A1E2C181A00A4AC2C /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8A56AD71AD7424700B4673B /* RxSwift.framework */; };\n\t\tC8E8BA641E2C186200A4AC2C /* Benchmarks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA621E2C186200A4AC2C /* Benchmarks.swift */; };\n\t\tC8E8BA721E2C18AE00A4AC2C /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E8BA6F1E2C18AE00A4AC2C /* main.swift */; };\n\t\tC8F03F411DBB98DB00AECC4C /* Anomalies.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F401DBB98DB00AECC4C /* Anomalies.swift */; };\n\t\tC8F03F421DBB98DB00AECC4C /* Anomalies.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F401DBB98DB00AECC4C /* Anomalies.swift */; };\n\t\tC8F03F431DBB98DB00AECC4C /* Anomalies.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F401DBB98DB00AECC4C /* Anomalies.swift */; };\n\t\tC8F03F4A1DBBAC0A00AECC4C /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F491DBBAC0A00AECC4C /* DispatchQueue+Extensions.swift */; };\n\t\tC8F03F4F1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F4E1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift */; };\n\t\tC8F03F501DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F4E1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift */; };\n\t\tC8F03F511DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F03F4E1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift */; };\n\t\tC8F27DC01CE68DA600D5FB4F /* UITextView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F27DB11CE6711600D5FB4F /* UITextView+RxTests.swift */; };\n\t\tC8F27DC11CE68DA700D5FB4F /* UITextView+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F27DB11CE6711600D5FB4F /* UITextView+RxTests.swift */; };\n\t\tC8F27DC21CE68DAB00D5FB4F /* UITextField+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F27DAC1CE6710900D5FB4F /* UITextField+RxTests.swift */; };\n\t\tC8F27DC31CE68DAC00D5FB4F /* UITextField+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F27DAC1CE6710900D5FB4F /* UITextField+RxTests.swift */; };\n\t\tC8FA89141C30405400CD3A17 /* VirtualTimeConverterType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8FA89121C30405400CD3A17 /* VirtualTimeConverterType.swift */; };\n\t\tC8FA89151C30405400CD3A17 /* VirtualTimeScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8FA89131C30405400CD3A17 /* VirtualTimeScheduler.swift */; };\n\t\tC8FA89171C30409900CD3A17 /* HistoricalScheduler.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8FA89161C30409900CD3A17 /* HistoricalScheduler.swift */; };\n\t\tC8FA891C1C30412A00CD3A17 /* HistoricalSchedulerTimeConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8FA891B1C30412A00CD3A17 /* HistoricalSchedulerTimeConverter.swift */; };\n\t\tCB883B401BE24C15000AC2EE /* RefCountDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB883B3F1BE24C15000AC2EE /* RefCountDisposable.swift */; };\n\t\tCB883B451BE256D4000AC2EE /* BooleanDisposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB883B441BE256D4000AC2EE /* BooleanDisposable.swift */; };\n\t\tCD8F7AC527BA9187001574EB /* Infallible+Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8F7AC427BA9187001574EB /* Infallible+Driver.swift */; };\n\t\tCDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDEF1691D4FB40000CA8546 /* Disposables.swift */; };\n\t\tD040ADC22D5E408700A1E6B3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = D040ADC12D5E408700A1E6B3 /* PrivacyInfo.xcprivacy */; };\n\t\tD040ADC42D5E409700A1E6B3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = D040ADC32D5E409700A1E6B3 /* PrivacyInfo.xcprivacy */; };\n\t\tD040ADC62D5E442300A1E6B3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = D040ADC52D5E442300A1E6B3 /* PrivacyInfo.xcprivacy */; };\n\t\tD9080ACF1EA05AE0002B433B /* RxNavigationControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9080ACD1EA05A16002B433B /* RxNavigationControllerDelegateProxy.swift */; };\n\t\tD9080AD41EA05DE9002B433B /* UINavigationController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9080AD21EA05DDF002B433B /* UINavigationController+Rx.swift */; };\n\t\tD9080AD81EA06189002B433B /* UINavigationController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9080AD71EA06189002B433B /* UINavigationController+RxTests.swift */; };\n\t\tD9080AD91EA06189002B433B /* UINavigationController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9080AD71EA06189002B433B /* UINavigationController+RxTests.swift */; };\n\t\tDB08833526FA9834005805BE /* Observable+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB08833426FA9834005805BE /* Observable+Concurrency.swift */; };\n\t\tDB08833726FB0637005805BE /* SharedSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB08833626FB0637005805BE /* SharedSequence+Concurrency.swift */; };\n\t\tDB08833A26FB0806005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB08833826FB07CB005805BE /* SharedSequence+ConcurrencyTests.swift */; };\n\t\tDB08833B26FB080B005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB08833826FB07CB005805BE /* SharedSequence+ConcurrencyTests.swift */; };\n\t\tDB08833C26FB080B005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB08833826FB07CB005805BE /* SharedSequence+ConcurrencyTests.swift */; };\n\t\tDB0B922026FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B921F26FB3139005CEED9 /* Observable+ConcurrencyTests.swift */; };\n\t\tDB0B922126FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B921F26FB3139005CEED9 /* Observable+ConcurrencyTests.swift */; };\n\t\tDB0B922226FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B921F26FB3139005CEED9 /* Observable+ConcurrencyTests.swift */; };\n\t\tDB0B922426FB31C1005CEED9 /* PrimitiveSequence+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B922326FB31C1005CEED9 /* PrimitiveSequence+Concurrency.swift */; };\n\t\tDB0B922626FB31EF005CEED9 /* Infallible+Concurrency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B922526FB31EF005CEED9 /* Infallible+Concurrency.swift */; };\n\t\tDB0B922926FB3462005CEED9 /* Infallible+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B922726FB343B005CEED9 /* Infallible+ConcurrencyTests.swift */; };\n\t\tDB0B922C26FB3569005CEED9 /* PrimitiveSequence+ConcurrencyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0B922A26FB34D3005CEED9 /* PrimitiveSequence+ConcurrencyTests.swift */; };\n\t\tDB8157D3264941B300164D4B /* UIApplication+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8157D2264941B200164D4B /* UIApplication+RxTests.swift */; };\n\t\tDB8157E9264941EB00164D4B /* UIApplication+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB8157E8264941EB00164D4B /* UIApplication+Rx.swift */; };\n\t\tECBBA59B1DF8C0BA00DDDC2E /* UITabBarController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBBA59A1DF8C0BA00DDDC2E /* UITabBarController+Rx.swift */; };\n\t\tECBBA59E1DF8C0D400DDDC2E /* RxTabBarControllerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBBA59D1DF8C0D400DDDC2E /* RxTabBarControllerDelegateProxy.swift */; };\n\t\tECBBA5A11DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBBA5A01DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift */; };\n\t\tECBBA5A21DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ECBBA5A01DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift */; };\n\t\tF31F35B01BB4FED800961002 /* UIStepper+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = F31F35AF1BB4FED800961002 /* UIStepper+Rx.swift */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tA2897D59225CA28F004EA481 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = RxSwift;\n\t\t};\n\t\tA2897D63225CBD37004EA481 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = A2897CB3225CA1E7004EA481;\n\t\t\tremoteInfo = RxRelay;\n\t\t};\n\t\tC83508C91C386F6F0027C24C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC835097A1C3871340027C24C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88FA4FD1C25C44800CCFEA4;\n\t\t\tremoteInfo = \"RxTest-iOS\";\n\t\t};\n\t\tC835097C1C3871380027C24C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8093B4B1B8A71F00088E94D;\n\t\t\tremoteInfo = \"RxBlocking-iOS\";\n\t\t};\n\t\tC83E398621890703001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = RxSwift;\n\t\t};\n\t\tC83E398821890703001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C80938F51B8A71760088E94D;\n\t\t\tremoteInfo = RxCocoa;\n\t\t};\n\t\tC83E398A21890703001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8093B4B1B8A71F00088E94D;\n\t\t\tremoteInfo = RxBlocking;\n\t\t};\n\t\tC83E398C21890703001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88FA4FD1C25C44800CCFEA4;\n\t\t\tremoteInfo = RxTest;\n\t\t};\n\t\tC83E398E2189070A001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = RxSwift;\n\t\t};\n\t\tC83E39902189070A001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C80938F51B8A71760088E94D;\n\t\t\tremoteInfo = RxCocoa;\n\t\t};\n\t\tC83E39922189070A001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8093B4B1B8A71F00088E94D;\n\t\t\tremoteInfo = RxBlocking;\n\t\t};\n\t\tC83E39942189070A001F4F0E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88FA4FD1C25C44800CCFEA4;\n\t\t\tremoteInfo = RxTest;\n\t\t};\n\t\tC872BD1B1BC0529600D7175E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC872BD231BC052B800D7175E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC88FA4FF1C25C44800CCFEA4 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC8B52BC5215434D600EAA87C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C80938F51B8A71760088E94D;\n\t\t\tremoteInfo = \"RxCocoa-iOS\";\n\t\t};\n\t\tC8E8BA5B1E2C181A00A4AC2C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC8E8BA751E2C1BB200A4AC2C /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C8A56ACE1AD7424700B4673B /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C80938F51B8A71760088E94D;\n\t\t\tremoteInfo = \"RxCocoa-iOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t033C2EF41D081B2A0050C015 /* UIScrollView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIScrollView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t0BA949661E224B7E0036DD06 /* AsyncSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncSubject.swift; sourceTree = \"<group>\"; };\n\t\t0BA9496B1E224B9C0036DD06 /* AsyncSubjectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncSubjectTests.swift; sourceTree = \"<group>\"; };\n\t\t1AF67DA11CED420A00C310FA /* PublishSubjectTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishSubjectTest.swift; sourceTree = \"<group>\"; };\n\t\t1AF67DA51CED430100C310FA /* ReplaySubjectTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReplaySubjectTest.swift; sourceTree = \"<group>\"; };\n\t\t1D858B6529E57EE900CD6814 /* Infallible+CombineLatest+Collection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+CombineLatest+Collection.swift\"; sourceTree = \"<group>\"; };\n\t\t1E3079AB21FB52330072A7E6 /* AtomicTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AtomicTests.swift; sourceTree = \"<group>\"; };\n\t\t1E3EDF64226356A000B631B9 /* Date+Dispatch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Date+Dispatch.swift\"; sourceTree = \"<group>\"; };\n\t\t1E9DA0C422006858000EB80A /* Synchronized.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Synchronized.swift; sourceTree = \"<group>\"; };\n\t\t25F6ECBB1F48C366008552FA /* Maybe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Maybe.swift; sourceTree = \"<group>\"; };\n\t\t25F6ECBD1F48C373008552FA /* Completable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Completable.swift; sourceTree = \"<group>\"; };\n\t\t25F6ECBF1F48C37C008552FA /* Single.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Single.swift; sourceTree = \"<group>\"; };\n\t\t271A97421CFC99FE00D64125 /* UIViewController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIViewController+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t4583D8211FE94BB100AA1BB1 /* Recorded+Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Recorded+Event.swift\"; sourceTree = \"<group>\"; };\n\t\t4C5213A9225D41E60079FC77 /* CompactMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompactMap.swift; sourceTree = \"<group>\"; };\n\t\t4C5213AB225E20350079FC77 /* Observable+CompactMapTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+CompactMapTests.swift\"; sourceTree = \"<group>\"; };\n\t\t4C8DE0E120D54545003E2D8A /* DisposeBagTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisposeBagTest.swift; sourceTree = \"<group>\"; };\n\t\t504540C824196D960098665F /* WKWebView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"WKWebView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t504540CA24196EB10098665F /* WKWebView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"WKWebView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t504540CD2419701D0098665F /* RxWKNavigationDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxWKNavigationDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\t504540CF241971E70098665F /* DelegateProxyTest+WebKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"DelegateProxyTest+WebKit.swift\"; sourceTree = \"<group>\"; };\n\t\t54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UINavigationItem+RxTests.swift.swift\"; sourceTree = \"<group>\"; };\n\t\t601AE3D91EE24E4F00617386 /* SwiftSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwiftSupport.swift; sourceTree = \"<group>\"; };\n\t\t6A7D2CD323BBDBDC0038576E /* ReplayRelayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayRelayTests.swift; sourceTree = \"<group>\"; };\n\t\t6A94254923AFC2F300B7A24C /* ReplayRelay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayRelay.swift; sourceTree = \"<group>\"; };\n\t\t7846F56524F83AF400A39919 /* Infallible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Infallible.swift; sourceTree = \"<group>\"; };\n\t\t786DED6224F83DE5008C4FAC /* ObservableConvertibleType+Infallible.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+Infallible.swift\"; sourceTree = \"<group>\"; };\n\t\t786DED6624F84095008C4FAC /* Infallible+Zip+arity.tt */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"Infallible+Zip+arity.tt\"; sourceTree = \"<group>\"; };\n\t\t786DED6824F8415B008C4FAC /* Infallible+Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Infallible+Zip+arity.swift\"; sourceTree = \"<group>\"; };\n\t\t786DED6A24F84432008C4FAC /* Infallible+CombineLatest+arity.tt */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"Infallible+CombineLatest+arity.tt\"; sourceTree = \"<group>\"; };\n\t\t786DED6B24F844BC008C4FAC /* Infallible+CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Infallible+CombineLatest+arity.swift\"; sourceTree = \"<group>\"; };\n\t\t786DED6D24F84623008C4FAC /* Infallible+Operators.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Operators.swift\"; sourceTree = \"<group>\"; };\n\t\t786DED6F24F847BF008C4FAC /* Infallible+Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Create.swift\"; sourceTree = \"<group>\"; };\n\t\t786DED7124F849F3008C4FAC /* Infallible+Bind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Bind.swift\"; sourceTree = \"<group>\"; };\n\t\t788DCE5C24CB8249005B8F8C /* Decode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Decode.swift; sourceTree = \"<group>\"; };\n\t\t788DCE5E24CB8512005B8F8C /* Observable+DecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+DecodeTests.swift\"; sourceTree = \"<group>\"; };\n\t\t78B6157623B6A035009C2AD9 /* Binder+Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Binder+Tests.swift\"; sourceTree = \"<group>\"; };\n\t\t78C385CD25685076005E39B3 /* Infallible+BindTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+BindTests.swift\"; sourceTree = \"<group>\"; };\n\t\t78C385EA256859DC005E39B3 /* Infallible+Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Tests.swift\"; sourceTree = \"<group>\"; };\n\t\t7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITabBarItem+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIRefreshControl+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t819C2F081F2FBC7F009104B6 /* First.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = First.swift; sourceTree = \"<group>\"; };\n\t\t842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSTextStorage+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t844BC8AA1CE4FA5600F5C7CB /* RxPickerViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\t844BC8B31CE4FD7500F5C7CB /* UIPickerView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIPickerView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t844BC8B71CE5023200F5C7CB /* UIPickerView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIPickerView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t846436E11C9AF64C0035B40D /* RxSearchControllerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxSearchControllerDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\t84C225A21C33F00B008724EC /* RxTextStorageDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextStorageDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\t84E4D3901C9AFCD500ADFDC9 /* UISearchController+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISearchController+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t84E4D3951C9B011000ADFDC9 /* UISearchController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISearchController+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t88718CFD1CE5D80000D88D60 /* UITabBar+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UITabBar+Rx.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\t88718D001CE5DE2500D88D60 /* UITabBar+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITabBar+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t88D98F2D1CE7549A00D50457 /* RxTabBarDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RxTabBarDelegateProxy.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\t914FCD661CCDB82E0058B304 /* UIPageControl+RxTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIPageControl+RxTest.swift\"; sourceTree = \"<group>\"; };\n\t\t927A78B621179FFD00A45638 /* NSTextView+Rx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"NSTextView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\t927A78C82117BCB400A45638 /* NSTextView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSTextView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\t9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIActivityIndicatorView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tA111CE961B91C97C00D0DCEE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tA20CC6C8259F3FE700370AE3 /* WithUnretained.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithUnretained.swift; sourceTree = \"<group>\"; };\n\t\tA20CC6D4259F408100370AE3 /* Observable+WithUnretainedTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+WithUnretainedTests.swift\"; sourceTree = \"<group>\"; };\n\t\tA2897D53225CA1E7004EA481 /* RxRelay.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxRelay.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tA2897D61225CA3F3004EA481 /* Observable+Bind.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+Bind.swift\"; sourceTree = \"<group>\"; };\n\t\tA2897D65225D0182004EA481 /* PublishRelay+Signal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"PublishRelay+Signal.swift\"; sourceTree = \"<group>\"; };\n\t\tA2897D68225D023A004EA481 /* Utils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = \"<group>\"; };\n\t\tA2FD4E9B225D04FF00288525 /* Observable+RelayBindTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+RelayBindTests.swift\"; sourceTree = \"<group>\"; };\n\t\tA2FD4EA4225D0A8100288525 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tA520FFF61F0D258E00573734 /* RxPickerViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewDataSourceType.swift; sourceTree = \"<group>\"; };\n\t\tA520FFFB1F0D291500573734 /* RxPickerViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewDataSourceProxy.swift; sourceTree = \"<group>\"; };\n\t\tA5CD03891F1660F40005A376 /* RxPickerViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewAdapter.swift; sourceTree = \"<group>\"; };\n\t\tB562478D2035154900D3EE75 /* RxCollectionViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourcePrefetchingProxy.swift; sourceTree = \"<group>\"; };\n\t\tB5624793203532F500D3EE75 /* RxTableViewDataSourcePrefetchingProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourcePrefetchingProxy.swift; sourceTree = \"<group>\"; };\n\t\tC801DE351F6EAD3C008DB060 /* SingleTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleTest.swift; sourceTree = \"<group>\"; };\n\t\tC801DE391F6EAD48008DB060 /* MaybeTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MaybeTest.swift; sourceTree = \"<group>\"; };\n\t\tC801DE3D1F6EAD57008DB060 /* CompletableTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompletableTest.swift; sourceTree = \"<group>\"; };\n\t\tC801DE411F6EBB29008DB060 /* ObservableType+PrimitiveSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableType+PrimitiveSequence.swift\"; sourceTree = \"<group>\"; };\n\t\tC801DE491F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+PrimitiveSequenceTest.swift\"; sourceTree = \"<group>\"; };\n\t\tC8091C4D1FAA345C001DB32A /* ObservableConvertibleType+SharedSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+SharedSequence.swift\"; sourceTree = \"<group>\"; };\n\t\tC8091C521FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+SharedSequence.swift\"; sourceTree = \"<group>\"; };\n\t\tC8091C561FAA39C1001DB32A /* ControlEvent+Signal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ControlEvent+Signal.swift\"; sourceTree = \"<group>\"; };\n\t\tC809396D1B8A71760088E94D /* RxCocoa.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxCocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8093BC71B8A71F00088E94D /* RxBlocking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxBlocking.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8093C491B8A72BE0088E94D /* Cancelable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cancelable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C4B1B8A72BE0088E94D /* AsyncLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsyncLock.swift; sourceTree = \"<group>\"; };\n\t\tC8093C4C1B8A72BE0088E94D /* Lock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lock.swift; sourceTree = \"<group>\"; };\n\t\tC8093C4D1B8A72BE0088E94D /* ConnectableObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectableObservableType.swift; sourceTree = \"<group>\"; };\n\t\tC8093C521B8A72BE0088E94D /* Disposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C541B8A72BE0088E94D /* AnonymousDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C551B8A72BE0088E94D /* BinaryDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BinaryDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C571B8A72BE0088E94D /* CompositeDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CompositeDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C581B8A72BE0088E94D /* DisposeBag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBag.swift; sourceTree = \"<group>\"; };\n\t\tC8093C591B8A72BE0088E94D /* DisposeBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeBase.swift; sourceTree = \"<group>\"; };\n\t\tC8093C5C1B8A72BE0088E94D /* NopDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NopDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C601B8A72BE0088E94D /* SingleAssignmentDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAssignmentDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C631B8A72BE0088E94D /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = \"<group>\"; };\n\t\tC8093C641B8A72BE0088E94D /* Event.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Event.swift; sourceTree = \"<group>\"; };\n\t\tC8093C651B8A72BE0088E94D /* ImmediateSchedulerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImmediateSchedulerType.swift; sourceTree = \"<group>\"; };\n\t\tC8093C661B8A72BE0088E94D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC8093C671B8A72BE0088E94D /* ObservableType+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"ObservableType+Extensions.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093C681B8A72BE0088E94D /* Observable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.swift; sourceTree = \"<group>\"; };\n\t\tC8093C9E1B8A72BE0088E94D /* ObservableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableType.swift; sourceTree = \"<group>\"; };\n\t\tC8093CA01B8A72BE0088E94D /* AnyObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AnyObserver.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093CA21B8A72BE0088E94D /* AnonymousObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousObserver.swift; sourceTree = \"<group>\"; };\n\t\tC8093CA61B8A72BE0088E94D /* ObserverBase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverBase.swift; sourceTree = \"<group>\"; };\n\t\tC8093CA91B8A72BE0088E94D /* TailRecursiveSink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TailRecursiveSink.swift; sourceTree = \"<group>\"; };\n\t\tC8093CAB1B8A72BE0088E94D /* ObserverType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverType.swift; sourceTree = \"<group>\"; };\n\t\tC8093CAF1B8A72BE0088E94D /* Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Rx.swift; sourceTree = \"<group>\"; };\n\t\tC8093CB01B8A72BE0088E94D /* RxMutableBox.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxMutableBox.swift; sourceTree = \"<group>\"; };\n\t\tC8093CB31B8A72BE0088E94D /* SchedulerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SchedulerType.swift; sourceTree = \"<group>\"; };\n\t\tC8093CB51B8A72BE0088E94D /* ConcurrentDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ConcurrentDispatchQueueScheduler.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093CB71B8A72BE0088E94D /* MainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8093CB81B8A72BE0088E94D /* OperationQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperationQueueScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8093CB91B8A72BE0088E94D /* RecursiveScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8093CBB1B8A72BE0088E94D /* SchedulerServices+Emulation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SchedulerServices+Emulation.swift\"; sourceTree = \"<group>\"; };\n\t\tC8093CBC1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SerialDispatchQueueScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8093CBE1B8A72BE0088E94D /* BehaviorSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = BehaviorSubject.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093CBF1B8A72BE0088E94D /* PublishSubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PublishSubject.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093CC01B8A72BE0088E94D /* ReplaySubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = ReplaySubject.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093CC11B8A72BE0088E94D /* SubjectType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubjectType.swift; sourceTree = \"<group>\"; };\n\t\tC8093E8B1B8A732E0088E94D /* DelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = DelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC8093E8C1B8A732E0088E94D /* DelegateProxyType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxyType.swift; sourceTree = \"<group>\"; };\n\t\tC8093E9C1B8A732E0088E94D /* RxTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTarget.swift; sourceTree = \"<group>\"; };\n\t\tC8093E9D1B8A732E0088E94D /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC8093F581B8A73A20088E94D /* ObservableConvertibleType+Blocking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+Blocking.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8093F591B8A73A20088E94D /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = \"<group>\"; };\n\t\tC80D338E1B91EF9E0014629D /* Observable+Bind.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"Observable+Bind.swift\"; sourceTree = \"<group>\"; };\n\t\tC80EEC331D42D06E00131C39 /* DispatchQueueConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DispatchQueueConfiguration.swift; sourceTree = \"<group>\"; };\n\t\tC8165AC921891B9500494BEF /* AtomicInt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = \"<group>\"; };\n\t\tC8165ACA21891BBF00494BEF /* AtomicInt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = \"<group>\"; };\n\t\tC8165ACC21891BE400494BEF /* AtomicInt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = \"<group>\"; };\n\t\tC8165AD421891DBE00494BEF /* AtomicInt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AtomicInt.swift; sourceTree = \"<group>\"; };\n\t\tC81A097C1E6C27A100900B3B /* Observable+ZipTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ZipTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC81A09861E6C702700900B3B /* PrimitiveSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = PrimitiveSequence.swift; sourceTree = \"<group>\"; tabWidth = 4; };\n\t\tC81B6AA81DB2C15C0047CF86 /* Platform.Darwin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = \"<group>\"; };\n\t\tC81B6AA91DB2C15C0047CF86 /* Platform.Linux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = \"<group>\"; };\n\t\tC820A7E61EB4DA5900D431BC /* Map.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Map.swift; sourceTree = \"<group>\"; };\n\t\tC820A7E71EB4DA5900D431BC /* Switch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Switch.swift; sourceTree = \"<group>\"; };\n\t\tC820A7E81EB4DA5900D431BC /* Delay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Delay.swift; sourceTree = \"<group>\"; };\n\t\tC820A7E91EB4DA5900D431BC /* Timeout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timeout.swift; sourceTree = \"<group>\"; };\n\t\tC820A7EA1EB4DA5900D431BC /* Window.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Window.swift; sourceTree = \"<group>\"; };\n\t\tC820A7EB1EB4DA5900D431BC /* Buffer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Buffer.swift; sourceTree = \"<group>\"; };\n\t\tC820A7EC1EB4DA5900D431BC /* DelaySubscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelaySubscription.swift; sourceTree = \"<group>\"; };\n\t\tC820A7ED1EB4DA5900D431BC /* Skip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Skip.swift; sourceTree = \"<group>\"; };\n\t\tC820A7EE1EB4DA5900D431BC /* Take.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Take.swift; sourceTree = \"<group>\"; };\n\t\tC820A7EF1EB4DA5900D431BC /* Timer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Timer.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F01EB4DA5900D431BC /* Sample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sample.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F11EB4DA5900D431BC /* Debounce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debounce.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F21EB4DA5900D431BC /* Throttle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Throttle.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F31EB4DA5900D431BC /* Generate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Generate.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F41EB4DA5900D431BC /* GroupBy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupBy.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F51EB4DA5900D431BC /* SingleAsync.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleAsync.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F61EB4DA5900D431BC /* ElementAt.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElementAt.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F71EB4DA5900D431BC /* Merge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Merge.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F81EB4DA5900D431BC /* SkipWhile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipWhile.swift; sourceTree = \"<group>\"; };\n\t\tC820A7F91EB4DA5900D431BC /* TakeLast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeLast.swift; sourceTree = \"<group>\"; };\n\t\tC820A7FB1EB4DA5900D431BC /* Filter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Filter.swift; sourceTree = \"<group>\"; };\n\t\tC820A7FC1EB4DA5900D431BC /* Dematerialize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Dematerialize.swift; sourceTree = \"<group>\"; };\n\t\tC820A7FD1EB4DA5900D431BC /* Materialize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Materialize.swift; sourceTree = \"<group>\"; };\n\t\tC820A7FE1EB4DA5900D431BC /* DefaultIfEmpty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultIfEmpty.swift; sourceTree = \"<group>\"; };\n\t\tC820A7FF1EB4DA5900D431BC /* Scan.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Scan.swift; sourceTree = \"<group>\"; };\n\t\tC820A8001EB4DA5900D431BC /* RetryWhen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RetryWhen.swift; sourceTree = \"<group>\"; };\n\t\tC820A8011EB4DA5900D431BC /* Catch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Catch.swift; sourceTree = \"<group>\"; };\n\t\tC820A8021EB4DA5900D431BC /* StartWith.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StartWith.swift; sourceTree = \"<group>\"; };\n\t\tC820A8031EB4DA5900D431BC /* Do.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Do.swift; sourceTree = \"<group>\"; };\n\t\tC820A8041EB4DA5900D431BC /* DistinctUntilChanged.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistinctUntilChanged.swift; sourceTree = \"<group>\"; };\n\t\tC820A8051EB4DA5900D431BC /* WithLatestFrom.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WithLatestFrom.swift; sourceTree = \"<group>\"; };\n\t\tC820A8061EB4DA5900D431BC /* Amb.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Amb.swift; sourceTree = \"<group>\"; };\n\t\tC820A8071EB4DA5900D431BC /* SkipUntil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkipUntil.swift; sourceTree = \"<group>\"; };\n\t\tC820A8081EB4DA5900D431BC /* TakeWithPredicate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TakeWithPredicate.swift; sourceTree = \"<group>\"; };\n\t\tC820A8091EB4DA5900D431BC /* Concat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Concat.swift; sourceTree = \"<group>\"; };\n\t\tC820A80A1EB4DA5900D431BC /* SwitchIfEmpty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SwitchIfEmpty.swift; sourceTree = \"<group>\"; };\n\t\tC820A80B1EB4DA5900D431BC /* Zip+Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Zip+Collection.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A80C1EB4DA5900D431BC /* CombineLatest+Collection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"CombineLatest+Collection.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A80D1EB4DA5900D431BC /* Debug.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Debug.swift; sourceTree = \"<group>\"; };\n\t\tC820A80E1EB4DA5900D431BC /* Optional.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Optional.swift; sourceTree = \"<group>\"; };\n\t\tC820A80F1EB4DA5900D431BC /* Sequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sequence.swift; sourceTree = \"<group>\"; };\n\t\tC820A8101EB4DA5900D431BC /* Range.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Range.swift; sourceTree = \"<group>\"; };\n\t\tC820A8111EB4DA5900D431BC /* Using.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Using.swift; sourceTree = \"<group>\"; };\n\t\tC820A8121EB4DA5900D431BC /* Repeat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repeat.swift; sourceTree = \"<group>\"; };\n\t\tC820A8131EB4DA5900D431BC /* Deferred.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deferred.swift; sourceTree = \"<group>\"; };\n\t\tC820A8141EB4DA5900D431BC /* Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Error.swift; sourceTree = \"<group>\"; };\n\t\tC820A8151EB4DA5900D431BC /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = \"<group>\"; };\n\t\tC820A8161EB4DA5900D431BC /* Never.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Never.swift; sourceTree = \"<group>\"; };\n\t\tC820A8171EB4DA5900D431BC /* Empty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Empty.swift; sourceTree = \"<group>\"; };\n\t\tC820A8181EB4DA5900D431BC /* Create.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = \"<group>\"; };\n\t\tC820A8191EB4DA5900D431BC /* SubscribeOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscribeOn.swift; sourceTree = \"<group>\"; };\n\t\tC820A81A1EB4DA5900D431BC /* ObserveOn.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserveOn.swift; sourceTree = \"<group>\"; };\n\t\tC820A81D1EB4DA5900D431BC /* Multicast.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Multicast.swift; sourceTree = \"<group>\"; };\n\t\tC820A81F1EB4DA5900D431BC /* Reduce.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reduce.swift; sourceTree = \"<group>\"; };\n\t\tC820A8201EB4DA5900D431BC /* ToArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToArray.swift; sourceTree = \"<group>\"; };\n\t\tC820A8211EB4DA5900D431BC /* AsMaybe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsMaybe.swift; sourceTree = \"<group>\"; };\n\t\tC820A8221EB4DA5900D431BC /* AsSingle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AsSingle.swift; sourceTree = \"<group>\"; };\n\t\tC820A8231EB4DA5900D431BC /* AddRef.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddRef.swift; sourceTree = \"<group>\"; };\n\t\tC820A8241EB4DA5900D431BC /* CombineLatest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CombineLatest.swift; sourceTree = \"<group>\"; };\n\t\tC820A8251EB4DA5900D431BC /* CombineLatest+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"CombineLatest+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A8261EB4DA5900D431BC /* CombineLatest+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"CombineLatest+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC820A8271EB4DA5900D431BC /* Producer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Producer.swift; sourceTree = \"<group>\"; };\n\t\tC820A8281EB4DA5900D431BC /* Sink.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Sink.swift; sourceTree = \"<group>\"; };\n\t\tC820A8291EB4DA5900D431BC /* Zip.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Zip.swift; sourceTree = \"<group>\"; };\n\t\tC820A82A1EB4DA5900D431BC /* Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Zip+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A82B1EB4DA5900D431BC /* Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"Zip+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC820A9491EB4E75E00D431BC /* Observable+AmbTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+AmbTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A94D1EB4EC3C00D431BC /* Observable+ReduceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ReduceTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9511EB4ECC000D431BC /* Observable+ToArrayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ToArrayTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+MulticastTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9611EB4EFD300D431BC /* Observable+ObserveOnTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ObserveOnTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9651EB4F39500D431BC /* Observable+SubscribeOnTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SubscribeOnTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9691EB4F64800D431BC /* Observable+JustTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+JustTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A96D1EB4F7AC00D431BC /* Observable+SequenceTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SequenceTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9711EB4F84000D431BC /* Observable+OptionalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+OptionalTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9751EB4F92100D431BC /* Observable+GenerateTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+GenerateTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9791EB4FA0800D431BC /* Observable+RangeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+RangeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A97D1EB4FA5A00D431BC /* Observable+RepeatTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+RepeatTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9811EB4FB0400D431BC /* Observable+UsingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+UsingTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9851EB4FB5B00D431BC /* Observable+DebugTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DebugTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9891EB4FBD600D431BC /* Observable+CatchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+CatchTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A98D1EB4FCC400D431BC /* Observable+SwitchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SwitchTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9911EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SwitchIfEmptyTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9951EB4FF7000D431BC /* Observable+ConcatTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ConcatTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9991EB5001C00D431BC /* Observable+MergeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+MergeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9A11EB5011700D431BC /* Observable+TakeUntilTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TakeUntilTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9A51EB5056C00D431BC /* Observable+SkipUntilTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SkipUntilTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9A91EB505A800D431BC /* Observable+WithLatestFromTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+WithLatestFromTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9AD1EB5073E00D431BC /* Observable+FilterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+FilterTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9B11EB507D300D431BC /* Observable+TakeWhileTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TakeWhileTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9B51EB5081400D431BC /* Observable+MapTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+MapTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9B91EB5097700D431BC /* Observable+TakeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TakeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9BD1EB509B500D431BC /* Observable+TakeLastTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TakeLastTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9C11EB509FC00D431BC /* Observable+SkipTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SkipTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9C51EB50A4200D431BC /* Observable+SkipWhileTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SkipWhileTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9C91EB50A7100D431BC /* Observable+ElementAtTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ElementAtTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9CD1EB50AD400D431BC /* Observable+SingleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SingleTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+GroupByTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9D51EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DistinctUntilChangedTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9D91EB50CAA00D431BC /* Observable+DoOnTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DoOnTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9DD1EB50CF800D431BC /* Observable+ThrottleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ThrottleTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9E11EB50D6C00D431BC /* Observable+SampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SampleTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9E51EB50DB900D431BC /* Observable+TimerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TimerTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9E91EB50E3400D431BC /* Observable+RetryWhenTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+RetryWhenTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9ED1EB50EA100D431BC /* Observable+ScanTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ScanTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9F11EB5109300D431BC /* Observable+DefaultIfEmpty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DefaultIfEmpty.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+MaterializeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820A9FD1EB5110E00D431BC /* Observable+DematerializeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DematerializeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820AA011EB5134000D431BC /* Observable+DelaySubscriptionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DelaySubscriptionTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820AA051EB5139C00D431BC /* Observable+BufferTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+BufferTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820AA091EB513C800D431BC /* Observable+WindowTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+WindowTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820AA0D1EB5140100D431BC /* Observable+TimeoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+TimeoutTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC820AA111EB5145200D431BC /* Observable+DelayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+DelayTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC822BAC51DB4048F00F98810 /* Event+Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Event+Test.swift\"; sourceTree = \"<group>\"; };\n\t\tC822BACD1DB424EC00F98810 /* Reactive+Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Reactive+Tests.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF0EE1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableType+SubscriptionTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8323A8D1E33FD5200CC0C7F /* Resources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resources.swift; sourceTree = \"<group>\"; };\n\t\tC834F6C11DB394E100C29244 /* Observable+BlockingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+BlockingTest.swift\"; sourceTree = \"<group>\"; };\n\t\tC834F6C51DB3950600C29244 /* NSControl+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSControl+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83508C31C386F6F0027C24C /* AllTests-iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"AllTests-iOS.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC83508DD1C38706D0027C24C /* ControlEventTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEventTests.swift; sourceTree = \"<group>\"; };\n\t\tC83508DE1C38706D0027C24C /* ControlPropertyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlPropertyTests.swift; sourceTree = \"<group>\"; };\n\t\tC83508DF1C38706D0027C24C /* DelegateProxyTest+Cocoa.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"DelegateProxyTest+Cocoa.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC83508E01C38706D0027C24C /* DelegateProxyTest+UIKit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"DelegateProxyTest+UIKit.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC83508E11C38706D0027C24C /* DelegateProxyTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DelegateProxyTest.swift; sourceTree = \"<group>\"; };\n\t\tC83508E41C38706D0027C24C /* KVOObservableTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVOObservableTests.swift; sourceTree = \"<group>\"; };\n\t\tC83508E51C38706D0027C24C /* NSLayoutConstraint+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSLayoutConstraint+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83508E61C38706D0027C24C /* NotificationCenterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationCenterTests.swift; sourceTree = \"<group>\"; };\n\t\tC83508E71C38706D0027C24C /* NSObject+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"NSObject+RxTests.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC83508E81C38706D0027C24C /* NSView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83508E91C38706D0027C24C /* RuntimeStateSnapshot.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RuntimeStateSnapshot.swift; sourceTree = \"<group>\"; };\n\t\tC83508EA1C38706D0027C24C /* RXObjCRuntime+Testing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"RXObjCRuntime+Testing.h\"; sourceTree = \"<group>\"; };\n\t\tC83508EB1C38706D0027C24C /* RXObjCRuntime+Testing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = \"RXObjCRuntime+Testing.m\"; sourceTree = \"<group>\"; };\n\t\tC83508EC1C38706D0027C24C /* RxObjCRuntimeState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxObjCRuntimeState.swift; sourceTree = \"<group>\"; };\n\t\tC83508ED1C38706D0027C24C /* RxTest-iOS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"RxTest-iOS-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\tC83508EE1C38706D0027C24C /* RxTest-macOS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"RxTest-macOS-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\tC83508EF1C38706D0027C24C /* RxTest-tvOS-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"RxTest-tvOS-Bridging-Header.h\"; sourceTree = \"<group>\"; };\n\t\tC83508F01C38706D0027C24C /* SentMessageTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SentMessageTest.swift; sourceTree = \"<group>\"; };\n\t\tC83508F11C38706D0027C24C /* UIView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83508F41C38706D0027C24C /* ElementIndexPair.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ElementIndexPair.swift; sourceTree = \"<group>\"; };\n\t\tC83508F51C38706D0027C24C /* EquatableArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EquatableArray.swift; sourceTree = \"<group>\"; };\n\t\tC83508F71C38706D0027C24C /* BackgroundThreadPrimitiveHotObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackgroundThreadPrimitiveHotObservable.swift; sourceTree = \"<group>\"; };\n\t\tC83508F81C38706D0027C24C /* MainThreadPrimitiveHotObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainThreadPrimitiveHotObservable.swift; sourceTree = \"<group>\"; };\n\t\tC83508F91C38706D0027C24C /* MockDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC83508FA1C38706D0027C24C /* MySubject.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MySubject.swift; sourceTree = \"<group>\"; };\n\t\tC83508FB1C38706D0027C24C /* Observable.Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Observable.Extensions.swift; sourceTree = \"<group>\"; };\n\t\tC83508FC1C38706D0027C24C /* PrimitiveHotObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrimitiveHotObservable.swift; sourceTree = \"<group>\"; };\n\t\tC83508FD1C38706D0027C24C /* PrimitiveMockObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrimitiveMockObserver.swift; sourceTree = \"<group>\"; };\n\t\tC83508FE1C38706D0027C24C /* TestConnectableObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestConnectableObservable.swift; sourceTree = \"<group>\"; };\n\t\tC83508FF1C38706D0027C24C /* Observable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC83509001C38706D0027C24C /* TestVirtualScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestVirtualScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC83509021C38706D0027C24C /* Observable+Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+Tests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83509031C38706D0027C24C /* AssumptionsTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AssumptionsTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509041C38706D0027C24C /* BagTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BagTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509051C38706D0027C24C /* BehaviorSubjectTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BehaviorSubjectTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509061C38706D0027C24C /* CurrentThreadSchedulerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CurrentThreadSchedulerTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509071C38706D0027C24C /* DisposableTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposableTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509081C38706D0027C24C /* HistoricalSchedulerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricalSchedulerTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509091C38706D0027C24C /* MainSchedulerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainSchedulerTests.swift; sourceTree = \"<group>\"; };\n\t\tC835090F1C38706D0027C24C /* Observable+CombineLatestTests+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+CombineLatestTests+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC83509101C38706D0027C24C /* Observable+CombineLatestTests+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"Observable+CombineLatestTests+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC83509111C38706D0027C24C /* Observable+ZipTests+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ZipTests+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC83509121C38706D0027C24C /* Observable+ZipTests+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"Observable+ZipTests+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC83509161C38706D0027C24C /* Observable+SubscriptionTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+SubscriptionTest.swift\"; sourceTree = \"<group>\"; };\n\t\tC83509181C38706D0027C24C /* ObserverTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObserverTests.swift; sourceTree = \"<group>\"; };\n\t\tC83509191C38706D0027C24C /* QueueTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueueTests.swift; sourceTree = \"<group>\"; };\n\t\tC835091A1C38706D0027C24C /* SubjectConcurrencyTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubjectConcurrencyTest.swift; sourceTree = \"<group>\"; };\n\t\tC835091C1C38706D0027C24C /* VirtualSchedulerTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VirtualSchedulerTest.swift; sourceTree = \"<group>\"; };\n\t\tC83509841C38740E0027C24C /* AllTests-tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"AllTests-tvOS.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC83509941C38742C0027C24C /* AllTests-macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"AllTests-macOS.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8353CDB1DA19BA000BE3F5C /* MessageProcessingStage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageProcessingStage.swift; sourceTree = \"<group>\"; };\n\t\tC8353CE01DA19BC500BE3F5C /* Recorded+Timeless.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Recorded+Timeless.swift\"; sourceTree = \"<group>\"; };\n\t\tC8353CE11DA19BC500BE3F5C /* TestErrors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestErrors.swift; sourceTree = \"<group>\"; };\n\t\tC8353CE21DA19BC500BE3F5C /* XCTest+AllTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"XCTest+AllTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8379EF31D1DD326003EF8FC /* UIButton+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIButton+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC83D73B41C1DBAEE003DC470 /* InvocableScheduledItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InvocableScheduledItem.swift; sourceTree = \"<group>\"; };\n\t\tC83D73B51C1DBAEE003DC470 /* InvocableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InvocableType.swift; sourceTree = \"<group>\"; };\n\t\tC83D73B61C1DBAEE003DC470 /* ScheduledItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledItem.swift; sourceTree = \"<group>\"; };\n\t\tC83D73B71C1DBAEE003DC470 /* ScheduledItemType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ScheduledItemType.swift; sourceTree = \"<group>\"; };\n\t\tC849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObservableConvertibleType.swift; sourceTree = \"<group>\"; };\n\t\tC84CC54D1BDCF48200E06A64 /* LockOwnerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LockOwnerType.swift; sourceTree = \"<group>\"; };\n\t\tC84CC5521BDCF49300E06A64 /* SynchronizedOnType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedOnType.swift; sourceTree = \"<group>\"; };\n\t\tC84CC55C1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedUnsubscribeType.swift; sourceTree = \"<group>\"; };\n\t\tC84CC5611BDD037900E06A64 /* SynchronizedDisposeType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SynchronizedDisposeType.swift; sourceTree = \"<group>\"; };\n\t\tC84CC5661BDD08A500E06A64 /* SubscriptionDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SubscriptionDisposable.swift; sourceTree = \"<group>\"; };\n\t\tC85217E81E3374970015DD38 /* GroupedObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GroupedObservable.swift; sourceTree = \"<group>\"; };\n\t\tC85217F41E33F9D70015DD38 /* RecursiveLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RecursiveLock.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC85217F61E33FBBE0015DD38 /* RecursiveLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RecursiveLock.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC85217FB1E33FBFB0015DD38 /* RecursiveLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RecursiveLock.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC85218001E33FC160015DD38 /* RecursiveLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RecursiveLock.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC85218041E33FCA50015DD38 /* Resources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resources.swift; sourceTree = \"<group>\"; };\n\t\tC8550B4A1D95A41400A6FCFE /* Reactive.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reactive.swift; sourceTree = \"<group>\"; };\n\t\tC8561B651DFE1169005E97F1 /* ExampleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleTests.swift; sourceTree = \"<group>\"; };\n\t\tC85B01671DB2ACAF006043C3 /* Platform.Darwin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = \"<group>\"; };\n\t\tC85B01681DB2ACAF006043C3 /* Platform.Linux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = \"<group>\"; };\n\t\tC85B01721DB2ACF2006043C3 /* Platform.Darwin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = \"<group>\"; };\n\t\tC85B01731DB2ACF2006043C3 /* Platform.Linux.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = \"<group>\"; };\n\t\tC85BA04B1C3878740075D68E /* Microoptimizations.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Microoptimizations.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC85E6FBB1F52FF4F00C5681E /* Signal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Signal.swift; sourceTree = \"<group>\"; };\n\t\tC85E6FBD1F53025700C5681E /* SchedulerType+SharedSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SchedulerType+SharedSequence.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781471DB8119900B2029A /* Bag.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = \"<group>\"; };\n\t\tC86781481DB8119900B2029A /* InfiniteSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InfiniteSequence.swift; sourceTree = \"<group>\"; };\n\t\tC86781491DB8119900B2029A /* PriorityQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PriorityQueue.swift; sourceTree = \"<group>\"; };\n\t\tC867814A1DB8119900B2029A /* Queue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = \"<group>\"; };\n\t\tC867816C1DB8129E00B2029A /* Bag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = \"<group>\"; };\n\t\tC867816D1DB8129E00B2029A /* InfiniteSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InfiniteSequence.swift; sourceTree = \"<group>\"; };\n\t\tC867816E1DB8129E00B2029A /* PriorityQueue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PriorityQueue.swift; sourceTree = \"<group>\"; };\n\t\tC867816F1DB8129E00B2029A /* Queue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Queue.swift; sourceTree = \"<group>\"; };\n\t\tC86781821DB8143A00B2029A /* Bag.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bag.swift; sourceTree = \"<group>\"; };\n\t\tC86781871DB814AD00B2029A /* Bag+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Bag+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781911DB823B500B2029A /* NSButton+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSButton+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781921DB823B500B2029A /* NSControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSControl+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781941DB823B500B2029A /* NSSlider+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSSlider+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781951DB823B500B2029A /* NSTextField+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSTextField+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86781961DB823B500B2029A /* NSView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC86B1E211D42BF5200130546 /* SchedulerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SchedulerTests.swift; sourceTree = \"<group>\"; };\n\t\tC8802DD31F8CD47F001D677E /* UIControl+RxTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"UIControl+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewReactiveArrayDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewReactiveArrayDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC88253F41B8A752B00B02D69 /* ItemEvents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemEvents.swift; sourceTree = \"<group>\"; };\n\t\tC88253F71B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDataSourceType.swift; sourceTree = \"<group>\"; };\n\t\tC88253F81B8A752B00B02D69 /* RxTableViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDataSourceType.swift; sourceTree = \"<group>\"; };\n\t\tC88253FC1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RxCollectionViewDataSourceProxy.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88253FD1B8A752B00B02D69 /* RxCollectionViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC88253FE1B8A752B00B02D69 /* RxScrollViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RxScrollViewDelegateProxy.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88253FF1B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RxSearchBarDelegateProxy.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88254001B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = RxTableViewDataSourceProxy.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88254011B8A752B00B02D69 /* RxTableViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC88254021B8A752B00B02D69 /* RxTextViewDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTextViewDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC88254051B8A752B00B02D69 /* UIBarButtonItem+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UIBarButtonItem+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254061B8A752B00B02D69 /* UIButton+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIButton+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254071B8A752B00B02D69 /* UICollectionView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UICollectionView+Rx.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88254081B8A752B00B02D69 /* UIControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UIControl+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254091B8A752B00B02D69 /* UIDatePicker+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIDatePicker+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC882540A1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIGestureRecognizer+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC882540D1B8A752B00B02D69 /* UIScrollView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UIScrollView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC882540E1B8A752B00B02D69 /* UISearchBar+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UISearchBar+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC882540F1B8A752B00B02D69 /* UISegmentedControl+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISegmentedControl+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254101B8A752B00B02D69 /* UISlider+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISlider+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254111B8A752B00B02D69 /* UISwitch+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISwitch+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254121B8A752B00B02D69 /* UITableView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UITableView+Rx.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC88254131B8A752B00B02D69 /* UITextField+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITextField+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC88254141B8A752B00B02D69 /* UITextView+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"UITextView+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC8845AD31EDB4C9900B36836 /* ShareReplayScope.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShareReplayScope.swift; sourceTree = \"<group>\"; };\n\t\tC8845AD91EDB607800B36836 /* Observable+ShareReplayScopeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+ShareReplayScopeTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC88E296A1BEB712E001CCB92 /* RunLoopLock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RunLoopLock.swift; sourceTree = \"<group>\"; };\n\t\tC88F76801CE5341700D5A014 /* TextInput.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextInput.swift; sourceTree = \"<group>\"; };\n\t\tC88FA50C1C25C44800CCFEA4 /* RxTest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxTest.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8941BDE1BD5695C00A0E874 /* BlockingObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlockingObservable.swift; sourceTree = \"<group>\"; };\n\t\tC8941BE31BD56B0700A0E874 /* BlockingObservable+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"BlockingObservable+Operators.swift\"; sourceTree = \"<group>\"; };\n\t\tC896A68A1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+CombineLatestTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC89814751E75A18A0035949C /* PrimitiveSequence+Zip+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"PrimitiveSequence+Zip+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC89814771E75A7D70035949C /* PrimitiveSequence+Zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"PrimitiveSequence+Zip+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC898147C1E75A98A0035949C /* PrimitiveSequenceTest+zip+arity.tt */ = {isa = PBXFileReference; lastKnownFileType = text; path = \"PrimitiveSequenceTest+zip+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC898147D1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"PrimitiveSequenceTest+zip+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1711DAAC1680065FBE6 /* ControlTarget.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlTarget.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1A51DAAC25A0065FBE6 /* RxCocoaObjCRuntimeError+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"RxCocoaObjCRuntimeError+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1AB1DAAC3350065FBE6 /* ControlEvent.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlEvent.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1AC1DAAC3350065FBE6 /* ControlProperty.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControlProperty.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1AE1DAAC3350065FBE6 /* ControlEvent+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"ControlEvent+Driver.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1AF1DAAC3350065FBE6 /* ControlProperty+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"ControlProperty+Driver.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B01DAAC3350065FBE6 /* Driver+Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Driver+Subscription.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B11DAAC3350065FBE6 /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1B21DAAC3350065FBE6 /* ObservableConvertibleType+Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+Driver.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B61DAAC3350065FBE6 /* SharedSequence+Operators+arity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+Operators+arity.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B71DAAC3350065FBE6 /* SharedSequence+Operators+arity.tt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = \"SharedSequence+Operators+arity.tt\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B81DAAC3350065FBE6 /* SharedSequence+Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+Operators.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1B91DAAC3350065FBE6 /* SharedSequence.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SharedSequence.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1BD1DAAC3350065FBE6 /* KVORepresentable+CoreGraphics.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"KVORepresentable+CoreGraphics.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1BE1DAAC3350065FBE6 /* KVORepresentable+Swift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"KVORepresentable+Swift.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1BF1DAAC3350065FBE6 /* KVORepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KVORepresentable.swift; sourceTree = \"<group>\"; };\n\t\tC89AB1C11DAAC3350065FBE6 /* NotificationCenter+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NotificationCenter+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB1C21DAAC3350065FBE6 /* NSObject+Rx+KVORepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"NSObject+Rx+KVORepresentable.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC89AB1C31DAAC3350065FBE6 /* NSObject+Rx+RawRepresentable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"NSObject+Rx+RawRepresentable.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC89AB1C41DAAC3350065FBE6 /* NSObject+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = \"NSObject+Rx.swift\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC89AB1C51DAAC3350065FBE6 /* URLSession+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"URLSession+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC89AB2261DAAC33F0065FBE6 /* RxCocoa.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCocoa.swift; sourceTree = \"<group>\"; };\n\t\tC89AB22D1DAAC3A60065FBE6 /* _RX.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RX.m; sourceTree = \"<group>\"; };\n\t\tC89AB22F1DAAC3A60065FBE6 /* _RXDelegateProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXDelegateProxy.m; sourceTree = \"<group>\"; };\n\t\tC89AB2311DAAC3A60065FBE6 /* _RXKVOObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXKVOObserver.m; sourceTree = \"<group>\"; };\n\t\tC89AB2331DAAC3A60065FBE6 /* _RXObjCRuntime.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = _RXObjCRuntime.m; sourceTree = \"<group>\"; };\n\t\tC89AB2551DAACC580065FBE6 /* _RX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RX.h; sourceTree = \"<group>\"; };\n\t\tC89AB2561DAACC580065FBE6 /* _RXDelegateProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXDelegateProxy.h; sourceTree = \"<group>\"; };\n\t\tC89AB2571DAACC580065FBE6 /* _RXKVOObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXKVOObserver.h; sourceTree = \"<group>\"; };\n\t\tC89AB2581DAACC580065FBE6 /* _RXObjCRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _RXObjCRuntime.h; sourceTree = \"<group>\"; };\n\t\tC89AB2731DAACCE30065FBE6 /* RxCocoaRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxCocoaRuntime.h; sourceTree = \"<group>\"; };\n\t\tC89AB2781DAACE490065FBE6 /* RxCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxCocoa.h; sourceTree = \"<group>\"; };\n\t\tC89CFA0B1DAAB4670079D23B /* RxTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTest.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA101DAABBE20079D23B /* Any+Equatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Any+Equatable.swift\"; sourceTree = \"<group>\"; };\n\t\tC89CFA111DAABBE20079D23B /* ColdObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ColdObservable.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA121DAABBE20079D23B /* Event+Equatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Event+Equatable.swift\"; sourceTree = \"<group>\"; };\n\t\tC89CFA131DAABBE20079D23B /* HotObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HotObservable.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA141DAABBE20079D23B /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC89CFA151DAABBE20079D23B /* Recorded.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Recorded.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA161DAABBE20079D23B /* RxTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTest.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA181DAABBE20079D23B /* TestScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA191DAABBE20079D23B /* TestSchedulerVirtualTimeConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestSchedulerVirtualTimeConverter.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA1A1DAABBE20079D23B /* Subscription.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Subscription.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA1B1DAABBE20079D23B /* TestableObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestableObservable.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA1C1DAABBE20079D23B /* TestableObserver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestableObserver.swift; sourceTree = \"<group>\"; };\n\t\tC89CFA1D1DAABBE20079D23B /* XCTest+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"XCTest+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC8A53ADF1F09178700490535 /* Completable+AndThen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Completable+AndThen.swift\"; sourceTree = \"<group>\"; };\n\t\tC8A53AE41F09292A00490535 /* Completable+AndThen.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Completable+AndThen.swift\"; sourceTree = \"<group>\"; };\n\t\tC8A56AD71AD7424700B4673B /* RxSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = RxSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8A81C9F1E05E82C0008DEF4 /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"DispatchQueue+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC8A9B6F31DAD752200C9B027 /* Observable+BindTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+BindTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8ADC18D2200F9B000B611D4 /* Atomic+Overrides.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Atomic+Overrides.swift\"; sourceTree = \"<group>\"; };\n\t\tC8B0F70C1F530A1700548EBE /* SharingSchedulerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingSchedulerTests.swift; sourceTree = \"<group>\"; };\n\t\tC8B0F7101F530CA700548EBE /* PublishRelay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PublishRelay.swift; sourceTree = \"<group>\"; };\n\t\tC8B0F7211F53135100548EBE /* ObservableConvertibleType+Signal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"ObservableConvertibleType+Signal.swift\"; sourceTree = \"<group>\"; };\n\t\tC8B144FA1BD2D44500267DCE /* ConcurrentMainScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConcurrentMainScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8B290841C94D55600E923D0 /* RxTest+Controls.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"RxTest+Controls.swift\"; sourceTree = \"<group>\"; };\n\t\tC8B2908C1C94D6C500E923D0 /* UISearchBar+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISearchBar+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8BAA78C1E34F8D400EEC727 /* RecursiveLockTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RecursiveLockTest.swift; sourceTree = \"<group>\"; };\n\t\tC8BF34C91C2E426800416CAE /* Platform.Darwin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Darwin.swift; sourceTree = \"<group>\"; };\n\t\tC8BF34CA1C2E426800416CAE /* Platform.Linux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Platform.Linux.swift; sourceTree = \"<group>\"; };\n\t\tC8C217D41CB7100E0038A2E6 /* UITableView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITableView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C217D61CB710200038A2E6 /* UICollectionView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UICollectionView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C3DA0E1B939767004D233E /* CurrentThreadScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = CurrentThreadScheduler.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8C4F15C1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIBarButtonItem+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F15E1DE9CC5B00003FA7 /* UISwitch+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISwitch+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1601DE9CD1600003FA7 /* UILabel+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UILabel+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1621DE9D0A800003FA7 /* UIProgressView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIProgressView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1641DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIGestureRecognizer+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1661DE9D44600003FA7 /* UISegmentedControl+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISegmentedControl+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1681DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIActivityIndicatorView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F16A1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIAlertAction+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F16C1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIDatePicker+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F16E1DE9D5E000003FA7 /* UISlider+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UISlider+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1701DE9D68000003FA7 /* UIStepper+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIStepper+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1721DE9D7A300003FA7 /* NSTextField+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSTextField+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1741DE9D80A00003FA7 /* NSSlider+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSSlider+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C4F1761DE9D84900003FA7 /* NSButton+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"NSButton+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8C8BCCE1F8944B800501D4D /* BehaviorRelay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BehaviorRelay.swift; sourceTree = \"<group>\"; };\n\t\tC8C8BCD31F89459300501D4D /* BehaviorRelay+Driver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"BehaviorRelay+Driver.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D132431C42D15E00B59FFF /* SectionedViewDataSourceType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionedViewDataSourceType.swift; sourceTree = \"<group>\"; };\n\t\tC8D970CD1F5324D90058F2FE /* Signal+Subscription.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Signal+Subscription.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D970DC1F532FD10058F2FE /* Signal+Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Signal+Test.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D970DD1F532FD10058F2FE /* SharedSequence+Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+Test.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D970DE1F532FD20058F2FE /* Driver+Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Driver+Test.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D970E01F532FD20058F2FE /* SectionedViewDataSourceMock.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionedViewDataSourceMock.swift; sourceTree = \"<group>\"; };\n\t\tC8D970E11F532FD20058F2FE /* SharedSequence+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D970E21F532FD30058F2FE /* SharedSequence+OperatorTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+OperatorTest.swift\"; sourceTree = \"<group>\"; };\n\t\tC8E390621F379041004FC993 /* Enumerated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Enumerated.swift; sourceTree = \"<group>\"; };\n\t\tC8E390671F379386004FC993 /* Observable+EnumeratedTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+EnumeratedTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8E65EFA1F6E91D1004478C3 /* Binder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Binder.swift; path = ../../RxSwift/Binder.swift; sourceTree = \"<group>\"; };\n\t\tC8E8BA551E2C181A00A4AC2C /* Benchmarks.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Benchmarks.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC8E8BA621E2C186200A4AC2C /* Benchmarks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Benchmarks.swift; sourceTree = \"<group>\"; };\n\t\tC8E8BA631E2C186200A4AC2C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC8E8BA6E1E2C18AE00A4AC2C /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC8E8BA6F1E2C18AE00A4AC2C /* main.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = \"<group>\"; };\n\t\tC8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = PerformanceTools.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC8F03F401DBB98DB00AECC4C /* Anomalies.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Anomalies.swift; sourceTree = \"<group>\"; };\n\t\tC8F03F441DBBA61B00AECC4C /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"DispatchQueue+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC8F03F491DBBAC0A00AECC4C /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = \"DispatchQueue+Extensions.swift\"; path = \"Platform/DispatchQueue+Extensions.swift\"; sourceTree = SOURCE_ROOT; };\n\t\tC8F03F4E1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = \"DispatchQueue+Extensions.swift\"; path = \"Platform/DispatchQueue+Extensions.swift\"; sourceTree = SOURCE_ROOT; };\n\t\tC8F27DAC1CE6710900D5FB4F /* UITextField+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITextField+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8F27DB11CE6711600D5FB4F /* UITextView+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITextView+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC8FA89121C30405400CD3A17 /* VirtualTimeConverterType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VirtualTimeConverterType.swift; sourceTree = \"<group>\"; };\n\t\tC8FA89131C30405400CD3A17 /* VirtualTimeScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VirtualTimeScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8FA89161C30409900CD3A17 /* HistoricalScheduler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricalScheduler.swift; sourceTree = \"<group>\"; };\n\t\tC8FA891B1C30412A00CD3A17 /* HistoricalSchedulerTimeConverter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HistoricalSchedulerTimeConverter.swift; sourceTree = \"<group>\"; };\n\t\tCB883B3F1BE24C15000AC2EE /* RefCountDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RefCountDisposable.swift; sourceTree = \"<group>\"; };\n\t\tCB883B441BE256D4000AC2EE /* BooleanDisposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BooleanDisposable.swift; sourceTree = \"<group>\"; };\n\t\tCD8F7AC427BA9187001574EB /* Infallible+Driver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Driver.swift\"; sourceTree = \"<group>\"; };\n\t\tCDDEF1691D4FB40000CA8546 /* Disposables.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Disposables.swift; sourceTree = \"<group>\"; };\n\t\tD040ADC12D5E408700A1E6B3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/RxCocoa/PrivacyInfo.xcprivacy; sourceTree = SOURCE_ROOT; };\n\t\tD040ADC32D5E409700A1E6B3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/RxRelay/PrivacyInfo.xcprivacy; sourceTree = SOURCE_ROOT; };\n\t\tD040ADC52D5E442300A1E6B3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Sources/RxSwift/PrivacyInfo.xcprivacy; sourceTree = SOURCE_ROOT; };\n\t\tD9080ACD1EA05A16002B433B /* RxNavigationControllerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxNavigationControllerDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tD9080AD21EA05DDF002B433B /* UINavigationController+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UINavigationController+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tD9080AD71EA06189002B433B /* UINavigationController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UINavigationController+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB08833426FA9834005805BE /* Observable+Concurrency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+Concurrency.swift\"; sourceTree = \"<group>\"; };\n\t\tDB08833626FB0637005805BE /* SharedSequence+Concurrency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+Concurrency.swift\"; sourceTree = \"<group>\"; };\n\t\tDB08833826FB07CB005805BE /* SharedSequence+ConcurrencyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"SharedSequence+ConcurrencyTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB0B921F26FB3139005CEED9 /* Observable+ConcurrencyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Observable+ConcurrencyTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB0B922326FB31C1005CEED9 /* PrimitiveSequence+Concurrency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"PrimitiveSequence+Concurrency.swift\"; sourceTree = \"<group>\"; };\n\t\tDB0B922526FB31EF005CEED9 /* Infallible+Concurrency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+Concurrency.swift\"; sourceTree = \"<group>\"; };\n\t\tDB0B922726FB343B005CEED9 /* Infallible+ConcurrencyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Infallible+ConcurrencyTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB0B922A26FB34D3005CEED9 /* PrimitiveSequence+ConcurrencyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"PrimitiveSequence+ConcurrencyTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB8157D2264941B200164D4B /* UIApplication+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIApplication+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tDB8157E8264941EB00164D4B /* UIApplication+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIApplication+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tECBBA59A1DF8C0BA00DDDC2E /* UITabBarController+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITabBarController+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tECBBA59D1DF8C0D400DDDC2E /* RxTabBarControllerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTabBarControllerDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tECBBA5A01DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITabBarController+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tF31F35AF1BB4FED800961002 /* UIStepper+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIStepper+Rx.swift\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tA2897D4E225CA1E7004EA481 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC80939631B8A71760088E94D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8093BB91B8A71F00088E94D /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83508C01C386F6F0027C24C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC83508C81C386F6F0027C24C /* RxSwift.framework in Frameworks */,\n\t\t\t\tA2690E7D22688CAE0032C00E /* RxCocoa.framework in Frameworks */,\n\t\t\t\tA2690E7E22688CAE0032C00E /* RxBlocking.framework in Frameworks */,\n\t\t\t\tA2690E7F22688CAE0032C00E /* RxTest.framework in Frameworks */,\n\t\t\t\tA2690E8022688CAE0032C00E /* RxRelay.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509811C38740E0027C24C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA2690E8122688CB50032C00E /* RxSwift.framework in Frameworks */,\n\t\t\t\tA2690E8222688CB50032C00E /* RxCocoa.framework in Frameworks */,\n\t\t\t\tA2690E8322688CB50032C00E /* RxBlocking.framework in Frameworks */,\n\t\t\t\tA2690E8422688CB50032C00E /* RxTest.framework in Frameworks */,\n\t\t\t\tA2690E8522688CB50032C00E /* RxRelay.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509911C38742C0027C24C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA2690E8622688CB80032C00E /* RxSwift.framework in Frameworks */,\n\t\t\t\tA2690E8722688CB80032C00E /* RxCocoa.framework in Frameworks */,\n\t\t\t\tA2690E8822688CB80032C00E /* RxBlocking.framework in Frameworks */,\n\t\t\t\tA2690E8922688CB80032C00E /* RxTest.framework in Frameworks */,\n\t\t\t\tA2690E8A22688CB80032C00E /* RxRelay.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC85BA0481C3878740075D68E /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88FA5051C25C44800CCFEA4 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8A56AD31AD7424700B4673B /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8E8BA521E2C181A00A4AC2C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8E8BA5A1E2C181A00A4AC2C /* RxSwift.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t601AE3D81EE24E3800617386 /* SwiftSupport */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t601AE3D91EE24E4F00617386 /* SwiftSupport.swift */,\n\t\t\t);\n\t\t\tpath = SwiftSupport;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t786DED6424F83F37008C4FAC /* PrimitiveSequence */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC81A09861E6C702700900B3B /* PrimitiveSequence.swift */,\n\t\t\t\t25F6ECBF1F48C37C008552FA /* Single.swift */,\n\t\t\t\t25F6ECBB1F48C366008552FA /* Maybe.swift */,\n\t\t\t\t25F6ECBD1F48C373008552FA /* Completable.swift */,\n\t\t\t\tC89814751E75A18A0035949C /* PrimitiveSequence+Zip+arity.tt */,\n\t\t\t\tC89814771E75A7D70035949C /* PrimitiveSequence+Zip+arity.swift */,\n\t\t\t\tC8A53ADF1F09178700490535 /* Completable+AndThen.swift */,\n\t\t\t\tC801DE411F6EBB29008DB060 /* ObservableType+PrimitiveSequence.swift */,\n\t\t\t\tDB0B922326FB31C1005CEED9 /* PrimitiveSequence+Concurrency.swift */,\n\t\t\t);\n\t\t\tpath = PrimitiveSequence;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t786DED6524F83F49008C4FAC /* Infallible */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t7846F56524F83AF400A39919 /* Infallible.swift */,\n\t\t\t\t786DED6224F83DE5008C4FAC /* ObservableConvertibleType+Infallible.swift */,\n\t\t\t\t786DED6824F8415B008C4FAC /* Infallible+Zip+arity.swift */,\n\t\t\t\t786DED6624F84095008C4FAC /* Infallible+Zip+arity.tt */,\n\t\t\t\t786DED6A24F84432008C4FAC /* Infallible+CombineLatest+arity.tt */,\n\t\t\t\t786DED6B24F844BC008C4FAC /* Infallible+CombineLatest+arity.swift */,\n\t\t\t\t786DED6D24F84623008C4FAC /* Infallible+Operators.swift */,\n\t\t\t\t786DED6F24F847BF008C4FAC /* Infallible+Create.swift */,\n\t\t\t\tDB0B922526FB31EF005CEED9 /* Infallible+Concurrency.swift */,\n\t\t\t\t1D858B6529E57EE900CD6814 /* Infallible+CombineLatest+Collection.swift */,\n\t\t\t);\n\t\t\tpath = Infallible;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA2897CB2225CA1C6004EA481 /* RxRelay */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8B0F7101F530CA700548EBE /* PublishRelay.swift */,\n\t\t\t\tC8C8BCCE1F8944B800501D4D /* BehaviorRelay.swift */,\n\t\t\t\t6A94254923AFC2F300B7A24C /* ReplayRelay.swift */,\n\t\t\t\tA2897D61225CA3F3004EA481 /* Observable+Bind.swift */,\n\t\t\t\tA2897D68225D023A004EA481 /* Utils.swift */,\n\t\t\t\tA2FD4EA4225D0A8100288525 /* Info.plist */,\n\t\t\t\tD040ADC32D5E409700A1E6B3 /* PrivacyInfo.xcprivacy */,\n\t\t\t);\n\t\t\tpath = RxRelay;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tA2FD4E9A225D04D600288525 /* RxRelayTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tA2FD4E9B225D04FF00288525 /* Observable+RelayBindTests.swift */,\n\t\t\t\t6A7D2CD323BBDBDC0038576E /* ReplayRelayTests.swift */,\n\t\t\t);\n\t\t\tpath = RxRelayTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093C471B8A72BE0088E94D /* RxSwift */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC85217E81E3374970015DD38 /* GroupedObservable.swift */,\n\t\t\t\tC8093C491B8A72BE0088E94D /* Cancelable.swift */,\n\t\t\t\tC8093C4D1B8A72BE0088E94D /* ConnectableObservableType.swift */,\n\t\t\t\tC8093C521B8A72BE0088E94D /* Disposable.swift */,\n\t\t\t\tC8093C631B8A72BE0088E94D /* Errors.swift */,\n\t\t\t\tC8093C641B8A72BE0088E94D /* Event.swift */,\n\t\t\t\tC8093C651B8A72BE0088E94D /* ImmediateSchedulerType.swift */,\n\t\t\t\tC8093C681B8A72BE0088E94D /* Observable.swift */,\n\t\t\t\tDB08833426FA9834005805BE /* Observable+Concurrency.swift */,\n\t\t\t\tC8093C671B8A72BE0088E94D /* ObservableType+Extensions.swift */,\n\t\t\t\tC849BE2A1BAB5D070019AD27 /* ObservableConvertibleType.swift */,\n\t\t\t\tC8093C9E1B8A72BE0088E94D /* ObservableType.swift */,\n\t\t\t\tC8093CA01B8A72BE0088E94D /* AnyObserver.swift */,\n\t\t\t\tC8093CAB1B8A72BE0088E94D /* ObserverType.swift */,\n\t\t\t\tC8550B4A1D95A41400A6FCFE /* Reactive.swift */,\n\t\t\t\tC8093CAF1B8A72BE0088E94D /* Rx.swift */,\n\t\t\t\tC8093CB01B8A72BE0088E94D /* RxMutableBox.swift */,\n\t\t\t\tC8093CB31B8A72BE0088E94D /* SchedulerType.swift */,\n\t\t\t\tC8BF34C81C2E426800416CAE /* Platform */,\n\t\t\t\tC8093C4A1B8A72BE0088E94D /* Concurrency */,\n\t\t\t\tC8093C531B8A72BE0088E94D /* Disposables */,\n\t\t\t\tC8093C691B8A72BE0088E94D /* Observables */,\n\t\t\t\tC8093CA11B8A72BE0088E94D /* Observers */,\n\t\t\t\tC8093CB41B8A72BE0088E94D /* Schedulers */,\n\t\t\t\tC8093CBD1B8A72BE0088E94D /* Subjects */,\n\t\t\t\tC85106851C2D54B70075150C /* Extensions */,\n\t\t\t\t601AE3D81EE24E3800617386 /* SwiftSupport */,\n\t\t\t\tC81A09851E6C701700900B3B /* Traits */,\n\t\t\t\tC8093C661B8A72BE0088E94D /* Info.plist */,\n\t\t\t\tD040ADC52D5E442300A1E6B3 /* PrivacyInfo.xcprivacy */,\n\t\t\t\t1E3EDF64226356A000B631B9 /* Date+Dispatch.swift */,\n\t\t\t);\n\t\t\tpath = RxSwift;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093C4A1B8A72BE0088E94D /* Concurrency */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8093C4B1B8A72BE0088E94D /* AsyncLock.swift */,\n\t\t\t\tC8093C4C1B8A72BE0088E94D /* Lock.swift */,\n\t\t\t\tC84CC54D1BDCF48200E06A64 /* LockOwnerType.swift */,\n\t\t\t\tC84CC5521BDCF49300E06A64 /* SynchronizedOnType.swift */,\n\t\t\t\tC84CC55C1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift */,\n\t\t\t\tC84CC5611BDD037900E06A64 /* SynchronizedDisposeType.swift */,\n\t\t\t);\n\t\t\tpath = Concurrency;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093C531B8A72BE0088E94D /* Disposables */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8093C541B8A72BE0088E94D /* AnonymousDisposable.swift */,\n\t\t\t\tC8093C551B8A72BE0088E94D /* BinaryDisposable.swift */,\n\t\t\t\tCB883B441BE256D4000AC2EE /* BooleanDisposable.swift */,\n\t\t\t\tC8093C571B8A72BE0088E94D /* CompositeDisposable.swift */,\n\t\t\t\tC8093C581B8A72BE0088E94D /* DisposeBag.swift */,\n\t\t\t\tC8093C591B8A72BE0088E94D /* DisposeBase.swift */,\n\t\t\t\tC84CC5661BDD08A500E06A64 /* SubscriptionDisposable.swift */,\n\t\t\t\tC8093C5C1B8A72BE0088E94D /* NopDisposable.swift */,\n\t\t\t\tCB883B3F1BE24C15000AC2EE /* RefCountDisposable.swift */,\n\t\t\t\tC8093C5D1B8A72BE0088E94D /* ScheduledDisposable.swift */,\n\t\t\t\tC8093C5F1B8A72BE0088E94D /* SerialDisposable.swift */,\n\t\t\t\tC8093C601B8A72BE0088E94D /* SingleAssignmentDisposable.swift */,\n\t\t\t\tCDDEF1691D4FB40000CA8546 /* Disposables.swift */,\n\t\t\t);\n\t\t\tpath = Disposables;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093C691B8A72BE0088E94D /* Observables */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC820A8231EB4DA5900D431BC /* AddRef.swift */,\n\t\t\t\tC820A8061EB4DA5900D431BC /* Amb.swift */,\n\t\t\t\tC820A8211EB4DA5900D431BC /* AsMaybe.swift */,\n\t\t\t\tC820A8221EB4DA5900D431BC /* AsSingle.swift */,\n\t\t\t\tC820A7EB1EB4DA5900D431BC /* Buffer.swift */,\n\t\t\t\tC820A8011EB4DA5900D431BC /* Catch.swift */,\n\t\t\t\tC820A8241EB4DA5900D431BC /* CombineLatest.swift */,\n\t\t\t\tC820A8251EB4DA5900D431BC /* CombineLatest+arity.swift */,\n\t\t\t\tC820A8261EB4DA5900D431BC /* CombineLatest+arity.tt */,\n\t\t\t\tC820A80C1EB4DA5900D431BC /* CombineLatest+Collection.swift */,\n\t\t\t\t4C5213A9225D41E60079FC77 /* CompactMap.swift */,\n\t\t\t\tC820A8091EB4DA5900D431BC /* Concat.swift */,\n\t\t\t\tC820A8181EB4DA5900D431BC /* Create.swift */,\n\t\t\t\tC820A7F11EB4DA5900D431BC /* Debounce.swift */,\n\t\t\t\tC820A80D1EB4DA5900D431BC /* Debug.swift */,\n\t\t\t\tC820A7FE1EB4DA5900D431BC /* DefaultIfEmpty.swift */,\n\t\t\t\tC820A8131EB4DA5900D431BC /* Deferred.swift */,\n\t\t\t\tC820A7E81EB4DA5900D431BC /* Delay.swift */,\n\t\t\t\tC820A7EC1EB4DA5900D431BC /* DelaySubscription.swift */,\n\t\t\t\tC820A7FC1EB4DA5900D431BC /* Dematerialize.swift */,\n\t\t\t\tC820A8041EB4DA5900D431BC /* DistinctUntilChanged.swift */,\n\t\t\t\tC820A8031EB4DA5900D431BC /* Do.swift */,\n\t\t\t\tC820A7F61EB4DA5900D431BC /* ElementAt.swift */,\n\t\t\t\tC820A8171EB4DA5900D431BC /* Empty.swift */,\n\t\t\t\tC8E390621F379041004FC993 /* Enumerated.swift */,\n\t\t\t\tC820A8141EB4DA5900D431BC /* Error.swift */,\n\t\t\t\tC820A7FB1EB4DA5900D431BC /* Filter.swift */,\n\t\t\t\t819C2F081F2FBC7F009104B6 /* First.swift */,\n\t\t\t\tC820A7F31EB4DA5900D431BC /* Generate.swift */,\n\t\t\t\tC820A7F41EB4DA5900D431BC /* GroupBy.swift */,\n\t\t\t\tC820A8151EB4DA5900D431BC /* Just.swift */,\n\t\t\t\tC820A7E61EB4DA5900D431BC /* Map.swift */,\n\t\t\t\tC820A7FD1EB4DA5900D431BC /* Materialize.swift */,\n\t\t\t\tC820A7F71EB4DA5900D431BC /* Merge.swift */,\n\t\t\t\tC820A81D1EB4DA5900D431BC /* Multicast.swift */,\n\t\t\t\tC820A8161EB4DA5900D431BC /* Never.swift */,\n\t\t\t\tC820A81A1EB4DA5900D431BC /* ObserveOn.swift */,\n\t\t\t\tC820A80E1EB4DA5900D431BC /* Optional.swift */,\n\t\t\t\tC820A8271EB4DA5900D431BC /* Producer.swift */,\n\t\t\t\tC820A8101EB4DA5900D431BC /* Range.swift */,\n\t\t\t\tC820A81F1EB4DA5900D431BC /* Reduce.swift */,\n\t\t\t\tC820A8121EB4DA5900D431BC /* Repeat.swift */,\n\t\t\t\tC820A8001EB4DA5900D431BC /* RetryWhen.swift */,\n\t\t\t\tC820A7F01EB4DA5900D431BC /* Sample.swift */,\n\t\t\t\tC820A7FF1EB4DA5900D431BC /* Scan.swift */,\n\t\t\t\tC820A80F1EB4DA5900D431BC /* Sequence.swift */,\n\t\t\t\tC8845AD31EDB4C9900B36836 /* ShareReplayScope.swift */,\n\t\t\t\tC820A7F51EB4DA5900D431BC /* SingleAsync.swift */,\n\t\t\t\tC820A8281EB4DA5900D431BC /* Sink.swift */,\n\t\t\t\tC820A7ED1EB4DA5900D431BC /* Skip.swift */,\n\t\t\t\tC820A8071EB4DA5900D431BC /* SkipUntil.swift */,\n\t\t\t\tC820A7F81EB4DA5900D431BC /* SkipWhile.swift */,\n\t\t\t\tC820A8021EB4DA5900D431BC /* StartWith.swift */,\n\t\t\t\tC820A8191EB4DA5900D431BC /* SubscribeOn.swift */,\n\t\t\t\tC820A7E71EB4DA5900D431BC /* Switch.swift */,\n\t\t\t\tC820A80A1EB4DA5900D431BC /* SwitchIfEmpty.swift */,\n\t\t\t\tC820A7EE1EB4DA5900D431BC /* Take.swift */,\n\t\t\t\tC820A7F91EB4DA5900D431BC /* TakeLast.swift */,\n\t\t\t\tC820A8081EB4DA5900D431BC /* TakeWithPredicate.swift */,\n\t\t\t\tC820A7F21EB4DA5900D431BC /* Throttle.swift */,\n\t\t\t\tC820A7E91EB4DA5900D431BC /* Timeout.swift */,\n\t\t\t\tC820A7EF1EB4DA5900D431BC /* Timer.swift */,\n\t\t\t\tC820A8201EB4DA5900D431BC /* ToArray.swift */,\n\t\t\t\tC820A8111EB4DA5900D431BC /* Using.swift */,\n\t\t\t\tC820A7EA1EB4DA5900D431BC /* Window.swift */,\n\t\t\t\tC820A8051EB4DA5900D431BC /* WithLatestFrom.swift */,\n\t\t\t\tC820A8291EB4DA5900D431BC /* Zip.swift */,\n\t\t\t\tC820A82A1EB4DA5900D431BC /* Zip+arity.swift */,\n\t\t\t\tC820A82B1EB4DA5900D431BC /* Zip+arity.tt */,\n\t\t\t\tC820A80B1EB4DA5900D431BC /* Zip+Collection.swift */,\n\t\t\t\t788DCE5C24CB8249005B8F8C /* Decode.swift */,\n\t\t\t\tA20CC6C8259F3FE700370AE3 /* WithUnretained.swift */,\n\t\t\t);\n\t\t\tpath = Observables;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093CA11B8A72BE0088E94D /* Observers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8093CA21B8A72BE0088E94D /* AnonymousObserver.swift */,\n\t\t\t\tC8093CA61B8A72BE0088E94D /* ObserverBase.swift */,\n\t\t\t\tC8093CA91B8A72BE0088E94D /* TailRecursiveSink.swift */,\n\t\t\t);\n\t\t\tpath = Observers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093CB41B8A72BE0088E94D /* Schedulers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83D73B21C1DBAEE003DC470 /* Internal */,\n\t\t\t\tC8093CB51B8A72BE0088E94D /* ConcurrentDispatchQueueScheduler.swift */,\n\t\t\t\tC8B144FA1BD2D44500267DCE /* ConcurrentMainScheduler.swift */,\n\t\t\t\tC8C3DA0E1B939767004D233E /* CurrentThreadScheduler.swift */,\n\t\t\t\tC8093CB71B8A72BE0088E94D /* MainScheduler.swift */,\n\t\t\t\tC8093CB81B8A72BE0088E94D /* OperationQueueScheduler.swift */,\n\t\t\t\tC8093CB91B8A72BE0088E94D /* RecursiveScheduler.swift */,\n\t\t\t\tC8093CBB1B8A72BE0088E94D /* SchedulerServices+Emulation.swift */,\n\t\t\t\tC8093CBC1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift */,\n\t\t\t\tC8FA89121C30405400CD3A17 /* VirtualTimeConverterType.swift */,\n\t\t\t\tC8FA89131C30405400CD3A17 /* VirtualTimeScheduler.swift */,\n\t\t\t\tC8FA89161C30409900CD3A17 /* HistoricalScheduler.swift */,\n\t\t\t\tC8FA891B1C30412A00CD3A17 /* HistoricalSchedulerTimeConverter.swift */,\n\t\t\t);\n\t\t\tpath = Schedulers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093CBD1B8A72BE0088E94D /* Subjects */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t0BA949661E224B7E0036DD06 /* AsyncSubject.swift */,\n\t\t\t\tC8093CBE1B8A72BE0088E94D /* BehaviorSubject.swift */,\n\t\t\t\tC8093CBF1B8A72BE0088E94D /* PublishSubject.swift */,\n\t\t\t\tC8093CC01B8A72BE0088E94D /* ReplaySubject.swift */,\n\t\t\t\tC8093CC11B8A72BE0088E94D /* SubjectType.swift */,\n\t\t\t);\n\t\t\tpath = Subjects;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093E801B8A732E0088E94D /* RxCocoa */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB2781DAACE490065FBE6 /* RxCocoa.h */,\n\t\t\t\tC89AB2261DAAC33F0065FBE6 /* RxCocoa.swift */,\n\t\t\t\tC8A81C9E1E05E82C0008DEF4 /* Platform */,\n\t\t\t\tC89AB1AA1DAAC3350065FBE6 /* Traits */,\n\t\t\t\tC8093E811B8A732E0088E94D /* Common */,\n\t\t\t\tC89AB1BC1DAAC3350065FBE6 /* Foundation */,\n\t\t\t\tC88253EE1B8A752B00B02D69 /* iOS */,\n\t\t\t\tC86781901DB823B500B2029A /* macOS */,\n\t\t\t\tC89AB22B1DAAC3A60065FBE6 /* Runtime */,\n\t\t\t\tC8093E9D1B8A732E0088E94D /* Info.plist */,\n\t\t\t\tD040ADC12D5E408700A1E6B3 /* PrivacyInfo.xcprivacy */,\n\t\t\t);\n\t\t\tpath = RxCocoa;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093E811B8A732E0088E94D /* Common */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC80D338E1B91EF9E0014629D /* Observable+Bind.swift */,\n\t\t\t\t786DED7124F849F3008C4FAC /* Infallible+Bind.swift */,\n\t\t\t\tC8093E8B1B8A732E0088E94D /* DelegateProxy.swift */,\n\t\t\t\tC8093E8C1B8A732E0088E94D /* DelegateProxyType.swift */,\n\t\t\t\tC8093E9C1B8A732E0088E94D /* RxTarget.swift */,\n\t\t\t\tC89AB1711DAAC1680065FBE6 /* ControlTarget.swift */,\n\t\t\t\tC8D132431C42D15E00B59FFF /* SectionedViewDataSourceType.swift */,\n\t\t\t\tC88F76801CE5341700D5A014 /* TextInput.swift */,\n\t\t\t\tC89AB1A51DAAC25A0065FBE6 /* RxCocoaObjCRuntimeError+Extensions.swift */,\n\t\t\t\tC8E65EFA1F6E91D1004478C3 /* Binder.swift */,\n\t\t\t);\n\t\t\tpath = Common;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8093F571B8A73A20088E94D /* RxBlocking */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8093F591B8A73A20088E94D /* README.md */,\n\t\t\t\tC85B01661DB2ACAF006043C3 /* Platform */,\n\t\t\t\tC8093F581B8A73A20088E94D /* ObservableConvertibleType+Blocking.swift */,\n\t\t\t\tC8941BDE1BD5695C00A0E874 /* BlockingObservable.swift */,\n\t\t\t\tC8941BE31BD56B0700A0E874 /* BlockingObservable+Operators.swift */,\n\t\t\t\tC88E296A1BEB712E001CCB92 /* RunLoopLock.swift */,\n\t\t\t\tC85218041E33FCA50015DD38 /* Resources.swift */,\n\t\t\t\tA111CE961B91C97C00D0DCEE /* Info.plist */,\n\t\t\t);\n\t\t\tpath = RxBlocking;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC81A09851E6C701700900B3B /* Traits */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t786DED6524F83F49008C4FAC /* Infallible */,\n\t\t\t\t786DED6424F83F37008C4FAC /* PrimitiveSequence */,\n\t\t\t);\n\t\t\tpath = Traits;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC81B6AA71DB2C15C0047CF86 /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8165AD421891DBE00494BEF /* AtomicInt.swift */,\n\t\t\t\tC8F03F4E1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift */,\n\t\t\t\tC81B6AA81DB2C15C0047CF86 /* Platform.Darwin.swift */,\n\t\t\t\tC81B6AA91DB2C15C0047CF86 /* Platform.Linux.swift */,\n\t\t\t\tC85218001E33FC160015DD38 /* RecursiveLock.swift */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC834F6C01DB394E100C29244 /* RxBlockingTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC834F6C11DB394E100C29244 /* Observable+BlockingTest.swift */,\n\t\t\t);\n\t\t\tpath = RxBlockingTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83508D31C38706D0027C24C /* Tests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8E8BA6D1E2C18AE00A4AC2C /* Microoptimizations */,\n\t\t\t\tC8E8BA611E2C186200A4AC2C /* Benchmarks */,\n\t\t\t\tC81B6AA71DB2C15C0047CF86 /* Platform */,\n\t\t\t\tC834F6C01DB394E100C29244 /* RxBlockingTests */,\n\t\t\t\tC83508D81C38706D0027C24C /* RxCocoaTests */,\n\t\t\t\tC83508F21C38706D0027C24C /* RxSwiftTests */,\n\t\t\t\tA2FD4E9A225D04D600288525 /* RxRelayTests */,\n\t\t\t\tC89CFA0B1DAAB4670079D23B /* RxTest.swift */,\n\t\t\t\tC8353CE01DA19BC500BE3F5C /* Recorded+Timeless.swift */,\n\t\t\t\tC8353CE11DA19BC500BE3F5C /* TestErrors.swift */,\n\t\t\t\tC8353CE21DA19BC500BE3F5C /* XCTest+AllTests.swift */,\n\t\t\t\tC8353CDB1DA19BA000BE3F5C /* MessageProcessingStage.swift */,\n\t\t\t\tC8323A8D1E33FD5200CC0C7F /* Resources.swift */,\n\t\t\t);\n\t\t\tpath = Tests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83508D81C38706D0027C24C /* RxCocoaTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8D970DF1F532FD20058F2FE /* TestImplementations */,\n\t\t\t\tC8561B651DFE1169005E97F1 /* ExampleTests.swift */,\n\t\t\t\tC8D970DC1F532FD10058F2FE /* Signal+Test.swift */,\n\t\t\t\tC8D970DD1F532FD10058F2FE /* SharedSequence+Test.swift */,\n\t\t\t\tC8D970E11F532FD20058F2FE /* SharedSequence+Extensions.swift */,\n\t\t\t\tC8D970DE1F532FD20058F2FE /* Driver+Test.swift */,\n\t\t\t\tC8D970E21F532FD30058F2FE /* SharedSequence+OperatorTest.swift */,\n\t\t\t\tDB08833826FB07CB005805BE /* SharedSequence+ConcurrencyTests.swift */,\n\t\t\t\tC8091C521FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift */,\n\t\t\t\tC83508DD1C38706D0027C24C /* ControlEventTests.swift */,\n\t\t\t\tC83508DE1C38706D0027C24C /* ControlPropertyTests.swift */,\n\t\t\t\tDB8157D2264941B200164D4B /* UIApplication+RxTests.swift */,\n\t\t\t\tC83508E11C38706D0027C24C /* DelegateProxyTest.swift */,\n\t\t\t\t504540CA24196EB10098665F /* WKWebView+RxTests.swift */,\n\t\t\t\tC83508DF1C38706D0027C24C /* DelegateProxyTest+Cocoa.swift */,\n\t\t\t\tC83508E01C38706D0027C24C /* DelegateProxyTest+UIKit.swift */,\n\t\t\t\t504540CF241971E70098665F /* DelegateProxyTest+WebKit.swift */,\n\t\t\t\tC83508E41C38706D0027C24C /* KVOObservableTests.swift */,\n\t\t\t\tC8C4F1761DE9D84900003FA7 /* NSButton+RxTests.swift */,\n\t\t\t\tC834F6C51DB3950600C29244 /* NSControl+RxTests.swift */,\n\t\t\t\tC83508E51C38706D0027C24C /* NSLayoutConstraint+RxTests.swift */,\n\t\t\t\tC83508E61C38706D0027C24C /* NotificationCenterTests.swift */,\n\t\t\t\tC83508E71C38706D0027C24C /* NSObject+RxTests.swift */,\n\t\t\t\tC8C4F1741DE9D80A00003FA7 /* NSSlider+RxTests.swift */,\n\t\t\t\tC8C4F1721DE9D7A300003FA7 /* NSTextField+RxTests.swift */,\n\t\t\t\t927A78C82117BCB400A45638 /* NSTextView+RxTests.swift */,\n\t\t\t\tC83508E81C38706D0027C24C /* NSView+RxTests.swift */,\n\t\t\t\tC8A9B6F31DAD752200C9B027 /* Observable+BindTests.swift */,\n\t\t\t\tC83508E91C38706D0027C24C /* RuntimeStateSnapshot.swift */,\n\t\t\t\tC83508EA1C38706D0027C24C /* RXObjCRuntime+Testing.h */,\n\t\t\t\tC83508EB1C38706D0027C24C /* RXObjCRuntime+Testing.m */,\n\t\t\t\tC83508EC1C38706D0027C24C /* RxObjCRuntimeState.swift */,\n\t\t\t\tC83508ED1C38706D0027C24C /* RxTest-iOS-Bridging-Header.h */,\n\t\t\t\tC83508EE1C38706D0027C24C /* RxTest-macOS-Bridging-Header.h */,\n\t\t\t\tC83508EF1C38706D0027C24C /* RxTest-tvOS-Bridging-Header.h */,\n\t\t\t\tC8B290841C94D55600E923D0 /* RxTest+Controls.swift */,\n\t\t\t\tC83508F01C38706D0027C24C /* SentMessageTest.swift */,\n\t\t\t\tC8C4F1681DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift */,\n\t\t\t\tC8C4F16A1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift */,\n\t\t\t\tC8C4F15C1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift */,\n\t\t\t\tC8379EF31D1DD326003EF8FC /* UIButton+RxTests.swift */,\n\t\t\t\tC8802DD31F8CD47F001D677E /* UIControl+RxTests.swift */,\n\t\t\t\tC8C217D61CB710200038A2E6 /* UICollectionView+RxTests.swift */,\n\t\t\t\tC8C4F16C1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift */,\n\t\t\t\tC8C4F1641DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift */,\n\t\t\t\tC8C4F1601DE9CD1600003FA7 /* UILabel+RxTests.swift */,\n\t\t\t\tD9080AD71EA06189002B433B /* UINavigationController+RxTests.swift */,\n\t\t\t\t54700C9E1CE37D1000EF3A8F /* UINavigationItem+RxTests.swift.swift */,\n\t\t\t\t914FCD661CCDB82E0058B304 /* UIPageControl+RxTest.swift */,\n\t\t\t\t844BC8B71CE5023200F5C7CB /* UIPickerView+RxTests.swift */,\n\t\t\t\tC8C4F1621DE9D0A800003FA7 /* UIProgressView+RxTests.swift */,\n\t\t\t\t033C2EF41D081B2A0050C015 /* UIScrollView+RxTests.swift */,\n\t\t\t\tC8B2908C1C94D6C500E923D0 /* UISearchBar+RxTests.swift */,\n\t\t\t\t84E4D3951C9B011000ADFDC9 /* UISearchController+RxTests.swift */,\n\t\t\t\tC8C4F1661DE9D44600003FA7 /* UISegmentedControl+RxTests.swift */,\n\t\t\t\tC8C4F16E1DE9D5E000003FA7 /* UISlider+RxTests.swift */,\n\t\t\t\tC8C4F1701DE9D68000003FA7 /* UIStepper+RxTests.swift */,\n\t\t\t\tC8C4F15E1DE9CC5B00003FA7 /* UISwitch+RxTests.swift */,\n\t\t\t\t88718D001CE5DE2500D88D60 /* UITabBar+RxTests.swift */,\n\t\t\t\tECBBA5A01DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift */,\n\t\t\t\t7EDBAEAB1C89B1A5006CBE67 /* UITabBarItem+RxTests.swift */,\n\t\t\t\tC8C217D41CB7100E0038A2E6 /* UITableView+RxTests.swift */,\n\t\t\t\tC8F27DAC1CE6710900D5FB4F /* UITextField+RxTests.swift */,\n\t\t\t\tC8F27DB11CE6711600D5FB4F /* UITextView+RxTests.swift */,\n\t\t\t\tC83508F11C38706D0027C24C /* UIView+RxTests.swift */,\n\t\t\t\t271A97421CFC99FE00D64125 /* UIViewController+RxTests.swift */,\n\t\t\t\t78C385CD25685076005E39B3 /* Infallible+BindTests.swift */,\n\t\t\t);\n\t\t\tpath = RxCocoaTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83508F21C38706D0027C24C /* RxSwiftTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8F03F401DBB98DB00AECC4C /* Anomalies.swift */,\n\t\t\t\tC83509031C38706D0027C24C /* AssumptionsTest.swift */,\n\t\t\t\t0BA9496B1E224B9C0036DD06 /* AsyncSubjectTests.swift */,\n\t\t\t\tC8ADC18D2200F9B000B611D4 /* Atomic+Overrides.swift */,\n\t\t\t\t1E3079AB21FB52330072A7E6 /* AtomicTests.swift */,\n\t\t\t\tC83509041C38706D0027C24C /* BagTest.swift */,\n\t\t\t\tC83509051C38706D0027C24C /* BehaviorSubjectTest.swift */,\n\t\t\t\t78B6157623B6A035009C2AD9 /* Binder+Tests.swift */,\n\t\t\t\tC8A53AE41F09292A00490535 /* Completable+AndThen.swift */,\n\t\t\t\tC801DE3D1F6EAD57008DB060 /* CompletableTest.swift */,\n\t\t\t\tC83509061C38706D0027C24C /* CurrentThreadSchedulerTest.swift */,\n\t\t\t\tC83509071C38706D0027C24C /* DisposableTest.swift */,\n\t\t\t\t4C8DE0E120D54545003E2D8A /* DisposeBagTest.swift */,\n\t\t\t\tC822BAC51DB4048F00F98810 /* Event+Test.swift */,\n\t\t\t\tC83509081C38706D0027C24C /* HistoricalSchedulerTest.swift */,\n\t\t\t\tC83509091C38706D0027C24C /* MainSchedulerTests.swift */,\n\t\t\t\tC801DE391F6EAD48008DB060 /* MaybeTest.swift */,\n\t\t\t\tC820A9491EB4E75E00D431BC /* Observable+AmbTests.swift */,\n\t\t\t\tC820AA051EB5139C00D431BC /* Observable+BufferTests.swift */,\n\t\t\t\tC820A9891EB4FBD600D431BC /* Observable+CatchTests.swift */,\n\t\t\t\tC896A68A1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift */,\n\t\t\t\tC835090F1C38706D0027C24C /* Observable+CombineLatestTests+arity.swift */,\n\t\t\t\tC83509101C38706D0027C24C /* Observable+CombineLatestTests+arity.tt */,\n\t\t\t\t4C5213AB225E20350079FC77 /* Observable+CompactMapTests.swift */,\n\t\t\t\tC820A9951EB4FF7000D431BC /* Observable+ConcatTests.swift */,\n\t\t\t\tC820A9851EB4FB5B00D431BC /* Observable+DebugTests.swift */,\n\t\t\t\tC820A9F11EB5109300D431BC /* Observable+DefaultIfEmpty.swift */,\n\t\t\t\tC820AA011EB5134000D431BC /* Observable+DelaySubscriptionTests.swift */,\n\t\t\t\tC820AA111EB5145200D431BC /* Observable+DelayTests.swift */,\n\t\t\t\tC820A9FD1EB5110E00D431BC /* Observable+DematerializeTests.swift */,\n\t\t\t\tC820A9D51EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift */,\n\t\t\t\tC820A9D91EB50CAA00D431BC /* Observable+DoOnTests.swift */,\n\t\t\t\tC820A9C91EB50A7100D431BC /* Observable+ElementAtTests.swift */,\n\t\t\t\tC8E390671F379386004FC993 /* Observable+EnumeratedTests.swift */,\n\t\t\t\tC820A9AD1EB5073E00D431BC /* Observable+FilterTests.swift */,\n\t\t\t\t788DCE5E24CB8512005B8F8C /* Observable+DecodeTests.swift */,\n\t\t\t\tC820A9751EB4F92100D431BC /* Observable+GenerateTests.swift */,\n\t\t\t\tC820A9D11EB50B0900D431BC /* Observable+GroupByTests.swift */,\n\t\t\t\tC820A9691EB4F64800D431BC /* Observable+JustTests.swift */,\n\t\t\t\tC820A9B51EB5081400D431BC /* Observable+MapTests.swift */,\n\t\t\t\tC820A9F91EB510D500D431BC /* Observable+MaterializeTests.swift */,\n\t\t\t\tC820A9991EB5001C00D431BC /* Observable+MergeTests.swift */,\n\t\t\t\tC820A9551EB4ED7C00D431BC /* Observable+MulticastTests.swift */,\n\t\t\t\tC820A9611EB4EFD300D431BC /* Observable+ObserveOnTests.swift */,\n\t\t\t\tC820A9711EB4F84000D431BC /* Observable+OptionalTests.swift */,\n\t\t\t\tC801DE491F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift */,\n\t\t\t\tC820A9791EB4FA0800D431BC /* Observable+RangeTests.swift */,\n\t\t\t\tC820A94D1EB4EC3C00D431BC /* Observable+ReduceTests.swift */,\n\t\t\t\tC820A97D1EB4FA5A00D431BC /* Observable+RepeatTests.swift */,\n\t\t\t\tC820A9E91EB50E3400D431BC /* Observable+RetryWhenTests.swift */,\n\t\t\t\tC820A9E11EB50D6C00D431BC /* Observable+SampleTests.swift */,\n\t\t\t\tC820A9ED1EB50EA100D431BC /* Observable+ScanTests.swift */,\n\t\t\t\tC820A96D1EB4F7AC00D431BC /* Observable+SequenceTests.swift */,\n\t\t\t\tC8845AD91EDB607800B36836 /* Observable+ShareReplayScopeTests.swift */,\n\t\t\t\tC820A9CD1EB50AD400D431BC /* Observable+SingleTests.swift */,\n\t\t\t\tC820A9C11EB509FC00D431BC /* Observable+SkipTests.swift */,\n\t\t\t\tC820A9A51EB5056C00D431BC /* Observable+SkipUntilTests.swift */,\n\t\t\t\tC820A9C51EB50A4200D431BC /* Observable+SkipWhileTests.swift */,\n\t\t\t\tC820A9651EB4F39500D431BC /* Observable+SubscribeOnTests.swift */,\n\t\t\t\tC83509161C38706D0027C24C /* Observable+SubscriptionTest.swift */,\n\t\t\t\tC820A9911EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift */,\n\t\t\t\tC820A98D1EB4FCC400D431BC /* Observable+SwitchTests.swift */,\n\t\t\t\tC820A9BD1EB509B500D431BC /* Observable+TakeLastTests.swift */,\n\t\t\t\tC820A9B91EB5097700D431BC /* Observable+TakeTests.swift */,\n\t\t\t\tC820A9A11EB5011700D431BC /* Observable+TakeUntilTests.swift */,\n\t\t\t\tC820A9B11EB507D300D431BC /* Observable+TakeWhileTests.swift */,\n\t\t\t\tC83509021C38706D0027C24C /* Observable+Tests.swift */,\n\t\t\t\tC820A9DD1EB50CF800D431BC /* Observable+ThrottleTests.swift */,\n\t\t\t\tC820AA0D1EB5140100D431BC /* Observable+TimeoutTests.swift */,\n\t\t\t\tC820A9E51EB50DB900D431BC /* Observable+TimerTests.swift */,\n\t\t\t\tC820A9511EB4ECC000D431BC /* Observable+ToArrayTests.swift */,\n\t\t\t\tC820A9811EB4FB0400D431BC /* Observable+UsingTests.swift */,\n\t\t\t\tC820AA091EB513C800D431BC /* Observable+WindowTests.swift */,\n\t\t\t\tC820A9A91EB505A800D431BC /* Observable+WithLatestFromTests.swift */,\n\t\t\t\tC81A097C1E6C27A100900B3B /* Observable+ZipTests.swift */,\n\t\t\t\tC83509111C38706D0027C24C /* Observable+ZipTests+arity.swift */,\n\t\t\t\tC83509121C38706D0027C24C /* Observable+ZipTests+arity.tt */,\n\t\t\t\tC82FF0EE1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift */,\n\t\t\t\tC83509181C38706D0027C24C /* ObserverTests.swift */,\n\t\t\t\tC898147D1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift */,\n\t\t\t\tC898147C1E75A98A0035949C /* PrimitiveSequenceTest+zip+arity.tt */,\n\t\t\t\t1AF67DA11CED420A00C310FA /* PublishSubjectTest.swift */,\n\t\t\t\tC83509191C38706D0027C24C /* QueueTests.swift */,\n\t\t\t\tC822BACD1DB424EC00F98810 /* Reactive+Tests.swift */,\n\t\t\t\tC8BAA78C1E34F8D400EEC727 /* RecursiveLockTest.swift */,\n\t\t\t\t1AF67DA51CED430100C310FA /* ReplaySubjectTest.swift */,\n\t\t\t\tC86B1E211D42BF5200130546 /* SchedulerTests.swift */,\n\t\t\t\tC8B0F70C1F530A1700548EBE /* SharingSchedulerTests.swift */,\n\t\t\t\tC801DE351F6EAD3C008DB060 /* SingleTest.swift */,\n\t\t\t\tC835091A1C38706D0027C24C /* SubjectConcurrencyTest.swift */,\n\t\t\t\t1E9DA0C422006858000EB80A /* Synchronized.swift */,\n\t\t\t\tC83508F31C38706D0027C24C /* TestImplementations */,\n\t\t\t\tC835091C1C38706D0027C24C /* VirtualSchedulerTest.swift */,\n\t\t\t\t78C385EA256859DC005E39B3 /* Infallible+Tests.swift */,\n\t\t\t\tA20CC6D4259F408100370AE3 /* Observable+WithUnretainedTests.swift */,\n\t\t\t\tDB0B921F26FB3139005CEED9 /* Observable+ConcurrencyTests.swift */,\n\t\t\t\tDB0B922726FB343B005CEED9 /* Infallible+ConcurrencyTests.swift */,\n\t\t\t\tDB0B922A26FB34D3005CEED9 /* PrimitiveSequence+ConcurrencyTests.swift */,\n\t\t\t);\n\t\t\tpath = RxSwiftTests;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83508F31C38706D0027C24C /* TestImplementations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83508F41C38706D0027C24C /* ElementIndexPair.swift */,\n\t\t\t\tC83508F51C38706D0027C24C /* EquatableArray.swift */,\n\t\t\t\tC83508F61C38706D0027C24C /* Mocks */,\n\t\t\t\tC83508FF1C38706D0027C24C /* Observable+Extensions.swift */,\n\t\t\t\tC83509001C38706D0027C24C /* TestVirtualScheduler.swift */,\n\t\t\t);\n\t\t\tpath = TestImplementations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83508F61C38706D0027C24C /* Mocks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83508F71C38706D0027C24C /* BackgroundThreadPrimitiveHotObservable.swift */,\n\t\t\t\tC83508F81C38706D0027C24C /* MainThreadPrimitiveHotObservable.swift */,\n\t\t\t\tC83508F91C38706D0027C24C /* MockDisposable.swift */,\n\t\t\t\tC83508FA1C38706D0027C24C /* MySubject.swift */,\n\t\t\t\tC83508FB1C38706D0027C24C /* Observable.Extensions.swift */,\n\t\t\t\tC83508FC1C38706D0027C24C /* PrimitiveHotObservable.swift */,\n\t\t\t\tC83508FD1C38706D0027C24C /* PrimitiveMockObserver.swift */,\n\t\t\t\tC83508FE1C38706D0027C24C /* TestConnectableObservable.swift */,\n\t\t\t);\n\t\t\tpath = Mocks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83D73B21C1DBAEE003DC470 /* Internal */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83D73B41C1DBAEE003DC470 /* InvocableScheduledItem.swift */,\n\t\t\t\tC83D73B51C1DBAEE003DC470 /* InvocableType.swift */,\n\t\t\t\tC83D73B61C1DBAEE003DC470 /* ScheduledItem.swift */,\n\t\t\t\tC83D73B71C1DBAEE003DC470 /* ScheduledItemType.swift */,\n\t\t\t\tC80EEC331D42D06E00131C39 /* DispatchQueueConfiguration.swift */,\n\t\t\t);\n\t\t\tpath = Internal;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC85106851C2D54B70075150C /* Extensions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781871DB814AD00B2029A /* Bag+Rx.swift */,\n\t\t\t);\n\t\t\tpath = Extensions;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC85B01661DB2ACAF006043C3 /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8165ACC21891BE400494BEF /* AtomicInt.swift */,\n\t\t\t\tC85B01671DB2ACAF006043C3 /* Platform.Darwin.swift */,\n\t\t\t\tC85B01681DB2ACAF006043C3 /* Platform.Linux.swift */,\n\t\t\t\tC85217FB1E33FBFB0015DD38 /* RecursiveLock.swift */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC85B01711DB2ACF2006043C3 /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8165AC921891B9500494BEF /* AtomicInt.swift */,\n\t\t\t\tC86781461DB8119900B2029A /* DataStructures */,\n\t\t\t\tC85217F41E33F9D70015DD38 /* RecursiveLock.swift */,\n\t\t\t\tC85B01721DB2ACF2006043C3 /* Platform.Darwin.swift */,\n\t\t\t\tC85B01731DB2ACF2006043C3 /* Platform.Linux.swift */,\n\t\t\t\tC8F03F441DBBA61B00AECC4C /* DispatchQueue+Extensions.swift */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC85E6FBA1F52FF4F00C5681E /* Signal */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC85E6FBB1F52FF4F00C5681E /* Signal.swift */,\n\t\t\t\tC8091C561FAA39C1001DB32A /* ControlEvent+Signal.swift */,\n\t\t\t\tC8B0F7211F53135100548EBE /* ObservableConvertibleType+Signal.swift */,\n\t\t\t\tC8D970CD1F5324D90058F2FE /* Signal+Subscription.swift */,\n\t\t\t\tA2897D65225D0182004EA481 /* PublishRelay+Signal.swift */,\n\t\t\t);\n\t\t\tpath = Signal;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781461DB8119900B2029A /* DataStructures */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781471DB8119900B2029A /* Bag.swift */,\n\t\t\t\tC86781481DB8119900B2029A /* InfiniteSequence.swift */,\n\t\t\t\tC86781491DB8119900B2029A /* PriorityQueue.swift */,\n\t\t\t\tC867814A1DB8119900B2029A /* Queue.swift */,\n\t\t\t);\n\t\t\tpath = DataStructures;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC867816B1DB8129E00B2029A /* DataStructures */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC867816C1DB8129E00B2029A /* Bag.swift */,\n\t\t\t\tC867816D1DB8129E00B2029A /* InfiniteSequence.swift */,\n\t\t\t\tC867816E1DB8129E00B2029A /* PriorityQueue.swift */,\n\t\t\t\tC867816F1DB8129E00B2029A /* Queue.swift */,\n\t\t\t);\n\t\t\tpath = DataStructures;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781801DB8143A00B2029A /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781811DB8143A00B2029A /* DataStructures */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781811DB8143A00B2029A /* DataStructures */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781821DB8143A00B2029A /* Bag.swift */,\n\t\t\t);\n\t\t\tpath = DataStructures;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781901DB823B500B2029A /* macOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781911DB823B500B2029A /* NSButton+Rx.swift */,\n\t\t\t\tC86781921DB823B500B2029A /* NSControl+Rx.swift */,\n\t\t\t\tC86781941DB823B500B2029A /* NSSlider+Rx.swift */,\n\t\t\t\tC86781951DB823B500B2029A /* NSTextField+Rx.swift */,\n\t\t\t\tC86781961DB823B500B2029A /* NSView+Rx.swift */,\n\t\t\t\t927A78B621179FFD00A45638 /* NSTextView+Rx.swift */,\n\t\t\t);\n\t\t\tpath = macOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88253EE1B8A752B00B02D69 /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88253F01B8A752B00B02D69 /* DataSources */,\n\t\t\t\tC88253F31B8A752B00B02D69 /* Events */,\n\t\t\t\tC88253F61B8A752B00B02D69 /* Protocols */,\n\t\t\t\tC88253F91B8A752B00B02D69 /* Proxies */,\n\t\t\t\tC88254051B8A752B00B02D69 /* UIBarButtonItem+Rx.swift */,\n\t\t\t\tC88254061B8A752B00B02D69 /* UIButton+Rx.swift */,\n\t\t\t\tDB8157E8264941EB00164D4B /* UIApplication+Rx.swift */,\n\t\t\t\tC88254071B8A752B00B02D69 /* UICollectionView+Rx.swift */,\n\t\t\t\tC88254081B8A752B00B02D69 /* UIControl+Rx.swift */,\n\t\t\t\tC88254091B8A752B00B02D69 /* UIDatePicker+Rx.swift */,\n\t\t\t\tC882540A1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift */,\n\t\t\t\t7F600F3D1C5D0C0100535B1D /* UIRefreshControl+Rx.swift */,\n\t\t\t\tC882540D1B8A752B00B02D69 /* UIScrollView+Rx.swift */,\n\t\t\t\tC882540E1B8A752B00B02D69 /* UISearchBar+Rx.swift */,\n\t\t\t\tD9080AD21EA05DDF002B433B /* UINavigationController+Rx.swift */,\n\t\t\t\tC882540F1B8A752B00B02D69 /* UISegmentedControl+Rx.swift */,\n\t\t\t\tC88254101B8A752B00B02D69 /* UISlider+Rx.swift */,\n\t\t\t\tF31F35AF1BB4FED800961002 /* UIStepper+Rx.swift */,\n\t\t\t\tC88254111B8A752B00B02D69 /* UISwitch+Rx.swift */,\n\t\t\t\tC88254121B8A752B00B02D69 /* UITableView+Rx.swift */,\n\t\t\t\tC88254131B8A752B00B02D69 /* UITextField+Rx.swift */,\n\t\t\t\tC88254141B8A752B00B02D69 /* UITextView+Rx.swift */,\n\t\t\t\t842A5A281C357F7D003568D5 /* NSTextStorage+Rx.swift */,\n\t\t\t\t9BA1CBD11C0F7C0A0044B50A /* UIActivityIndicatorView+Rx.swift */,\n\t\t\t\t88718CFD1CE5D80000D88D60 /* UITabBar+Rx.swift */,\n\t\t\t\tECBBA59A1DF8C0BA00DDDC2E /* UITabBarController+Rx.swift */,\n\t\t\t\t84E4D3901C9AFCD500ADFDC9 /* UISearchController+Rx.swift */,\n\t\t\t\t844BC8B31CE4FD7500F5C7CB /* UIPickerView+Rx.swift */,\n\t\t\t\t504540C824196D960098665F /* WKWebView+Rx.swift */,\n\t\t\t);\n\t\t\tpath = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88253F01B8A752B00B02D69 /* DataSources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88253F11B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift */,\n\t\t\t\tC88253F21B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift */,\n\t\t\t\tA5CD03891F1660F40005A376 /* RxPickerViewAdapter.swift */,\n\t\t\t);\n\t\t\tpath = DataSources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88253F31B8A752B00B02D69 /* Events */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88253F41B8A752B00B02D69 /* ItemEvents.swift */,\n\t\t\t);\n\t\t\tpath = Events;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88253F61B8A752B00B02D69 /* Protocols */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88253F71B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift */,\n\t\t\t\tC88253F81B8A752B00B02D69 /* RxTableViewDataSourceType.swift */,\n\t\t\t\tA520FFF61F0D258E00573734 /* RxPickerViewDataSourceType.swift */,\n\t\t\t);\n\t\t\tpath = Protocols;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88253F91B8A752B00B02D69 /* Proxies */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tB562478D2035154900D3EE75 /* RxCollectionViewDataSourcePrefetchingProxy.swift */,\n\t\t\t\tC88253FC1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift */,\n\t\t\t\tC88253FD1B8A752B00B02D69 /* RxCollectionViewDelegateProxy.swift */,\n\t\t\t\tC88253FE1B8A752B00B02D69 /* RxScrollViewDelegateProxy.swift */,\n\t\t\t\tC88253FF1B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift */,\n\t\t\t\tECBBA59D1DF8C0D400DDDC2E /* RxTabBarControllerDelegateProxy.swift */,\n\t\t\t\t88D98F2D1CE7549A00D50457 /* RxTabBarDelegateProxy.swift */,\n\t\t\t\tB5624793203532F500D3EE75 /* RxTableViewDataSourcePrefetchingProxy.swift */,\n\t\t\t\tC88254001B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift */,\n\t\t\t\tC88254011B8A752B00B02D69 /* RxTableViewDelegateProxy.swift */,\n\t\t\t\tC88254021B8A752B00B02D69 /* RxTextViewDelegateProxy.swift */,\n\t\t\t\t84C225A21C33F00B008724EC /* RxTextStorageDelegateProxy.swift */,\n\t\t\t\t846436E11C9AF64C0035B40D /* RxSearchControllerDelegateProxy.swift */,\n\t\t\t\t844BC8AA1CE4FA5600F5C7CB /* RxPickerViewDelegateProxy.swift */,\n\t\t\t\tD9080ACD1EA05A16002B433B /* RxNavigationControllerDelegateProxy.swift */,\n\t\t\t\t504540CD2419701D0098665F /* RxWKNavigationDelegateProxy.swift */,\n\t\t\t\tA520FFFB1F0D291500573734 /* RxPickerViewDataSourceProxy.swift */,\n\t\t\t);\n\t\t\tpath = Proxies;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB1AA1DAAC3350065FBE6 /* Traits */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB1AB1DAAC3350065FBE6 /* ControlEvent.swift */,\n\t\t\t\tC89AB1AC1DAAC3350065FBE6 /* ControlProperty.swift */,\n\t\t\t\tC85E6FBA1F52FF4F00C5681E /* Signal */,\n\t\t\t\tC89AB1AD1DAAC3350065FBE6 /* Driver */,\n\t\t\t\tC89AB1B41DAAC3350065FBE6 /* SharedSequence */,\n\t\t\t);\n\t\t\tpath = Traits;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB1AD1DAAC3350065FBE6 /* Driver */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8C8BCD31F89459300501D4D /* BehaviorRelay+Driver.swift */,\n\t\t\t\tC89AB1AE1DAAC3350065FBE6 /* ControlEvent+Driver.swift */,\n\t\t\t\tC89AB1AF1DAAC3350065FBE6 /* ControlProperty+Driver.swift */,\n\t\t\t\tC89AB1B01DAAC3350065FBE6 /* Driver+Subscription.swift */,\n\t\t\t\tC89AB1B11DAAC3350065FBE6 /* Driver.swift */,\n\t\t\t\tCD8F7AC427BA9187001574EB /* Infallible+Driver.swift */,\n\t\t\t\tC89AB1B21DAAC3350065FBE6 /* ObservableConvertibleType+Driver.swift */,\n\t\t\t);\n\t\t\tpath = Driver;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB1B41DAAC3350065FBE6 /* SharedSequence */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB1B61DAAC3350065FBE6 /* SharedSequence+Operators+arity.swift */,\n\t\t\t\tC89AB1B71DAAC3350065FBE6 /* SharedSequence+Operators+arity.tt */,\n\t\t\t\tC89AB1B81DAAC3350065FBE6 /* SharedSequence+Operators.swift */,\n\t\t\t\tDB08833626FB0637005805BE /* SharedSequence+Concurrency.swift */,\n\t\t\t\tC89AB1B91DAAC3350065FBE6 /* SharedSequence.swift */,\n\t\t\t\tC85E6FBD1F53025700C5681E /* SchedulerType+SharedSequence.swift */,\n\t\t\t\tC8091C4D1FAA345C001DB32A /* ObservableConvertibleType+SharedSequence.swift */,\n\t\t\t);\n\t\t\tpath = SharedSequence;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB1BC1DAAC3350065FBE6 /* Foundation */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB1BD1DAAC3350065FBE6 /* KVORepresentable+CoreGraphics.swift */,\n\t\t\t\tC89AB1BE1DAAC3350065FBE6 /* KVORepresentable+Swift.swift */,\n\t\t\t\tC89AB1BF1DAAC3350065FBE6 /* KVORepresentable.swift */,\n\t\t\t\tC89AB1C11DAAC3350065FBE6 /* NotificationCenter+Rx.swift */,\n\t\t\t\tC89AB1C21DAAC3350065FBE6 /* NSObject+Rx+KVORepresentable.swift */,\n\t\t\t\tC89AB1C31DAAC3350065FBE6 /* NSObject+Rx+RawRepresentable.swift */,\n\t\t\t\tC89AB1C41DAAC3350065FBE6 /* NSObject+Rx.swift */,\n\t\t\t\tC89AB1C51DAAC3350065FBE6 /* URLSession+Rx.swift */,\n\t\t\t);\n\t\t\tpath = Foundation;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB22B1DAAC3A60065FBE6 /* Runtime */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB2541DAACC580065FBE6 /* include */,\n\t\t\t\tC89AB22D1DAAC3A60065FBE6 /* _RX.m */,\n\t\t\t\tC89AB22F1DAAC3A60065FBE6 /* _RXDelegateProxy.m */,\n\t\t\t\tC89AB2311DAAC3A60065FBE6 /* _RXKVOObserver.m */,\n\t\t\t\tC89AB2331DAAC3A60065FBE6 /* _RXObjCRuntime.m */,\n\t\t\t);\n\t\t\tpath = Runtime;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89AB2541DAACC580065FBE6 /* include */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89AB2731DAACCE30065FBE6 /* RxCocoaRuntime.h */,\n\t\t\t\tC89AB2551DAACC580065FBE6 /* _RX.h */,\n\t\t\t\tC89AB2561DAACC580065FBE6 /* _RXDelegateProxy.h */,\n\t\t\t\tC89AB2571DAACC580065FBE6 /* _RXKVOObserver.h */,\n\t\t\t\tC89AB2581DAACC580065FBE6 /* _RXObjCRuntime.h */,\n\t\t\t);\n\t\t\tpath = include;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89CFA0F1DAABBE20079D23B /* RxTest */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781801DB8143A00B2029A /* Platform */,\n\t\t\t\tC89CFA171DAABBE20079D23B /* Schedulers */,\n\t\t\t\tC89CFA101DAABBE20079D23B /* Any+Equatable.swift */,\n\t\t\t\tC89CFA111DAABBE20079D23B /* ColdObservable.swift */,\n\t\t\t\tC89CFA121DAABBE20079D23B /* Event+Equatable.swift */,\n\t\t\t\tC89CFA131DAABBE20079D23B /* HotObservable.swift */,\n\t\t\t\tC89CFA151DAABBE20079D23B /* Recorded.swift */,\n\t\t\t\t4583D8211FE94BB100AA1BB1 /* Recorded+Event.swift */,\n\t\t\t\tC89CFA161DAABBE20079D23B /* RxTest.swift */,\n\t\t\t\tC89CFA1A1DAABBE20079D23B /* Subscription.swift */,\n\t\t\t\tC89CFA1B1DAABBE20079D23B /* TestableObservable.swift */,\n\t\t\t\tC89CFA1C1DAABBE20079D23B /* TestableObserver.swift */,\n\t\t\t\tC89CFA1D1DAABBE20079D23B /* XCTest+Rx.swift */,\n\t\t\t\tC89CFA141DAABBE20079D23B /* Info.plist */,\n\t\t\t);\n\t\t\tpath = RxTest;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89CFA171DAABBE20079D23B /* Schedulers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89CFA181DAABBE20079D23B /* TestScheduler.swift */,\n\t\t\t\tC89CFA191DAABBE20079D23B /* TestSchedulerVirtualTimeConverter.swift */,\n\t\t\t);\n\t\t\tpath = Schedulers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8A56ACD1AD7424700B4673B = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC85B01711DB2ACF2006043C3 /* Platform */,\n\t\t\t\tC8093C471B8A72BE0088E94D /* RxSwift */,\n\t\t\t\tC8093F571B8A73A20088E94D /* RxBlocking */,\n\t\t\t\tC8093E801B8A732E0088E94D /* RxCocoa */,\n\t\t\t\tA2897CB2225CA1C6004EA481 /* RxRelay */,\n\t\t\t\tC89CFA0F1DAABBE20079D23B /* RxTest */,\n\t\t\t\tC83508D31C38706D0027C24C /* Tests */,\n\t\t\t\tC8A56AD81AD7424700B4673B /* Products */,\n\t\t\t\tD27B5DA41F78C4F100797776 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8A56AD81AD7424700B4673B /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8A56AD71AD7424700B4673B /* RxSwift.framework */,\n\t\t\t\tC809396D1B8A71760088E94D /* RxCocoa.framework */,\n\t\t\t\tC8093BC71B8A71F00088E94D /* RxBlocking.framework */,\n\t\t\t\tC88FA50C1C25C44800CCFEA4 /* RxTest.framework */,\n\t\t\t\tC83508C31C386F6F0027C24C /* AllTests-iOS.xctest */,\n\t\t\t\tC83509841C38740E0027C24C /* AllTests-tvOS.xctest */,\n\t\t\t\tC83509941C38742C0027C24C /* AllTests-macOS.xctest */,\n\t\t\t\tC85BA04B1C3878740075D68E /* Microoptimizations.app */,\n\t\t\t\tC8E8BA551E2C181A00A4AC2C /* Benchmarks.xctest */,\n\t\t\t\tA2897D53225CA1E7004EA481 /* RxRelay.framework */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8A81C9E1E05E82C0008DEF4 /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8A81C9F1E05E82C0008DEF4 /* DispatchQueue+Extensions.swift */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BF34C81C2E426800416CAE /* Platform */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8165ACA21891BBF00494BEF /* AtomicInt.swift */,\n\t\t\t\tC867816B1DB8129E00B2029A /* DataStructures */,\n\t\t\t\tC8BF34C91C2E426800416CAE /* Platform.Darwin.swift */,\n\t\t\t\tC8BF34CA1C2E426800416CAE /* Platform.Linux.swift */,\n\t\t\t\tC8F03F491DBBAC0A00AECC4C /* DispatchQueue+Extensions.swift */,\n\t\t\t\tC85217F61E33FBBE0015DD38 /* RecursiveLock.swift */,\n\t\t\t);\n\t\t\tpath = Platform;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8D970DF1F532FD20058F2FE /* TestImplementations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8D970E01F532FD20058F2FE /* SectionedViewDataSourceMock.swift */,\n\t\t\t);\n\t\t\tpath = TestImplementations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8E8BA611E2C186200A4AC2C /* Benchmarks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8E8BA621E2C186200A4AC2C /* Benchmarks.swift */,\n\t\t\t\tC8E8BA631E2C186200A4AC2C /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Benchmarks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8E8BA6D1E2C18AE00A4AC2C /* Microoptimizations */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8E8BA6E1E2C18AE00A4AC2C /* Info.plist */,\n\t\t\t\tC8E8BA6F1E2C18AE00A4AC2C /* main.swift */,\n\t\t\t\tC8E8BA701E2C18AE00A4AC2C /* PerformanceTools.swift */,\n\t\t\t);\n\t\t\tpath = Microoptimizations;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tD27B5DA41F78C4F100797776 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tA2897CB5225CA1E7004EA481 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC80939641B8A71760088E94D /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC89AB25E1DAACC580065FBE6 /* _RXDelegateProxy.h in Headers */,\n\t\t\t\tC89AB2661DAACC580065FBE6 /* _RXObjCRuntime.h in Headers */,\n\t\t\t\tC89AB25A1DAACC580065FBE6 /* _RX.h in Headers */,\n\t\t\t\tC89AB2791DAACE490065FBE6 /* RxCocoa.h in Headers */,\n\t\t\t\tC89AB2621DAACC580065FBE6 /* _RXKVOObserver.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8093BBA1B8A71F00088E94D /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88FA5061C25C44800CCFEA4 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8A56AD41AD7424700B4673B /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\tA2897CB3225CA1E7004EA481 /* RxRelay */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = A2897D4F225CA1E7004EA481 /* Build configuration list for PBXNativeTarget \"RxRelay\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tA2897CB5225CA1E7004EA481 /* Headers */,\n\t\t\t\tA2897CB4225CA1E7004EA481 /* SwiftLint */,\n\t\t\t\tA2897CB6225CA1E7004EA481 /* Sources */,\n\t\t\t\tA2897D4D225CA1E7004EA481 /* Resources */,\n\t\t\t\tA2897D4E225CA1E7004EA481 /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tA2897D5A225CA28F004EA481 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = RxRelay;\n\t\t\tproductName = RxSwift;\n\t\t\tproductReference = A2897D53225CA1E7004EA481 /* RxRelay.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC80938F51B8A71760088E94D /* RxCocoa */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C80939691B8A71760088E94D /* Build configuration list for PBXNativeTarget \"RxCocoa\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC80939641B8A71760088E94D /* Headers */,\n\t\t\t\tA21D625B21E1D80F00E3E359 /* SwiftLint */,\n\t\t\t\tC80938F61B8A71760088E94D /* Sources */,\n\t\t\t\tC80939681B8A71760088E94D /* Resources */,\n\t\t\t\tC80939631B8A71760088E94D /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tA2897D64225CBD37004EA481 /* PBXTargetDependency */,\n\t\t\t\tC872BD1C1BC0529600D7175E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = RxCocoa;\n\t\t\tproductName = RxSwift;\n\t\t\tproductReference = C809396D1B8A71760088E94D /* RxCocoa.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC8093B4B1B8A71F00088E94D /* RxBlocking */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C8093BC31B8A71F00088E94D /* Build configuration list for PBXNativeTarget \"RxBlocking\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC8093BBA1B8A71F00088E94D /* Headers */,\n\t\t\t\tA21D625C21E1D82B00E3E359 /* SwiftLint */,\n\t\t\t\tC8093B4C1B8A71F00088E94D /* Sources */,\n\t\t\t\tC8093BBE1B8A71F00088E94D /* Resources */,\n\t\t\t\tC8093BB91B8A71F00088E94D /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC872BD241BC052B800D7175E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = RxBlocking;\n\t\t\tproductName = RxSwift;\n\t\t\tproductReference = C8093BC71B8A71F00088E94D /* RxBlocking.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC83508C21C386F6F0027C24C /* AllTests-iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C83508CE1C386F6F0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC83508BF1C386F6F0027C24C /* Sources */,\n\t\t\t\tC83508C11C386F6F0027C24C /* Resources */,\n\t\t\t\tC83508C01C386F6F0027C24C /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC8B52BC6215434D600EAA87C /* PBXTargetDependency */,\n\t\t\t\tC835097D1C3871380027C24C /* PBXTargetDependency */,\n\t\t\t\tC835097B1C3871340027C24C /* PBXTargetDependency */,\n\t\t\t\tC83508CA1C386F6F0027C24C /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"AllTests-iOS\";\n\t\t\tproductName = \"AllTests-iOS\";\n\t\t\tproductReference = C83508C31C386F6F0027C24C /* AllTests-iOS.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tC83509831C38740E0027C24C /* AllTests-tvOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C835098C1C38740E0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-tvOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC83509801C38740E0027C24C /* Sources */,\n\t\t\t\tC83509821C38740E0027C24C /* Resources */,\n\t\t\t\tC83509811C38740E0027C24C /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC83E398721890703001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E398921890703001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E398B21890703001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E398D21890703001F4F0E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"AllTests-tvOS\";\n\t\t\tproductName = \"AllTests-tvOS\";\n\t\t\tproductReference = C83509841C38740E0027C24C /* AllTests-tvOS.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tC83509931C38742C0027C24C /* AllTests-macOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C835099C1C38742C0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-macOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC83509901C38742C0027C24C /* Sources */,\n\t\t\t\tC83509921C38742C0027C24C /* Resources */,\n\t\t\t\tC83509911C38742C0027C24C /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC83E398F2189070A001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E39912189070A001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E39932189070A001F4F0E /* PBXTargetDependency */,\n\t\t\t\tC83E39952189070A001F4F0E /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"AllTests-macOS\";\n\t\t\tproductName = \"AllTests-OSX\";\n\t\t\tproductReference = C83509941C38742C0027C24C /* AllTests-macOS.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tC85BA04A1C3878740075D68E /* Microoptimizations */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C85BA0581C3878750075D68E /* Build configuration list for PBXNativeTarget \"Microoptimizations\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC85BA0471C3878740075D68E /* Sources */,\n\t\t\t\tC85BA0481C3878740075D68E /* Frameworks */,\n\t\t\t\tC85BA0491C3878740075D68E /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Microoptimizations;\n\t\t\tproductName = PerformanceTests;\n\t\t\tproductReference = C85BA04B1C3878740075D68E /* Microoptimizations.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tC88FA4FD1C25C44800CCFEA4 /* RxTest */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C88FA5081C25C44800CCFEA4 /* Build configuration list for PBXNativeTarget \"RxTest\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC88FA5061C25C44800CCFEA4 /* Headers */,\n\t\t\t\tA21D625D21E1D83800E3E359 /* SwiftLint */,\n\t\t\t\tC88FA5001C25C44800CCFEA4 /* Sources */,\n\t\t\t\tC88FA5071C25C44800CCFEA4 /* Resources */,\n\t\t\t\tC88FA5051C25C44800CCFEA4 /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC88FA4FE1C25C44800CCFEA4 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = RxTest;\n\t\t\tproductName = RxSwift;\n\t\t\tproductReference = C88FA50C1C25C44800CCFEA4 /* RxTest.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC8A56AD61AD7424700B4673B /* RxSwift */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C8A56AED1AD7424700B4673B /* Build configuration list for PBXNativeTarget \"RxSwift\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC8A56AD41AD7424700B4673B /* Headers */,\n\t\t\t\tA21F589121E109AD0051AEA2 /* SwiftLint */,\n\t\t\t\tC8A56AD21AD7424700B4673B /* Sources */,\n\t\t\t\tC8A56AD51AD7424700B4673B /* Resources */,\n\t\t\t\tC8A56AD31AD7424700B4673B /* Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = RxSwift;\n\t\t\tproductName = RxSwift;\n\t\t\tproductReference = C8A56AD71AD7424700B4673B /* RxSwift.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tC8E8BA541E2C181A00A4AC2C /* Benchmarks */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C8E8BA5D1E2C181A00A4AC2C /* Build configuration list for PBXNativeTarget \"Benchmarks\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC8E8BA511E2C181A00A4AC2C /* Sources */,\n\t\t\t\tC8E8BA521E2C181A00A4AC2C /* Frameworks */,\n\t\t\t\tC8E8BA531E2C181A00A4AC2C /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC8E8BA761E2C1BB200A4AC2C /* PBXTargetDependency */,\n\t\t\t\tC8E8BA5C1E2C181A00A4AC2C /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = Benchmarks;\n\t\t\tproductName = Benchmarks;\n\t\t\tproductReference = C8E8BA551E2C181A00A4AC2C /* Benchmarks.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC8A56ACE1AD7424700B4673B /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0820;\n\t\t\t\tLastUpgradeCheck = 1250;\n\t\t\t\tORGANIZATIONNAME = RxSwift;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tC80938F51B8A71760088E94D = {\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC8093B4B1B8A71F00088E94D = {\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC83508C21C386F6F0027C24C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC83509831C38740E0027C24C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tProvisioningStyle = Manual;\n\t\t\t\t\t};\n\t\t\t\t\tC83509931C38742C0027C24C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC85BA04A1C3878740075D68E = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC88FA4FD1C25C44800CCFEA4 = {\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC8A56AD61AD7424700B4673B = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.3;\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC8E8BA541E2C181A00A4AC2C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Manual;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C8A56AD11AD7424700B4673B /* Build configuration list for PBXProject \"Rx\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C8A56ACD1AD7424700B4673B;\n\t\t\tproductRefGroup = C8A56AD81AD7424700B4673B /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC8A56AD61AD7424700B4673B /* RxSwift */,\n\t\t\t\tC80938F51B8A71760088E94D /* RxCocoa */,\n\t\t\t\tA2897CB3225CA1E7004EA481 /* RxRelay */,\n\t\t\t\tC8093B4B1B8A71F00088E94D /* RxBlocking */,\n\t\t\t\tC88FA4FD1C25C44800CCFEA4 /* RxTest */,\n\t\t\t\tC83508C21C386F6F0027C24C /* AllTests-iOS */,\n\t\t\t\tC83509831C38740E0027C24C /* AllTests-tvOS */,\n\t\t\t\tC83509931C38742C0027C24C /* AllTests-macOS */,\n\t\t\t\tC85BA04A1C3878740075D68E /* Microoptimizations */,\n\t\t\t\tC8E8BA541E2C181A00A4AC2C /* Benchmarks */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tA2897D4D225CA1E7004EA481 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD040ADC42D5E409700A1E6B3 /* PrivacyInfo.xcprivacy in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC80939681B8A71760088E94D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD040ADC22D5E408700A1E6B3 /* PrivacyInfo.xcprivacy in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8093BBE1B8A71F00088E94D /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83508C11C386F6F0027C24C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509821C38740E0027C24C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509921C38742C0027C24C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC85BA0491C3878740075D68E /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88FA5071C25C44800CCFEA4 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8A56AD51AD7424700B4673B /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tD040ADC62D5E442300A1E6B3 /* PrivacyInfo.xcprivacy in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8E8BA531E2C181A00A4AC2C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\tA21D625B21E1D80F00E3E359 /* SwiftLint */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\talwaysOutOfDate = 1;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = SwiftLint;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT\\\"/scripts/swiftlint.sh\\n\";\n\t\t};\n\t\tA21D625C21E1D82B00E3E359 /* SwiftLint */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\talwaysOutOfDate = 1;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = SwiftLint;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT\\\"/scripts/swiftlint.sh\\n\";\n\t\t};\n\t\tA21D625D21E1D83800E3E359 /* SwiftLint */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\talwaysOutOfDate = 1;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = SwiftLint;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT\\\"/scripts/swiftlint.sh\\n\";\n\t\t};\n\t\tA21F589121E109AD0051AEA2 /* SwiftLint */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\talwaysOutOfDate = 1;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = SwiftLint;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT\\\"/scripts/swiftlint.sh\\n\";\n\t\t};\n\t\tA2897CB4225CA1E7004EA481 /* SwiftLint */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\talwaysOutOfDate = 1;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = SwiftLint;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"\\\"$SRCROOT\\\"/scripts/swiftlint.sh\\n\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tA2897CB6225CA1E7004EA481 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tA2897D57225CA236004EA481 /* PublishRelay.swift in Sources */,\n\t\t\t\t6A94254A23AFC2F300B7A24C /* ReplayRelay.swift in Sources */,\n\t\t\t\tA2897D58225CA236004EA481 /* BehaviorRelay.swift in Sources */,\n\t\t\t\tA2897D62225CA3F3004EA481 /* Observable+Bind.swift in Sources */,\n\t\t\t\tA2897D69225D023A004EA481 /* Utils.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC80938F61B8A71760088E94D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC88254321B8A752B00B02D69 /* UISlider+Rx.swift in Sources */,\n\t\t\t\tC882542F1B8A752B00B02D69 /* UIScrollView+Rx.swift in Sources */,\n\t\t\t\tC83E39822189066F001F4F0E /* NSSlider+Rx.swift in Sources */,\n\t\t\t\t844BC8B41CE4FD7500F5C7CB /* UIPickerView+Rx.swift in Sources */,\n\t\t\t\tC83E39802189066F001F4F0E /* NSControl+Rx.swift in Sources */,\n\t\t\t\tC8093EE31B8A732E0088E94D /* DelegateProxyType.swift in Sources */,\n\t\t\t\tC8093EFD1B8A732E0088E94D /* RxTarget.swift in Sources */,\n\t\t\t\tC88254361B8A752B00B02D69 /* UITextView+Rx.swift in Sources */,\n\t\t\t\tC88254171B8A752B00B02D69 /* RxTableViewReactiveArrayDataSource.swift in Sources */,\n\t\t\t\tC8C8BCD41F89459300501D4D /* BehaviorRelay+Driver.swift in Sources */,\n\t\t\t\tC882541E1B8A752B00B02D69 /* RxCollectionViewDataSourceProxy.swift in Sources */,\n\t\t\t\tC85E6FBE1F53025700C5681E /* SchedulerType+SharedSequence.swift in Sources */,\n\t\t\t\t84C225A31C33F00B008724EC /* RxTextStorageDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB1DA1DAAC3350065FBE6 /* Driver.swift in Sources */,\n\t\t\t\tC88254231B8A752B00B02D69 /* RxTableViewDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB2381DAAC3A60065FBE6 /* _RX.m in Sources */,\n\t\t\t\tC83E39852189066F001F4F0E /* NSTextView+Rx.swift in Sources */,\n\t\t\t\t7F600F411C5D0C6E00535B1D /* UIRefreshControl+Rx.swift in Sources */,\n\t\t\t\tF31F35B01BB4FED800961002 /* UIStepper+Rx.swift in Sources */,\n\t\t\t\tC8B0F7221F53135100548EBE /* ObservableConvertibleType+Signal.swift in Sources */,\n\t\t\t\tC89AB1C61DAAC3350065FBE6 /* ControlEvent.swift in Sources */,\n\t\t\t\tC8091C571FAA39C1001DB32A /* ControlEvent+Signal.swift in Sources */,\n\t\t\t\tA520FFFC1F0D291500573734 /* RxPickerViewDataSourceProxy.swift in Sources */,\n\t\t\t\tC882542A1B8A752B00B02D69 /* UIControl+Rx.swift in Sources */,\n\t\t\t\tC8D132441C42D15E00B59FFF /* SectionedViewDataSourceType.swift in Sources */,\n\t\t\t\t786DED7224F849F3008C4FAC /* Infallible+Bind.swift in Sources */,\n\t\t\t\tB562478F203515DD00D3EE75 /* RxCollectionViewDataSourcePrefetchingProxy.swift in Sources */,\n\t\t\t\t84E4D3921C9AFD3400ADFDC9 /* UISearchController+Rx.swift in Sources */,\n\t\t\t\tC88254341B8A752B00B02D69 /* UITableView+Rx.swift in Sources */,\n\t\t\t\tCD8F7AC527BA9187001574EB /* Infallible+Driver.swift in Sources */,\n\t\t\t\tC89AB1A61DAAC25A0065FBE6 /* RxCocoaObjCRuntimeError+Extensions.swift in Sources */,\n\t\t\t\tC88254161B8A752B00B02D69 /* RxCollectionViewReactiveArrayDataSource.swift in Sources */,\n\t\t\t\tC89AB2221DAAC3350065FBE6 /* URLSession+Rx.swift in Sources */,\n\t\t\t\t846436E31C9AF65B0035B40D /* RxSearchControllerDelegateProxy.swift in Sources */,\n\t\t\t\tC882541F1B8A752B00B02D69 /* RxCollectionViewDelegateProxy.swift in Sources */,\n\t\t\t\tC88254201B8A752B00B02D69 /* RxScrollViewDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB20A1DAAC3350065FBE6 /* KVORepresentable.swift in Sources */,\n\t\t\t\tC88F76811CE5341700D5A014 /* TextInput.swift in Sources */,\n\t\t\t\tC89AB1CE1DAAC3350065FBE6 /* ControlEvent+Driver.swift in Sources */,\n\t\t\t\tC89AB1D61DAAC3350065FBE6 /* Driver+Subscription.swift in Sources */,\n\t\t\t\tC88254211B8A752B00B02D69 /* RxSearchBarDelegateProxy.swift in Sources */,\n\t\t\t\tA520FFF71F0D258E00573734 /* RxPickerViewDataSourceType.swift in Sources */,\n\t\t\t\tC8D970CE1F5324D90058F2FE /* Signal+Subscription.swift in Sources */,\n\t\t\t\t844BC8AC1CE4FA6300F5C7CB /* RxPickerViewDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB2271DAAC33F0065FBE6 /* RxCocoa.swift in Sources */,\n\t\t\t\tC89AB1F61DAAC3350065FBE6 /* SharedSequence.swift in Sources */,\n\t\t\t\tC89AB1EA1DAAC3350065FBE6 /* SharedSequence+Operators+arity.swift in Sources */,\n\t\t\t\tECBBA59B1DF8C0BA00DDDC2E /* UITabBarController+Rx.swift in Sources */,\n\t\t\t\tC89AB21A1DAAC3350065FBE6 /* NSObject+Rx+RawRepresentable.swift in Sources */,\n\t\t\t\tA5CD038A1F1660F40005A376 /* RxPickerViewAdapter.swift in Sources */,\n\t\t\t\tC89AB2021DAAC3350065FBE6 /* KVORepresentable+CoreGraphics.swift in Sources */,\n\t\t\t\tC80D338F1B91EF9E0014629D /* Observable+Bind.swift in Sources */,\n\t\t\t\tC88254311B8A752B00B02D69 /* UISegmentedControl+Rx.swift in Sources */,\n\t\t\t\tC83E397F2189066F001F4F0E /* NSButton+Rx.swift in Sources */,\n\t\t\t\tC83E39832189066F001F4F0E /* NSTextField+Rx.swift in Sources */,\n\t\t\t\tA2897D66225D0182004EA481 /* PublishRelay+Signal.swift in Sources */,\n\t\t\t\tC85E6FC21F5305E300C5681E /* Signal.swift in Sources */,\n\t\t\t\tC83E39842189066F001F4F0E /* NSView+Rx.swift in Sources */,\n\t\t\t\tC89AB2481DAAC3A60065FBE6 /* _RXKVOObserver.m in Sources */,\n\t\t\t\tC88254281B8A752B00B02D69 /* UIButton+Rx.swift in Sources */,\n\t\t\t\tC8091C4E1FAA345C001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */,\n\t\t\t\tC89AB1CA1DAAC3350065FBE6 /* ControlProperty.swift in Sources */,\n\t\t\t\tECBBA59E1DF8C0D400DDDC2E /* RxTabBarControllerDelegateProxy.swift in Sources */,\n\t\t\t\t78F2D93E24C8D35700D13F0C /* RxWKNavigationDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB1F21DAAC3350065FBE6 /* SharedSequence+Operators.swift in Sources */,\n\t\t\t\t9BA1CBD31C0F7D550044B50A /* UIActivityIndicatorView+Rx.swift in Sources */,\n\t\t\t\t842A5A2C1C357F92003568D5 /* NSTextStorage+Rx.swift in Sources */,\n\t\t\t\tC88254241B8A752B00B02D69 /* RxTextViewDelegateProxy.swift in Sources */,\n\t\t\t\tC89AB2401DAAC3A60065FBE6 /* _RXDelegateProxy.m in Sources */,\n\t\t\t\tC89AB2061DAAC3350065FBE6 /* KVORepresentable+Swift.swift in Sources */,\n\t\t\t\tC89AB1DE1DAAC3350065FBE6 /* ObservableConvertibleType+Driver.swift in Sources */,\n\t\t\t\tD9080ACF1EA05AE0002B433B /* RxNavigationControllerDelegateProxy.swift in Sources */,\n\t\t\t\tC88254271B8A752B00B02D69 /* UIBarButtonItem+Rx.swift in Sources */,\n\t\t\t\tC89AB2161DAAC3350065FBE6 /* NSObject+Rx+KVORepresentable.swift in Sources */,\n\t\t\t\tC882542B1B8A752B00B02D69 /* UIDatePicker+Rx.swift in Sources */,\n\t\t\t\tC88254221B8A752B00B02D69 /* RxTableViewDataSourceProxy.swift in Sources */,\n\t\t\t\tC882542C1B8A752B00B02D69 /* UIGestureRecognizer+Rx.swift in Sources */,\n\t\t\t\tC89AB1D21DAAC3350065FBE6 /* ControlProperty+Driver.swift in Sources */,\n\t\t\t\tC8093EE11B8A732E0088E94D /* DelegateProxy.swift in Sources */,\n\t\t\t\tC89AB2501DAAC3A60065FBE6 /* _RXObjCRuntime.m in Sources */,\n\t\t\t\tC89AB21E1DAAC3350065FBE6 /* NSObject+Rx.swift in Sources */,\n\t\t\t\tD9080AD41EA05DE9002B433B /* UINavigationController+Rx.swift in Sources */,\n\t\t\t\t88718CFE1CE5D80000D88D60 /* UITabBar+Rx.swift in Sources */,\n\t\t\t\t88D98F2E1CE7549A00D50457 /* RxTabBarDelegateProxy.swift in Sources */,\n\t\t\t\tC88254331B8A752B00B02D69 /* UISwitch+Rx.swift in Sources */,\n\t\t\t\tC88254291B8A752B00B02D69 /* UICollectionView+Rx.swift in Sources */,\n\t\t\t\tC882541A1B8A752B00B02D69 /* RxCollectionViewDataSourceType.swift in Sources */,\n\t\t\t\tC8A81CA01E05E82C0008DEF4 /* DispatchQueue+Extensions.swift in Sources */,\n\t\t\t\tC88254351B8A752B00B02D69 /* UITextField+Rx.swift in Sources */,\n\t\t\t\tDB8157E9264941EB00164D4B /* UIApplication+Rx.swift in Sources */,\n\t\t\t\tC88254301B8A752B00B02D69 /* UISearchBar+Rx.swift in Sources */,\n\t\t\t\tC89AB2121DAAC3350065FBE6 /* NotificationCenter+Rx.swift in Sources */,\n\t\t\t\tC88254181B8A752B00B02D69 /* ItemEvents.swift in Sources */,\n\t\t\t\t504540C924196D960098665F /* WKWebView+Rx.swift in Sources */,\n\t\t\t\tDB08833726FB0637005805BE /* SharedSequence+Concurrency.swift in Sources */,\n\t\t\t\tC89AB1731DAAC1680065FBE6 /* ControlTarget.swift in Sources */,\n\t\t\t\tC882541B1B8A752B00B02D69 /* RxTableViewDataSourceType.swift in Sources */,\n\t\t\t\tB5624794203532F500D3EE75 /* RxTableViewDataSourcePrefetchingProxy.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8093B4C1B8A71F00088E94D /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8165ACD21891BE400494BEF /* AtomicInt.swift in Sources */,\n\t\t\t\tC85B016D1DB2ACAF006043C3 /* Platform.Linux.swift in Sources */,\n\t\t\t\tC88E296B1BEB712E001CCB92 /* RunLoopLock.swift in Sources */,\n\t\t\t\tC8941BDF1BD5695C00A0E874 /* BlockingObservable.swift in Sources */,\n\t\t\t\tC8941BE41BD56B0700A0E874 /* BlockingObservable+Operators.swift in Sources */,\n\t\t\t\tC8093F5E1B8A73A20088E94D /* ObservableConvertibleType+Blocking.swift in Sources */,\n\t\t\t\tC85218051E33FCA50015DD38 /* Resources.swift in Sources */,\n\t\t\t\tC85B01691DB2ACAF006043C3 /* Platform.Darwin.swift in Sources */,\n\t\t\t\tC85217FC1E33FBFB0015DD38 /* RecursiveLock.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83508BF1C386F6F0027C24C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tDB8157D3264941B300164D4B /* UIApplication+RxTests.swift in Sources */,\n\t\t\t\tC820A9961EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */,\n\t\t\t\t033C2EF61D081C460050C015 /* UIScrollView+RxTests.swift in Sources */,\n\t\t\t\tC820AA121EB5145200D431BC /* Observable+DelayTests.swift in Sources */,\n\t\t\t\tC820A9A21EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */,\n\t\t\t\tC8845ADA1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */,\n\t\t\t\tC83509611C38706E0027C24C /* ObserverTests.swift in Sources */,\n\t\t\t\tC83509471C38706E0027C24C /* PrimitiveMockObserver.swift in Sources */,\n\t\t\t\tC8D970EF1F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */,\n\t\t\t\tC8F03F4F1DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */,\n\t\t\t\tC835094B1C38706E0027C24C /* Observable+Tests.swift in Sources */,\n\t\t\t\tC8C217D51CB7100E0038A2E6 /* UITableView+RxTests.swift in Sources */,\n\t\t\t\tC8802DD41F8CD47F001D677E /* UIControl+RxTests.swift in Sources */,\n\t\t\t\tC835092E1C38706E0027C24C /* ControlEventTests.swift in Sources */,\n\t\t\t\t844BC8BB1CE5024500F5C7CB /* UIPickerView+RxTests.swift in Sources */,\n\t\t\t\tC801DE361F6EAD3C008DB060 /* SingleTest.swift in Sources */,\n\t\t\t\t504540D0241971E80098665F /* DelegateProxyTest+WebKit.swift in Sources */,\n\t\t\t\tC896A68B1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */,\n\t\t\t\t4C8DE0E220D54545003E2D8A /* DisposeBagTest.swift in Sources */,\n\t\t\t\tC820A9AA1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */,\n\t\t\t\tC8D970E61F532FD30058F2FE /* SharedSequence+Test.swift in Sources */,\n\t\t\t\tC820A94E1EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */,\n\t\t\t\tC820A97A1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */,\n\t\t\t\tC8B290891C94D64600E923D0 /* RxTest+Controls.swift in Sources */,\n\t\t\t\t4C5213AE225E224F0079FC77 /* Observable+CompactMapTests.swift in Sources */,\n\t\t\t\tC8C4F1611DE9CD1600003FA7 /* UILabel+RxTests.swift in Sources */,\n\t\t\t\tC820A9761EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */,\n\t\t\t\tC8353CDC1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */,\n\t\t\t\tC820AA0A1EB513C800D431BC /* Observable+WindowTests.swift in Sources */,\n\t\t\t\tC801DE3A1F6EAD48008DB060 /* MaybeTest.swift in Sources */,\n\t\t\t\tC8C4F16B1DE9D4C100003FA7 /* UIAlertAction+RxTests.swift in Sources */,\n\t\t\t\t1AF67DA61CED430100C310FA /* ReplaySubjectTest.swift in Sources */,\n\t\t\t\tC835095A1C38706E0027C24C /* Observable+ZipTests+arity.swift in Sources */,\n\t\t\t\tC83509621C38706E0027C24C /* QueueTests.swift in Sources */,\n\t\t\t\tC82A336D1E2C3344003A6044 /* PerformanceTools.swift in Sources */,\n\t\t\t\t914FCD671CCDB82E0058B304 /* UIPageControl+RxTest.swift in Sources */,\n\t\t\t\tC8C4F1651DE9D3FB00003FA7 /* UIGestureRecognizer+RxTests.swift in Sources */,\n\t\t\t\tC83509351C38706E0027C24C /* KVOObservableTests.swift in Sources */,\n\t\t\t\tC89046581DC5F6F70041C7D8 /* UISearchBar+RxTests.swift in Sources */,\n\t\t\t\tC85218011E33FC160015DD38 /* RecursiveLock.swift in Sources */,\n\t\t\t\t6A7D2CD423BBDBDC0038576E /* ReplayRelayTests.swift in Sources */,\n\t\t\t\tC822BACA1DB4058000F98810 /* Event+Test.swift in Sources */,\n\t\t\t\tC83509421C38706E0027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC801DE4A1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */,\n\t\t\t\tC820A98A1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */,\n\t\t\t\tC835093A1C38706E0027C24C /* RuntimeStateSnapshot.swift in Sources */,\n\t\t\t\tC8561B661DFE1169005E97F1 /* ExampleTests.swift in Sources */,\n\t\t\t\tC86B1E221D42BF5200130546 /* SchedulerTests.swift in Sources */,\n\t\t\t\tC820A9D61EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */,\n\t\t\t\tC820A9FE1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */,\n\t\t\t\tC8C4F1711DE9D68000003FA7 /* UIStepper+RxTests.swift in Sources */,\n\t\t\t\tC820A9D21EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */,\n\t\t\t\tC83509441C38706E0027C24C /* MySubject.swift in Sources */,\n\t\t\t\tDB0B922926FB3462005CEED9 /* Infallible+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC835095F1C38706E0027C24C /* Observable+SubscriptionTest.swift in Sources */,\n\t\t\t\t78C385EB256859DC005E39B3 /* Infallible+Tests.swift in Sources */,\n\t\t\t\tC8C217D71CB710200038A2E6 /* UICollectionView+RxTests.swift in Sources */,\n\t\t\t\tC83509451C38706E0027C24C /* Observable.Extensions.swift in Sources */,\n\t\t\t\tC835093B1C38706E0027C24C /* RXObjCRuntime+Testing.m in Sources */,\n\t\t\t\tC83509461C38706E0027C24C /* PrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC820A9861EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */,\n\t\t\t\tC820AA021EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */,\n\t\t\t\tC835097E1C38726E0027C24C /* RxMutableBox.swift in Sources */,\n\t\t\t\tC820A9CE1EB50AD400D431BC /* Observable+SingleTests.swift in Sources */,\n\t\t\t\tC8F27DC21CE68DAB00D5FB4F /* UITextField+RxTests.swift in Sources */,\n\t\t\t\tC83509311C38706E0027C24C /* DelegateProxyTest+UIKit.swift in Sources */,\n\t\t\t\tC83509481C38706E0027C24C /* TestConnectableObservable.swift in Sources */,\n\t\t\t\tC8353CEC1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */,\n\t\t\t\tC8B0F70D1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */,\n\t\t\t\tD9080AD81EA06189002B433B /* UINavigationController+RxTests.swift in Sources */,\n\t\t\t\tDB08833A26FB0806005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC8353CE61DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */,\n\t\t\t\tC83509371C38706E0027C24C /* NotificationCenterTests.swift in Sources */,\n\t\t\t\tC81B6AAD1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */,\n\t\t\t\tC820A9E21EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */,\n\t\t\t\tC8C4F1691DE9D48F00003FA7 /* UIActivityIndicatorView+RxTests.swift in Sources */,\n\t\t\t\tC89CFA0C1DAAB4670079D23B /* RxTest.swift in Sources */,\n\t\t\t\tC835094F1C38706E0027C24C /* CurrentThreadSchedulerTest.swift in Sources */,\n\t\t\t\tC820A97E1EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */,\n\t\t\t\tC820A94A1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */,\n\t\t\t\t1AF67DA21CED420A00C310FA /* PublishSubjectTest.swift in Sources */,\n\t\t\t\tC820A9C61EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */,\n\t\t\t\tC835093E1C38706E0027C24C /* UIView+RxTests.swift in Sources */,\n\t\t\t\t7EDBAEB41C89B1A6006CBE67 /* UITabBarItem+RxTests.swift in Sources */,\n\t\t\t\tC83509411C38706E0027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC8379EF41D1DD326003EF8FC /* UIButton+RxTests.swift in Sources */,\n\t\t\t\tC820A9B61EB5081400D431BC /* Observable+MapTests.swift in Sources */,\n\t\t\t\tC8C4F16F1DE9D5E000003FA7 /* UISlider+RxTests.swift in Sources */,\n\t\t\t\tC820A9821EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */,\n\t\t\t\tC820A9F21EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */,\n\t\t\t\tC820AA0E1EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */,\n\t\t\t\tC8F03F411DBB98DB00AECC4C /* Anomalies.swift in Sources */,\n\t\t\t\tC820A9561EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */,\n\t\t\t\tC820A9E61EB50DB900D431BC /* Observable+TimerTests.swift in Sources */,\n\t\t\t\tC8353CE91DA19BC500BE3F5C /* TestErrors.swift in Sources */,\n\t\t\t\tC820A9521EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */,\n\t\t\t\tC801DE3E1F6EAD57008DB060 /* CompletableTest.swift in Sources */,\n\t\t\t\tC83509581C38706E0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */,\n\t\t\t\tC8A53AE51F09292A00490535 /* Completable+AndThen.swift in Sources */,\n\t\t\t\tC820A99A1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */,\n\t\t\t\tC83509651C38706E0027C24C /* VirtualSchedulerTest.swift in Sources */,\n\t\t\t\tC8C4F15D1DE9CAEE00003FA7 /* UIBarButtonItem+RxTests.swift in Sources */,\n\t\t\t\tC83509361C38706E0027C24C /* NSLayoutConstraint+RxTests.swift in Sources */,\n\t\t\t\tC898147E1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */,\n\t\t\t\tC8C4F1631DE9D0A800003FA7 /* UIProgressView+RxTests.swift in Sources */,\n\t\t\t\tC820A9BA1EB5097700D431BC /* Observable+TakeTests.swift in Sources */,\n\t\t\t\tC835094C1C38706E0027C24C /* AssumptionsTest.swift in Sources */,\n\t\t\t\t788DCE5F24CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */,\n\t\t\t\tC8D970F21F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */,\n\t\t\t\tC834F6C21DB394E100C29244 /* Observable+BlockingTest.swift in Sources */,\n\t\t\t\tC8BAA78D1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */,\n\t\t\t\tC8E390681F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */,\n\t\t\t\tC835093F1C38706E0027C24C /* ElementIndexPair.swift in Sources */,\n\t\t\t\tC820A9CA1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */,\n\t\t\t\tA2FD4E9D225D050A00288525 /* Observable+RelayBindTests.swift in Sources */,\n\t\t\t\tC83509381C38706E0027C24C /* NSObject+RxTests.swift in Sources */,\n\t\t\t\tC820AA061EB5139C00D431BC /* Observable+BufferTests.swift in Sources */,\n\t\t\t\tC820A96E1EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */,\n\t\t\t\tC8A9B6F41DAD752200C9B027 /* Observable+BindTests.swift in Sources */,\n\t\t\t\t271A97441CFC9F7B00D64125 /* UIViewController+RxTests.swift in Sources */,\n\t\t\t\tA20CC6EA259F40A100370AE3 /* Observable+WithUnretainedTests.swift in Sources */,\n\t\t\t\tC83509631C38706E0027C24C /* SubjectConcurrencyTest.swift in Sources */,\n\t\t\t\tC82FF0EF1F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */,\n\t\t\t\tC820A9721EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */,\n\t\t\t\tDB0B922C26FB3569005CEED9 /* PrimitiveSequence+ConcurrencyTests.swift in Sources */,\n\t\t\t\t84E4D3961C9B011000ADFDC9 /* UISearchController+RxTests.swift in Sources */,\n\t\t\t\tC8C4F15F1DE9CC5B00003FA7 /* UISwitch+RxTests.swift in Sources */,\n\t\t\t\tECBBA5A11DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift in Sources */,\n\t\t\t\t78B6157723B6A035009C2AD9 /* Binder+Tests.swift in Sources */,\n\t\t\t\tC820A9A61EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */,\n\t\t\t\t88718D011CE5DE2600D88D60 /* UITabBar+RxTests.swift in Sources */,\n\t\t\t\tC8D970EC1F532FD30058F2FE /* SectionedViewDataSourceMock.swift in Sources */,\n\t\t\t\t504540CB24196EB10098665F /* WKWebView+RxTests.swift in Sources */,\n\t\t\t\tC822BACE1DB424EC00F98810 /* Reactive+Tests.swift in Sources */,\n\t\t\t\tC820A9BE1EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */,\n\t\t\t\tC8165AD521891DBF00494BEF /* AtomicInt.swift in Sources */,\n\t\t\t\tC820A9AE1EB5073E00D431BC /* Observable+FilterTests.swift in Sources */,\n\t\t\t\tC83509511C38706E0027C24C /* HistoricalSchedulerTest.swift in Sources */,\n\t\t\t\tC83509521C38706E0027C24C /* MainSchedulerTests.swift in Sources */,\n\t\t\t\tC835094D1C38706E0027C24C /* BagTest.swift in Sources */,\n\t\t\t\t54700CA01CE37E1800EF3A8F /* UINavigationItem+RxTests.swift.swift in Sources */,\n\t\t\t\t1E9DA0C522006858000EB80A /* Synchronized.swift in Sources */,\n\t\t\t\tC820A9C21EB509FC00D431BC /* Observable+SkipTests.swift in Sources */,\n\t\t\t\tC820A9DE1EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */,\n\t\t\t\tC820A9921EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */,\n\t\t\t\tC835093D1C38706E0027C24C /* SentMessageTest.swift in Sources */,\n\t\t\t\tC83509401C38706E0027C24C /* EquatableArray.swift in Sources */,\n\t\t\t\tC820A9621EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */,\n\t\t\t\tC820A9DA1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */,\n\t\t\t\tC835092F1C38706E0027C24C /* ControlPropertyTests.swift in Sources */,\n\t\t\t\tC835093C1C38706E0027C24C /* RxObjCRuntimeState.swift in Sources */,\n\t\t\t\tC83509491C38706E0027C24C /* Observable+Extensions.swift in Sources */,\n\t\t\t\tC835094A1C38706E0027C24C /* TestVirtualScheduler.swift in Sources */,\n\t\t\t\tDB0B922026FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC83509501C38706E0027C24C /* DisposableTest.swift in Sources */,\n\t\t\t\tC835094E1C38706E0027C24C /* BehaviorSubjectTest.swift in Sources */,\n\t\t\t\tC8C4F1671DE9D44600003FA7 /* UISegmentedControl+RxTests.swift in Sources */,\n\t\t\t\tC820A9661EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */,\n\t\t\t\tC820A9EE1EB50EA100D431BC /* Observable+ScanTests.swift in Sources */,\n\t\t\t\tC8D970E91F532FD30058F2FE /* Driver+Test.swift in Sources */,\n\t\t\t\tC820A96A1EB4F64800D431BC /* Observable+JustTests.swift in Sources */,\n\t\t\t\tC8ADC18E2200F9B000B611D4 /* Atomic+Overrides.swift in Sources */,\n\t\t\t\tC820A98E1EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */,\n\t\t\t\tC81B6AAA1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */,\n\t\t\t\tC81A097D1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */,\n\t\t\t\tC83509321C38706E0027C24C /* DelegateProxyTest.swift in Sources */,\n\t\t\t\tC8091C531FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */,\n\t\t\t\t1E3079AC21FB52330072A7E6 /* AtomicTests.swift in Sources */,\n\t\t\t\t78C385CE25685076005E39B3 /* Infallible+BindTests.swift in Sources */,\n\t\t\t\t0BA9496C1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */,\n\t\t\t\tC8F27DC01CE68DA600D5FB4F /* UITextView+RxTests.swift in Sources */,\n\t\t\t\tC820A9B21EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */,\n\t\t\t\tC820A9FA1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */,\n\t\t\t\tC820A9EA1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */,\n\t\t\t\tC83509431C38706E0027C24C /* MockDisposable.swift in Sources */,\n\t\t\t\tC8323A8E1E33FD5200CC0C7F /* Resources.swift in Sources */,\n\t\t\t\tC8C4F16D1DE9D4F400003FA7 /* UIDatePicker+RxTests.swift in Sources */,\n\t\t\t\tC8D970E31F532FD30058F2FE /* Signal+Test.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509801C38740E0027C24C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC896A68C1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */,\n\t\t\t\tC83509F31C38755D0027C24C /* AssumptionsTest.swift in Sources */,\n\t\t\t\tC83509ED1C3875580027C24C /* MySubject.swift in Sources */,\n\t\t\t\tC83509C61C3875220027C24C /* NSObject+RxTests.swift in Sources */,\n\t\t\t\tC820A9871EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */,\n\t\t\t\tC8C4F1881DE9DF0200003FA7 /* UITableView+RxTests.swift in Sources */,\n\t\t\t\tC820A9FF1EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */,\n\t\t\t\t1E9DA0C622006858000EB80A /* Synchronized.swift in Sources */,\n\t\t\t\tC83509EE1C3875580027C24C /* Observable.Extensions.swift in Sources */,\n\t\t\t\tC83509BD1C38750D0027C24C /* ControlPropertyTests.swift in Sources */,\n\t\t\t\t4C5213AF225E22500079FC77 /* Observable+CompactMapTests.swift in Sources */,\n\t\t\t\tC83509E11C3875500027C24C /* TestVirtualScheduler.swift in Sources */,\n\t\t\t\tC820A94F1EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */,\n\t\t\t\tC8B2908A1C94D64700E923D0 /* RxTest+Controls.swift in Sources */,\n\t\t\t\t78C385CF25685076005E39B3 /* Infallible+BindTests.swift in Sources */,\n\t\t\t\tB44D73EC1EE6D4A300EBFBE8 /* UIViewController+RxTests.swift in Sources */,\n\t\t\t\tC820A9671EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */,\n\t\t\t\tC820A9C71EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */,\n\t\t\t\tDB08833B26FB080B005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC8BAA78E1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */,\n\t\t\t\tC83509EF1C3875580027C24C /* PrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC8C4F17D1DE9DF0200003FA7 /* UIGestureRecognizer+RxTests.swift in Sources */,\n\t\t\t\tC8C4F1811DE9DF0200003FA7 /* UIScrollView+RxTests.swift in Sources */,\n\t\t\t\t1E3079AD21FB52330072A7E6 /* AtomicTests.swift in Sources */,\n\t\t\t\t54700CA11CE37E1900EF3A8F /* UINavigationItem+RxTests.swift.swift in Sources */,\n\t\t\t\tC8D970E71F532FD30058F2FE /* SharedSequence+Test.swift in Sources */,\n\t\t\t\tC8350A191C38756A0027C24C /* VirtualSchedulerTest.swift in Sources */,\n\t\t\t\tC820A9E71EB50DB900D431BC /* Observable+TimerTests.swift in Sources */,\n\t\t\t\tC820A97F1EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */,\n\t\t\t\tC8C4F1781DE9DF0200003FA7 /* UIActivityIndicatorView+RxTests.swift in Sources */,\n\t\t\t\tC8ADC18F2200F9B000B611D4 /* Atomic+Overrides.swift in Sources */,\n\t\t\t\tC83509BF1C3875220027C24C /* DelegateProxyTest+UIKit.swift in Sources */,\n\t\t\t\tC8D970F31F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */,\n\t\t\t\tC820A94B1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */,\n\t\t\t\tC834F6C31DB394E100C29244 /* Observable+BlockingTest.swift in Sources */,\n\t\t\t\tC83509D41C38753C0027C24C /* RxObjCRuntimeState.swift in Sources */,\n\t\t\t\tC822BACF1DB424EC00F98810 /* Reactive+Tests.swift in Sources */,\n\t\t\t\tC8C4F17E1DE9DF0200003FA7 /* UILabel+RxTests.swift in Sources */,\n\t\t\t\tC83509C01C3875220027C24C /* DelegateProxyTest.swift in Sources */,\n\t\t\t\tC820A9F31EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */,\n\t\t\t\tC801DE371F6EAD3C008DB060 /* SingleTest.swift in Sources */,\n\t\t\t\tC8350A131C38756A0027C24C /* Observable+SubscriptionTest.swift in Sources */,\n\t\t\t\tC83509E01C3875500027C24C /* Observable+Extensions.swift in Sources */,\n\t\t\t\tC8C4F1801DE9DF0200003FA7 /* UIProgressView+RxTests.swift in Sources */,\n\t\t\t\tC85217EE1E33C8E60015DD38 /* PerformanceTools.swift in Sources */,\n\t\t\t\tC8C4F17C1DE9DF0200003FA7 /* UIDatePicker+RxTests.swift in Sources */,\n\t\t\t\tA20CC6F5259F40A100370AE3 /* Observable+WithUnretainedTests.swift in Sources */,\n\t\t\t\tC83509C41C3875220027C24C /* NSLayoutConstraint+RxTests.swift in Sources */,\n\t\t\t\tC820A9731EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */,\n\t\t\t\tC820A9931EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */,\n\t\t\t\t88718D021CE5DE2600D88D60 /* UITabBar+RxTests.swift in Sources */,\n\t\t\t\tC83509BC1C38750D0027C24C /* ControlEventTests.swift in Sources */,\n\t\t\t\tC83509EC1C3875580027C24C /* MockDisposable.swift in Sources */,\n\t\t\t\tC820A9D31EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */,\n\t\t\t\tC820AA131EB5145200D431BC /* Observable+DelayTests.swift in Sources */,\n\t\t\t\tC820AA0B1EB513C800D431BC /* Observable+WindowTests.swift in Sources */,\n\t\t\t\t1AF67DA31CED427D00C310FA /* PublishSubjectTest.swift in Sources */,\n\t\t\t\tC820A9EF1EB50EA100D431BC /* Observable+ScanTests.swift in Sources */,\n\t\t\t\tC8353CDD1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */,\n\t\t\t\tC820A9831EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */,\n\t\t\t\tC8350A2A1C3875B50027C24C /* RxMutableBox.swift in Sources */,\n\t\t\t\tC820A9B71EB5081400D431BC /* Observable+MapTests.swift in Sources */,\n\t\t\t\tD9080AD91EA06189002B433B /* UINavigationController+RxTests.swift in Sources */,\n\t\t\t\tC8C4F17A1DE9DF0200003FA7 /* UIBarButtonItem+RxTests.swift in Sources */,\n\t\t\t\tC8350A151C38756A0027C24C /* ObserverTests.swift in Sources */,\n\t\t\t\t1AF67DA71CED430100C310FA /* ReplaySubjectTest.swift in Sources */,\n\t\t\t\tC82FF0F01F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */,\n\t\t\t\tC820A9531EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */,\n\t\t\t\tC81B6AAB1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */,\n\t\t\t\tC801DE3B1F6EAD48008DB060 /* MaybeTest.swift in Sources */,\n\t\t\t\tC820A98B1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */,\n\t\t\t\tC83509F11C3875580027C24C /* TestConnectableObservable.swift in Sources */,\n\t\t\t\tC83509F51C38755D0027C24C /* BehaviorSubjectTest.swift in Sources */,\n\t\t\t\tC820A97B1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */,\n\t\t\t\tECBBA5A21DF8C0FF00DDDC2E /* UITabBarController+RxTests.swift in Sources */,\n\t\t\t\tC8353CED1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */,\n\t\t\t\tDB0B922126FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC85218021E33FC160015DD38 /* RecursiveLock.swift in Sources */,\n\t\t\t\tC8D970E41F532FD30058F2FE /* Signal+Test.swift in Sources */,\n\t\t\t\tC820A9771EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */,\n\t\t\t\tC83509EB1C3875580027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC8F03F501DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */,\n\t\t\t\tC820A9BF1EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */,\n\t\t\t\tC820A9CB1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */,\n\t\t\t\tC822BACB1DB4058000F98810 /* Event+Test.swift in Sources */,\n\t\t\t\tC8A53AE61F09292A00490535 /* Completable+AndThen.swift in Sources */,\n\t\t\t\tC820A99B1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */,\n\t\t\t\tC8D970F01F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */,\n\t\t\t\tC8353CE71DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */,\n\t\t\t\tC8350A161C38756A0027C24C /* QueueTests.swift in Sources */,\n\t\t\t\tC820A9DB1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */,\n\t\t\t\tC820A9971EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */,\n\t\t\t\tC801DE3F1F6EAD57008DB060 /* CompletableTest.swift in Sources */,\n\t\t\t\tC898147F1E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */,\n\t\t\t\tC89CFA0D1DAAB4670079D23B /* RxTest.swift in Sources */,\n\t\t\t\tC83509C51C3875220027C24C /* NotificationCenterTests.swift in Sources */,\n\t\t\t\tC820A9CF1EB50AD400D431BC /* Observable+SingleTests.swift in Sources */,\n\t\t\t\tC820A9D71EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */,\n\t\t\t\tC820A9631EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */,\n\t\t\t\tC820A98F1EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */,\n\t\t\t\tC8F27DC31CE68DAC00D5FB4F /* UITextField+RxTests.swift in Sources */,\n\t\t\t\tC83509FF1C38755D0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */,\n\t\t\t\tC8C4F1831DE9DF0200003FA7 /* UISearchController+RxTests.swift in Sources */,\n\t\t\t\tC83509D81C3875420027C24C /* SentMessageTest.swift in Sources */,\n\t\t\t\tC8C4F1851DE9DF0200003FA7 /* UISlider+RxTests.swift in Sources */,\n\t\t\t\t0BA9496D1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */,\n\t\t\t\tC83509F61C38755D0027C24C /* CurrentThreadSchedulerTest.swift in Sources */,\n\t\t\t\tC820A9AF1EB5073E00D431BC /* Observable+FilterTests.swift in Sources */,\n\t\t\t\tC820A9DF1EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */,\n\t\t\t\tC83509F01C3875580027C24C /* PrimitiveMockObserver.swift in Sources */,\n\t\t\t\t6A7D2CD523BBDBDC0038576E /* ReplayRelayTests.swift in Sources */,\n\t\t\t\tC820A9C31EB509FC00D431BC /* Observable+SkipTests.swift in Sources */,\n\t\t\t\tC83509C31C3875220027C24C /* KVOObservableTests.swift in Sources */,\n\t\t\t\tC8A9B6F51DAD752200C9B027 /* Observable+BindTests.swift in Sources */,\n\t\t\t\tC83509F91C38755D0027C24C /* MainSchedulerTests.swift in Sources */,\n\t\t\t\tC8C4F1871DE9DF0200003FA7 /* UISwitch+RxTests.swift in Sources */,\n\t\t\t\tC820AA031EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */,\n\t\t\t\t7EDBAEC31C89BCB9006CBE67 /* UITabBarItem+RxTests.swift in Sources */,\n\t\t\t\tC8091C541FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */,\n\t\t\t\t4C8DE0E320D54545003E2D8A /* DisposeBagTest.swift in Sources */,\n\t\t\t\t914FCD681CCDB82E0058B304 /* UIPageControl+RxTest.swift in Sources */,\n\t\t\t\tC83509DD1C38754C0027C24C /* EquatableArray.swift in Sources */,\n\t\t\t\tC83509F71C38755D0027C24C /* DisposableTest.swift in Sources */,\n\t\t\t\tC8C4F18A1DE9DFA400003FA7 /* UISearchBar+RxTests.swift in Sources */,\n\t\t\t\tC8323A8F1E33FD5200CC0C7F /* Resources.swift in Sources */,\n\t\t\t\tC8F03F421DBB98DB00AECC4C /* Anomalies.swift in Sources */,\n\t\t\t\tC8E390691F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */,\n\t\t\t\tC820A9A71EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */,\n\t\t\t\tC83509DC1C38754C0027C24C /* ElementIndexPair.swift in Sources */,\n\t\t\t\tC8B0F70E1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */,\n\t\t\t\tC8845ADB1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */,\n\t\t\t\t78C385EC256859DC005E39B3 /* Infallible+Tests.swift in Sources */,\n\t\t\t\tC8350A171C38756A0027C24C /* SubjectConcurrencyTest.swift in Sources */,\n\t\t\t\tC83509EA1C3875580027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC84CB1721C3876B800EB63CC /* UIView+RxTests.swift in Sources */,\n\t\t\t\tC8353CEA1DA19BC500BE3F5C /* TestErrors.swift in Sources */,\n\t\t\t\tC820A9B31EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */,\n\t\t\t\tC820A9AB1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */,\n\t\t\t\tC820A9571EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */,\n\t\t\t\tC83509F81C38755D0027C24C /* HistoricalSchedulerTest.swift in Sources */,\n\t\t\t\tC8379EF51D1DD326003EF8FC /* UIButton+RxTests.swift in Sources */,\n\t\t\t\tC81B6AAE1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */,\n\t\t\t\tC83509F21C38755D0027C24C /* Observable+Tests.swift in Sources */,\n\t\t\t\tC820A9E31EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */,\n\t\t\t\t788DCE6024CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */,\n\t\t\t\tC8D970EA1F532FD30058F2FE /* Driver+Test.swift in Sources */,\n\t\t\t\tC820A9FB1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */,\n\t\t\t\tC801DE4B1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */,\n\t\t\t\tC820AA0F1EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */,\n\t\t\t\tC820A9BB1EB5097700D431BC /* Observable+TakeTests.swift in Sources */,\n\t\t\t\tC820A96B1EB4F64800D431BC /* Observable+JustTests.swift in Sources */,\n\t\t\t\tC8C4F1791DE9DF0200003FA7 /* UIAlertAction+RxTests.swift in Sources */,\n\t\t\t\tC83509D31C3875390027C24C /* RXObjCRuntime+Testing.m in Sources */,\n\t\t\t\tC81A097E1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */,\n\t\t\t\tC8C4F17B1DE9DF0200003FA7 /* UICollectionView+RxTests.swift in Sources */,\n\t\t\t\tC820A96F1EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */,\n\t\t\t\tC8165AD621891DBF00494BEF /* AtomicInt.swift in Sources */,\n\t\t\t\tC820A9A31EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */,\n\t\t\t\tC8C4F1841DE9DF0200003FA7 /* UISegmentedControl+RxTests.swift in Sources */,\n\t\t\t\tC820A9EB1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */,\n\t\t\t\tC83509D01C38752E0027C24C /* RuntimeStateSnapshot.swift in Sources */,\n\t\t\t\tC8C4F1861DE9DF0200003FA7 /* UIStepper+RxTests.swift in Sources */,\n\t\t\t\tA2FD4E9E225D050B00288525 /* Observable+RelayBindTests.swift in Sources */,\n\t\t\t\tC83509F41C38755D0027C24C /* BagTest.swift in Sources */,\n\t\t\t\tC8F27DC11CE68DA700D5FB4F /* UITextView+RxTests.swift in Sources */,\n\t\t\t\tC86B1E231D42BF5200130546 /* SchedulerTests.swift in Sources */,\n\t\t\t\tC820AA071EB5139C00D431BC /* Observable+BufferTests.swift in Sources */,\n\t\t\t\tC8D970ED1F532FD30058F2FE /* SectionedViewDataSourceMock.swift in Sources */,\n\t\t\t\tC8350A0F1C3875630027C24C /* Observable+ZipTests+arity.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83509901C38742C0027C24C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8350A201C38756B0027C24C /* QueueTests.swift in Sources */,\n\t\t\t\tA20CC6F6259F40A200370AE3 /* Observable+WithUnretainedTests.swift in Sources */,\n\t\t\t\tC820A9541EB4ECC000D431BC /* Observable+ToArrayTests.swift in Sources */,\n\t\t\t\t1AF67DA41CED427D00C310FA /* PublishSubjectTest.swift in Sources */,\n\t\t\t\tC820A9781EB4F92100D431BC /* Observable+GenerateTests.swift in Sources */,\n\t\t\t\t0BA9496E1E224B9C0036DD06 /* AsyncSubjectTests.swift in Sources */,\n\t\t\t\tC83509E71C3875580027C24C /* PrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC83509CE1C3875230027C24C /* NSObject+RxTests.swift in Sources */,\n\t\t\t\tC820A9D81EB50C5C00D431BC /* Observable+DistinctUntilChangedTests.swift in Sources */,\n\t\t\t\tC820A9B81EB5081400D431BC /* Observable+MapTests.swift in Sources */,\n\t\t\t\tC8350A011C38755E0027C24C /* AssumptionsTest.swift in Sources */,\n\t\t\t\tC820A9D41EB50B0900D431BC /* Observable+GroupByTests.swift in Sources */,\n\t\t\t\tC820AA101EB5140100D431BC /* Observable+TimeoutTests.swift in Sources */,\n\t\t\t\tC81B6AAC1DB2C15C0047CF86 /* Platform.Darwin.swift in Sources */,\n\t\t\t\tC8350A2B1C3875B60027C24C /* RxMutableBox.swift in Sources */,\n\t\t\t\tC8350A071C38755E0027C24C /* MainSchedulerTests.swift in Sources */,\n\t\t\t\tC8D970F41F532FD30058F2FE /* SharedSequence+OperatorTest.swift in Sources */,\n\t\t\t\t4C5213B0225E22510079FC77 /* Observable+CompactMapTests.swift in Sources */,\n\t\t\t\tC820A9F01EB50EA100D431BC /* Observable+ScanTests.swift in Sources */,\n\t\t\t\tC8ADC1902200F9B000B611D4 /* Atomic+Overrides.swift in Sources */,\n\t\t\t\tC83509B81C38750D0027C24C /* ControlEventTests.swift in Sources */,\n\t\t\t\tA2FD4E9F225D050B00288525 /* Observable+RelayBindTests.swift in Sources */,\n\t\t\t\tC83509CB1C3875230027C24C /* KVOObservableTests.swift in Sources */,\n\t\t\t\tC83509C81C3875230027C24C /* DelegateProxyTest.swift in Sources */,\n\t\t\t\tC8350A0D1C38755E0027C24C /* Observable+CombineLatestTests+arity.swift in Sources */,\n\t\t\t\tC822BACC1DB4058100F98810 /* Event+Test.swift in Sources */,\n\t\t\t\tC8BAA78F1E34F8D400EEC727 /* RecursiveLockTest.swift in Sources */,\n\t\t\t\tC820A9581EB4ED7C00D431BC /* Observable+MulticastTests.swift in Sources */,\n\t\t\t\tC822BAD01DB424EC00F98810 /* Reactive+Tests.swift in Sources */,\n\t\t\t\t78067D1125164938007CB7EE /* NSTextView+RxTests.swift in Sources */,\n\t\t\t\tC83509E21C3875580027C24C /* BackgroundThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC8091C551FAA3588001DB32A /* ObservableConvertibleType+SharedSequence.swift in Sources */,\n\t\t\t\tC8350A0E1C3875630027C24C /* Observable+ZipTests+arity.swift in Sources */,\n\t\t\t\tC820AA001EB5110E00D431BC /* Observable+DematerializeTests.swift in Sources */,\n\t\t\t\tC8D970F11F532FD30058F2FE /* SharedSequence+Extensions.swift in Sources */,\n\t\t\t\tC820A9941EB4FD1400D431BC /* Observable+SwitchIfEmptyTests.swift in Sources */,\n\t\t\t\tC83509CF1C3875260027C24C /* NSView+RxTests.swift in Sources */,\n\t\t\t\t6A7D2CD623BBDBDC0038576E /* ReplayRelayTests.swift in Sources */,\n\t\t\t\tC820A9501EB4EC3C00D431BC /* Observable+ReduceTests.swift in Sources */,\n\t\t\t\tC820A9841EB4FB0400D431BC /* Observable+UsingTests.swift in Sources */,\n\t\t\t\tC820A9881EB4FB5B00D431BC /* Observable+DebugTests.swift in Sources */,\n\t\t\t\tC820A9E01EB50CF800D431BC /* Observable+ThrottleTests.swift in Sources */,\n\t\t\t\tC8350A1F1C38756B0027C24C /* ObserverTests.swift in Sources */,\n\t\t\t\tC820A9681EB4F39500D431BC /* Observable+SubscribeOnTests.swift in Sources */,\n\t\t\t\tC820A9981EB4FF7000D431BC /* Observable+ConcatTests.swift in Sources */,\n\t\t\t\tC820A9901EB4FCC400D431BC /* Observable+SwitchTests.swift in Sources */,\n\t\t\t\tC8845ADC1EDB607800B36836 /* Observable+ShareReplayScopeTests.swift in Sources */,\n\t\t\t\tC834F6C61DB3950600C29244 /* NSControl+RxTests.swift in Sources */,\n\t\t\t\tC83509D61C3875420027C24C /* SentMessageTest.swift in Sources */,\n\t\t\t\tC81A097F1E6C27A100900B3B /* Observable+ZipTests.swift in Sources */,\n\t\t\t\tC820AA0C1EB513C800D431BC /* Observable+WindowTests.swift in Sources */,\n\t\t\t\tC8350A021C38755E0027C24C /* BagTest.swift in Sources */,\n\t\t\t\tC86B1E241D42BF5200130546 /* SchedulerTests.swift in Sources */,\n\t\t\t\tC89814801E75AD380035949C /* PrimitiveSequenceTest+zip+arity.swift in Sources */,\n\t\t\t\tC820A9FC1EB510D500D431BC /* Observable+MaterializeTests.swift in Sources */,\n\t\t\t\tC83509E81C3875580027C24C /* PrimitiveMockObserver.swift in Sources */,\n\t\t\t\tC83509BE1C3875100027C24C /* DelegateProxyTest+Cocoa.swift in Sources */,\n\t\t\t\tC820A9F41EB5109300D431BC /* Observable+DefaultIfEmpty.swift in Sources */,\n\t\t\t\tC820AA041EB5134000D431BC /* Observable+DelaySubscriptionTests.swift in Sources */,\n\t\t\t\tC8E3906A1F379386004FC993 /* Observable+EnumeratedTests.swift in Sources */,\n\t\t\t\tC8353CEB1DA19BC500BE3F5C /* TestErrors.swift in Sources */,\n\t\t\t\tC8B2908B1C94D64700E923D0 /* RxTest+Controls.swift in Sources */,\n\t\t\t\t4C8DE0E420D54545003E2D8A /* DisposeBagTest.swift in Sources */,\n\t\t\t\tC8C4F1751DE9D80A00003FA7 /* NSSlider+RxTests.swift in Sources */,\n\t\t\t\tC820A9E41EB50D6C00D431BC /* Observable+SampleTests.swift in Sources */,\n\t\t\t\tC8F03F511DBBAE9400AECC4C /* DispatchQueue+Extensions.swift in Sources */,\n\t\t\t\tC82A336B1E2C3343003A6044 /* PerformanceTools.swift in Sources */,\n\t\t\t\tC8350A231C38756B0027C24C /* VirtualSchedulerTest.swift in Sources */,\n\t\t\t\tC83509E51C3875580027C24C /* MySubject.swift in Sources */,\n\t\t\t\tC820A94C1EB4E75E00D431BC /* Observable+AmbTests.swift in Sources */,\n\t\t\t\tC801DE4C1F6EBB84008DB060 /* Observable+PrimitiveSequenceTest.swift in Sources */,\n\t\t\t\tC83509B91C38750D0027C24C /* ControlPropertyTests.swift in Sources */,\n\t\t\t\tC820AA081EB5139C00D431BC /* Observable+BufferTests.swift in Sources */,\n\t\t\t\tC820A9D01EB50AD400D431BC /* Observable+SingleTests.swift in Sources */,\n\t\t\t\tC820A9C81EB50A4200D431BC /* Observable+SkipWhileTests.swift in Sources */,\n\t\t\t\tDB08833C26FB080B005805BE /* SharedSequence+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC820A9EC1EB50E3400D431BC /* Observable+RetryWhenTests.swift in Sources */,\n\t\t\t\tC8323A901E33FD5200CC0C7F /* Resources.swift in Sources */,\n\t\t\t\tC820A98C1EB4FBD600D431BC /* Observable+CatchTests.swift in Sources */,\n\t\t\t\tC820A9AC1EB505A800D431BC /* Observable+WithLatestFromTests.swift in Sources */,\n\t\t\t\tC8350A061C38755E0027C24C /* HistoricalSchedulerTest.swift in Sources */,\n\t\t\t\tC820A9E81EB50DB900D431BC /* Observable+TimerTests.swift in Sources */,\n\t\t\t\tC820A9CC1EB50A7100D431BC /* Observable+ElementAtTests.swift in Sources */,\n\t\t\t\tC83509D11C38752E0027C24C /* RuntimeStateSnapshot.swift in Sources */,\n\t\t\t\tC8A53AE71F09292A00490535 /* Completable+AndThen.swift in Sources */,\n\t\t\t\t1E9DA0C722006858000EB80A /* Synchronized.swift in Sources */,\n\t\t\t\tC83509D21C3875380027C24C /* RXObjCRuntime+Testing.m in Sources */,\n\t\t\t\tC8353CDE1DA19BA000BE3F5C /* MessageProcessingStage.swift in Sources */,\n\t\t\t\t1E3079AE21FB52330072A7E6 /* AtomicTests.swift in Sources */,\n\t\t\t\tC8F03F431DBB98DB00AECC4C /* Anomalies.swift in Sources */,\n\t\t\t\tC8D970E81F532FD30058F2FE /* SharedSequence+Test.swift in Sources */,\n\t\t\t\tC83509CC1C3875230027C24C /* NSLayoutConstraint+RxTests.swift in Sources */,\n\t\t\t\tC896A68D1E6B7DC60073A3A8 /* Observable+CombineLatestTests.swift in Sources */,\n\t\t\t\tC820A9A41EB5011700D431BC /* Observable+TakeUntilTests.swift in Sources */,\n\t\t\t\tC8C4F1731DE9D7A300003FA7 /* NSTextField+RxTests.swift in Sources */,\n\t\t\t\tC820A9641EB4EFD300D431BC /* Observable+ObserveOnTests.swift in Sources */,\n\t\t\t\t788DCE6124CB8512005B8F8C /* Observable+DecodeTests.swift in Sources */,\n\t\t\t\tC83509E41C3875580027C24C /* MockDisposable.swift in Sources */,\n\t\t\t\tC83509D51C38753E0027C24C /* RxObjCRuntimeState.swift in Sources */,\n\t\t\t\t1AF67DA81CED430100C310FA /* ReplaySubjectTest.swift in Sources */,\n\t\t\t\tC820A9801EB4FA5A00D431BC /* Observable+RepeatTests.swift in Sources */,\n\t\t\t\tC8350A001C38755E0027C24C /* Observable+Tests.swift in Sources */,\n\t\t\t\tC83509E91C3875580027C24C /* TestConnectableObservable.swift in Sources */,\n\t\t\t\tC820A97C1EB4FA0800D431BC /* Observable+RangeTests.swift in Sources */,\n\t\t\t\tC82FF0F11F93DD2E00BDB34D /* ObservableType+SubscriptionTests.swift in Sources */,\n\t\t\t\tC83509DF1C38754F0027C24C /* TestVirtualScheduler.swift in Sources */,\n\t\t\t\tC820A9DC1EB50CAA00D431BC /* Observable+DoOnTests.swift in Sources */,\n\t\t\t\tC83509CD1C3875230027C24C /* NotificationCenterTests.swift in Sources */,\n\t\t\t\tC83509DB1C38754C0027C24C /* EquatableArray.swift in Sources */,\n\t\t\t\tC820A9BC1EB5097700D431BC /* Observable+TakeTests.swift in Sources */,\n\t\t\t\tC8350A031C38755E0027C24C /* BehaviorSubjectTest.swift in Sources */,\n\t\t\t\tC83509E31C3875580027C24C /* MainThreadPrimitiveHotObservable.swift in Sources */,\n\t\t\t\tC834F6C41DB394E100C29244 /* Observable+BlockingTest.swift in Sources */,\n\t\t\t\tC820AA141EB5145200D431BC /* Observable+DelayTests.swift in Sources */,\n\t\t\t\tC8350A1D1C38756B0027C24C /* Observable+SubscriptionTest.swift in Sources */,\n\t\t\t\tC820A9C01EB509B500D431BC /* Observable+TakeLastTests.swift in Sources */,\n\t\t\t\tC820A9B41EB507D300D431BC /* Observable+TakeWhileTests.swift in Sources */,\n\t\t\t\tC820A9B01EB5073E00D431BC /* Observable+FilterTests.swift in Sources */,\n\t\t\t\tC8350A041C38755E0027C24C /* CurrentThreadSchedulerTest.swift in Sources */,\n\t\t\t\tC8353CE81DA19BC500BE3F5C /* Recorded+Timeless.swift in Sources */,\n\t\t\t\tC8A9B6F61DAD752200C9B027 /* Observable+BindTests.swift in Sources */,\n\t\t\t\t504540D1241971E80098665F /* DelegateProxyTest+WebKit.swift in Sources */,\n\t\t\t\tDB0B922226FB3139005CEED9 /* Observable+ConcurrencyTests.swift in Sources */,\n\t\t\t\tC820A99C1EB5001C00D431BC /* Observable+MergeTests.swift in Sources */,\n\t\t\t\tC8350A051C38755E0027C24C /* DisposableTest.swift in Sources */,\n\t\t\t\tC820A96C1EB4F64800D431BC /* Observable+JustTests.swift in Sources */,\n\t\t\t\tC801DE401F6EAD57008DB060 /* CompletableTest.swift in Sources */,\n\t\t\t\tC820A9741EB4F84000D431BC /* Observable+OptionalTests.swift in Sources */,\n\t\t\t\t504540CC24196EB10098665F /* WKWebView+RxTests.swift in Sources */,\n\t\t\t\tC820A9C41EB509FC00D431BC /* Observable+SkipTests.swift in Sources */,\n\t\t\t\tC820A9701EB4F7AC00D431BC /* Observable+SequenceTests.swift in Sources */,\n\t\t\t\tC8B0F70F1F530A1700548EBE /* SharingSchedulerTests.swift in Sources */,\n\t\t\t\tC8350A211C38756B0027C24C /* SubjectConcurrencyTest.swift in Sources */,\n\t\t\t\tC8353CEE1DA19BC500BE3F5C /* XCTest+AllTests.swift in Sources */,\n\t\t\t\tC8D970E51F532FD30058F2FE /* Signal+Test.swift in Sources */,\n\t\t\t\tC8165AD721891DBF00494BEF /* AtomicInt.swift in Sources */,\n\t\t\t\tC801DE381F6EAD3C008DB060 /* SingleTest.swift in Sources */,\n\t\t\t\tC81B6AAF1DB2C15C0047CF86 /* Platform.Linux.swift in Sources */,\n\t\t\t\tC801DE3C1F6EAD48008DB060 /* MaybeTest.swift in Sources */,\n\t\t\t\tC8C4F1771DE9D84900003FA7 /* NSButton+RxTests.swift in Sources */,\n\t\t\t\tC820A9A81EB5056C00D431BC /* Observable+SkipUntilTests.swift in Sources */,\n\t\t\t\tC83509E61C3875580027C24C /* Observable.Extensions.swift in Sources */,\n\t\t\t\tC8D970EB1F532FD30058F2FE /* Driver+Test.swift in Sources */,\n\t\t\t\tC83509DE1C38754F0027C24C /* Observable+Extensions.swift in Sources */,\n\t\t\t\tC83509DA1C38754C0027C24C /* ElementIndexPair.swift in Sources */,\n\t\t\t\tC89CFA0E1DAAB4670079D23B /* RxTest.swift in Sources */,\n\t\t\t\tC85218031E33FC160015DD38 /* RecursiveLock.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC85BA0471C3878740075D68E /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC85217F31E33ECA00015DD38 /* PerformanceTools.swift in Sources */,\n\t\t\t\tC8E8BA721E2C18AE00A4AC2C /* main.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88FA5001C25C44800CCFEA4 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC89CFA321DAABBE20079D23B /* Recorded.swift in Sources */,\n\t\t\t\tC89CFA4A1DAABBE20079D23B /* TestableObserver.swift in Sources */,\n\t\t\t\tC89CFA4E1DAABBE20079D23B /* XCTest+Rx.swift in Sources */,\n\t\t\t\tC89CFA361DAABBE20079D23B /* RxTest.swift in Sources */,\n\t\t\t\tC89CFA261DAABBE20079D23B /* Event+Equatable.swift in Sources */,\n\t\t\t\tC89CFA221DAABBE20079D23B /* ColdObservable.swift in Sources */,\n\t\t\t\tC89CFA461DAABBE20079D23B /* TestableObservable.swift in Sources */,\n\t\t\t\tC89CFA3A1DAABBE20079D23B /* TestScheduler.swift in Sources */,\n\t\t\t\tC86781831DB8143A00B2029A /* Bag.swift in Sources */,\n\t\t\t\tC89CFA2A1DAABBE20079D23B /* HotObservable.swift in Sources */,\n\t\t\t\t4583D8231FE94BBA00AA1BB1 /* Recorded+Event.swift in Sources */,\n\t\t\t\tC89CFA421DAABBE20079D23B /* Subscription.swift in Sources */,\n\t\t\t\tC89CFA1E1DAABBE20079D23B /* Any+Equatable.swift in Sources */,\n\t\t\t\tC89CFA3E1DAABBE20079D23B /* TestSchedulerVirtualTimeConverter.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8A56AD21AD7424700B4673B /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tDB0B922426FB31C1005CEED9 /* PrimitiveSequence+Concurrency.swift in Sources */,\n\t\t\t\tC820A8BC1EB4DA5A00D431BC /* SwitchIfEmpty.swift in Sources */,\n\t\t\t\tC8093CCB1B8A72BE0088E94D /* ConnectableObservableType.swift in Sources */,\n\t\t\t\tC820A8801EB4DA5A00D431BC /* Filter.swift in Sources */,\n\t\t\t\tC820A86C1EB4DA5A00D431BC /* ElementAt.swift in Sources */,\n\t\t\t\t25F6ECBC1F48C366008552FA /* Maybe.swift in Sources */,\n\t\t\t\tC83D73BC1C1DBAEE003DC470 /* InvocableScheduledItem.swift in Sources */,\n\t\t\t\tC8093CE51B8A72BE0088E94D /* NopDisposable.swift in Sources */,\n\t\t\t\tC86781741DB8129E00B2029A /* InfiniteSequence.swift in Sources */,\n\t\t\t\tC8093CD31B8A72BE0088E94D /* Disposable.swift in Sources */,\n\t\t\t\tC801DE451F6EBB32008DB060 /* ObservableType+PrimitiveSequence.swift in Sources */,\n\t\t\t\tC820A8A41EB4DA5A00D431BC /* DistinctUntilChanged.swift in Sources */,\n\t\t\t\tC8093CED1B8A72BE0088E94D /* SingleAssignmentDisposable.swift in Sources */,\n\t\t\t\tC820A8341EB4DA5900D431BC /* Delay.swift in Sources */,\n\t\t\t\tC89814781E75A7D70035949C /* PrimitiveSequence+Zip+arity.swift in Sources */,\n\t\t\t\tC849BE2B1BAB5D070019AD27 /* ObservableConvertibleType.swift in Sources */,\n\t\t\t\tC8093D9B1B8A72BE0088E94D /* SchedulerServices+Emulation.swift in Sources */,\n\t\t\t\tC820A8B81EB4DA5A00D431BC /* Concat.swift in Sources */,\n\t\t\t\tC820A8301EB4DA5900D431BC /* Switch.swift in Sources */,\n\t\t\t\t601AE3DA1EE24E4F00617386 /* SwiftSupport.swift in Sources */,\n\t\t\t\t819C2F091F2FBC7F009104B6 /* First.swift in Sources */,\n\t\t\t\tC820A8B41EB4DA5A00D431BC /* TakeWithPredicate.swift in Sources */,\n\t\t\t\tC80EEC341D42D06E00131C39 /* DispatchQueueConfiguration.swift in Sources */,\n\t\t\t\tC820A8841EB4DA5A00D431BC /* Dematerialize.swift in Sources */,\n\t\t\t\tC820A8941EB4DA5A00D431BC /* RetryWhen.swift in Sources */,\n\t\t\t\tC820A8441EB4DA5900D431BC /* DelaySubscription.swift in Sources */,\n\t\t\t\tC820A8E81EB4DA5A00D431BC /* Just.swift in Sources */,\n\t\t\t\tC8093D691B8A72BE0088E94D /* AnyObserver.swift in Sources */,\n\t\t\t\tC8B144FB1BD2D44500267DCE /* ConcurrentMainScheduler.swift in Sources */,\n\t\t\t\tC820A9181EB4DA5A00D431BC /* AsMaybe.swift in Sources */,\n\t\t\t\t0BA949671E224B7E0036DD06 /* AsyncSubject.swift in Sources */,\n\t\t\t\tC8E390631F379041004FC993 /* Enumerated.swift in Sources */,\n\t\t\t\tC820A8CC1EB4DA5A00D431BC /* Optional.swift in Sources */,\n\t\t\t\tC8093D871B8A72BE0088E94D /* RxMutableBox.swift in Sources */,\n\t\t\t\tC8093D931B8A72BE0088E94D /* MainScheduler.swift in Sources */,\n\t\t\t\tC820A8481EB4DA5900D431BC /* Skip.swift in Sources */,\n\t\t\t\tC820A8D81EB4DA5A00D431BC /* Using.swift in Sources */,\n\t\t\t\tC8165ACB21891BBF00494BEF /* AtomicInt.swift in Sources */,\n\t\t\t\t786DED6E24F84623008C4FAC /* Infallible+Operators.swift in Sources */,\n\t\t\t\tC8550B4B1D95A41400A6FCFE /* Reactive.swift in Sources */,\n\t\t\t\tCB883B451BE256D4000AC2EE /* BooleanDisposable.swift in Sources */,\n\t\t\t\tC820A9241EB4DA5A00D431BC /* CombineLatest.swift in Sources */,\n\t\t\t\tC86781881DB814AD00B2029A /* Bag+Rx.swift in Sources */,\n\t\t\t\t1D858B6629E57EE900CD6814 /* Infallible+CombineLatest+Collection.swift in Sources */,\n\t\t\t\tC820A8881EB4DA5A00D431BC /* Materialize.swift in Sources */,\n\t\t\t\tC820A9201EB4DA5A00D431BC /* AddRef.swift in Sources */,\n\t\t\t\tC820A9081EB4DA5A00D431BC /* Multicast.swift in Sources */,\n\t\t\t\tC8093DA31B8A72BE0088E94D /* ReplaySubject.swift in Sources */,\n\t\t\t\tDB08833526FA9834005805BE /* Observable+Concurrency.swift in Sources */,\n\t\t\t\t786DED6924F8415B008C4FAC /* Infallible+Zip+arity.swift in Sources */,\n\t\t\t\tC8093CFB1B8A72BE0088E94D /* ObservableType+Extensions.swift in Sources */,\n\t\t\t\t4C5213AA225D41E60079FC77 /* CompactMap.swift in Sources */,\n\t\t\t\tC820A8781EB4DA5A00D431BC /* TakeLast.swift in Sources */,\n\t\t\t\tC83D73C01C1DBAEE003DC470 /* InvocableType.swift in Sources */,\n\t\t\t\tC8093D731B8A72BE0088E94D /* ObserverBase.swift in Sources */,\n\t\t\t\tC820A8EC1EB4DA5A00D431BC /* Never.swift in Sources */,\n\t\t\t\tC820A8981EB4DA5A00D431BC /* Catch.swift in Sources */,\n\t\t\t\tC820A9141EB4DA5A00D431BC /* ToArray.swift in Sources */,\n\t\t\t\tC820A8741EB4DA5A00D431BC /* SkipWhile.swift in Sources */,\n\t\t\t\t25F6ECBE1F48C373008552FA /* Completable.swift in Sources */,\n\t\t\t\tC820A91C1EB4DA5A00D431BC /* AsSingle.swift in Sources */,\n\t\t\t\tC8BF34CF1C2E426800416CAE /* Platform.Linux.swift in Sources */,\n\t\t\t\tC8093D791B8A72BE0088E94D /* TailRecursiveSink.swift in Sources */,\n\t\t\t\tC8093CC71B8A72BE0088E94D /* AsyncLock.swift in Sources */,\n\t\t\t\tDB0B922626FB31EF005CEED9 /* Infallible+Concurrency.swift in Sources */,\n\t\t\t\tC820A8501EB4DA5900D431BC /* Timer.swift in Sources */,\n\t\t\t\tC8A53AE01F09178700490535 /* Completable+AndThen.swift in Sources */,\n\t\t\t\tC8F03F4A1DBBAC0A00AECC4C /* DispatchQueue+Extensions.swift in Sources */,\n\t\t\t\tC820A8E41EB4DA5A00D431BC /* Error.swift in Sources */,\n\t\t\t\tC8093CD71B8A72BE0088E94D /* BinaryDisposable.swift in Sources */,\n\t\t\t\tC8FA89141C30405400CD3A17 /* VirtualTimeConverterType.swift in Sources */,\n\t\t\t\tC820A8B01EB4DA5A00D431BC /* SkipUntil.swift in Sources */,\n\t\t\t\tC820A8F41EB4DA5A00D431BC /* Create.swift in Sources */,\n\t\t\t\tC820A8901EB4DA5A00D431BC /* Scan.swift in Sources */,\n\t\t\t\tCB883B401BE24C15000AC2EE /* RefCountDisposable.swift in Sources */,\n\t\t\t\t7846F56624F83AF400A39919 /* Infallible.swift in Sources */,\n\t\t\t\tC84CC54E1BDCF48200E06A64 /* LockOwnerType.swift in Sources */,\n\t\t\t\tC8FA89151C30405400CD3A17 /* VirtualTimeScheduler.swift in Sources */,\n\t\t\t\tC84CC5531BDCF49300E06A64 /* SynchronizedOnType.swift in Sources */,\n\t\t\t\tC820A8601EB4DA5A00D431BC /* Generate.swift in Sources */,\n\t\t\t\t786DED7024F847BF008C4FAC /* Infallible+Create.swift in Sources */,\n\t\t\t\t78B6157523B69F49009C2AD9 /* Binder.swift in Sources */,\n\t\t\t\tC8C3DA0F1B939767004D233E /* CurrentThreadScheduler.swift in Sources */,\n\t\t\t\tC8093D851B8A72BE0088E94D /* Rx.swift in Sources */,\n\t\t\t\tC820A84C1EB4DA5900D431BC /* Take.swift in Sources */,\n\t\t\t\tC820A9381EB4DA5A00D431BC /* Zip.swift in Sources */,\n\t\t\t\tC8093DA51B8A72BE0088E94D /* SubjectType.swift in Sources */,\n\t\t\t\tC820A9341EB4DA5A00D431BC /* Sink.swift in Sources */,\n\t\t\t\tC8FA89171C30409900CD3A17 /* HistoricalScheduler.swift in Sources */,\n\t\t\t\tC8093D6B1B8A72BE0088E94D /* AnonymousObserver.swift in Sources */,\n\t\t\t\tC8093DA11B8A72BE0088E94D /* PublishSubject.swift in Sources */,\n\t\t\t\t1E3EDF65226356A000B631B9 /* Date+Dispatch.swift in Sources */,\n\t\t\t\tC83D73C81C1DBAEE003DC470 /* ScheduledItemType.swift in Sources */,\n\t\t\t\tC820A8C41EB4DA5A00D431BC /* CombineLatest+Collection.swift in Sources */,\n\t\t\t\tC820A9301EB4DA5A00D431BC /* Producer.swift in Sources */,\n\t\t\t\tC8093D8D1B8A72BE0088E94D /* SchedulerType.swift in Sources */,\n\t\t\t\tC820A8D41EB4DA5A00D431BC /* Range.swift in Sources */,\n\t\t\t\tC820A8C01EB4DA5A00D431BC /* Zip+Collection.swift in Sources */,\n\t\t\t\tC84CC5621BDD037900E06A64 /* SynchronizedDisposeType.swift in Sources */,\n\t\t\t\tC820A8381EB4DA5900D431BC /* Timeout.swift in Sources */,\n\t\t\t\tC820A8701EB4DA5A00D431BC /* Merge.swift in Sources */,\n\t\t\t\tC8093D951B8A72BE0088E94D /* OperationQueueScheduler.swift in Sources */,\n\t\t\t\tC8093CDD1B8A72BE0088E94D /* DisposeBag.swift in Sources */,\n\t\t\t\tC85217E91E3374970015DD38 /* GroupedObservable.swift in Sources */,\n\t\t\t\tC820A93C1EB4DA5A00D431BC /* Zip+arity.swift in Sources */,\n\t\t\t\tC8093D971B8A72BE0088E94D /* RecursiveScheduler.swift in Sources */,\n\t\t\t\tC8093CDF1B8A72BE0088E94D /* DisposeBase.swift in Sources */,\n\t\t\t\t786DED6C24F844BC008C4FAC /* Infallible+CombineLatest+arity.swift in Sources */,\n\t\t\t\tC820A8C81EB4DA5A00D431BC /* Debug.swift in Sources */,\n\t\t\t\tC820A8F81EB4DA5A00D431BC /* SubscribeOn.swift in Sources */,\n\t\t\t\tC8093CD51B8A72BE0088E94D /* AnonymousDisposable.swift in Sources */,\n\t\t\t\tC820A8DC1EB4DA5A00D431BC /* Repeat.swift in Sources */,\n\t\t\t\tC820A8681EB4DA5A00D431BC /* SingleAsync.swift in Sources */,\n\t\t\t\tC81A09871E6C702700900B3B /* PrimitiveSequence.swift in Sources */,\n\t\t\t\tC8093D8F1B8A72BE0088E94D /* ConcurrentDispatchQueueScheduler.swift in Sources */,\n\t\t\t\t25F6ECC01F48C37C008552FA /* Single.swift in Sources */,\n\t\t\t\tC820A8A01EB4DA5A00D431BC /* Do.swift in Sources */,\n\t\t\t\tC8093D9F1B8A72BE0088E94D /* BehaviorSubject.swift in Sources */,\n\t\t\t\tC820A83C1EB4DA5900D431BC /* Window.swift in Sources */,\n\t\t\t\tC8093D651B8A72BE0088E94D /* ObservableType.swift in Sources */,\n\t\t\t\tC820A9281EB4DA5A00D431BC /* CombineLatest+arity.swift in Sources */,\n\t\t\t\tC820A8581EB4DA5900D431BC /* Debounce.swift in Sources */,\n\t\t\t\tC8093D9D1B8A72BE0088E94D /* SerialDispatchQueueScheduler.swift in Sources */,\n\t\t\t\tCDDEF16A1D4FB40000CA8546 /* Disposables.swift in Sources */,\n\t\t\t\tC8093CC91B8A72BE0088E94D /* Lock.swift in Sources */,\n\t\t\t\tC85217F71E33FBBE0015DD38 /* RecursiveLock.swift in Sources */,\n\t\t\t\tC820A88C1EB4DA5A00D431BC /* DefaultIfEmpty.swift in Sources */,\n\t\t\t\tC820A8401EB4DA5900D431BC /* Buffer.swift in Sources */,\n\t\t\t\tC820A82C1EB4DA5900D431BC /* Map.swift in Sources */,\n\t\t\t\tC8093CF31B8A72BE0088E94D /* Errors.swift in Sources */,\n\t\t\t\tA20CC6C9259F3FE700370AE3 /* WithUnretained.swift in Sources */,\n\t\t\t\tC86781781DB8129E00B2029A /* PriorityQueue.swift in Sources */,\n\t\t\t\tC820A8D01EB4DA5A00D431BC /* Sequence.swift in Sources */,\n\t\t\t\tC820A8E01EB4DA5A00D431BC /* Deferred.swift in Sources */,\n\t\t\t\tC820A8AC1EB4DA5A00D431BC /* Amb.swift in Sources */,\n\t\t\t\tC820A8541EB4DA5900D431BC /* Sample.swift in Sources */,\n\t\t\t\tC8845AD41EDB4C9900B36836 /* ShareReplayScope.swift in Sources */,\n\t\t\t\t786DED6324F83DE5008C4FAC /* ObservableConvertibleType+Infallible.swift in Sources */,\n\t\t\t\tC86781701DB8129E00B2029A /* Bag.swift in Sources */,\n\t\t\t\tC8093CF71B8A72BE0088E94D /* ImmediateSchedulerType.swift in Sources */,\n\t\t\t\tC8BF34CB1C2E426800416CAE /* Platform.Darwin.swift in Sources */,\n\t\t\t\tC820A85C1EB4DA5A00D431BC /* Throttle.swift in Sources */,\n\t\t\t\tC8093CC51B8A72BE0088E94D /* Cancelable.swift in Sources */,\n\t\t\t\t788DCE5D24CB8249005B8F8C /* Decode.swift in Sources */,\n\t\t\t\tC8093CE71B8A72BE0088E94D /* ScheduledDisposable.swift in Sources */,\n\t\t\t\tC8FA891C1C30412A00CD3A17 /* HistoricalSchedulerTimeConverter.swift in Sources */,\n\t\t\t\tC8093CDB1B8A72BE0088E94D /* CompositeDisposable.swift in Sources */,\n\t\t\t\tC8093D7D1B8A72BE0088E94D /* ObserverType.swift in Sources */,\n\t\t\t\tC820A8F01EB4DA5A00D431BC /* Empty.swift in Sources */,\n\t\t\t\tC8093CFD1B8A72BE0088E94D /* Observable.swift in Sources */,\n\t\t\t\tC84CC55D1BDD010800E06A64 /* SynchronizedUnsubscribeType.swift in Sources */,\n\t\t\t\tC8093CEB1B8A72BE0088E94D /* SerialDisposable.swift in Sources */,\n\t\t\t\tC820A9101EB4DA5A00D431BC /* Reduce.swift in Sources */,\n\t\t\t\tC820A8641EB4DA5A00D431BC /* GroupBy.swift in Sources */,\n\t\t\t\tC84CC5671BDD08A500E06A64 /* SubscriptionDisposable.swift in Sources */,\n\t\t\t\tC820A89C1EB4DA5A00D431BC /* StartWith.swift in Sources */,\n\t\t\t\tC820A8FC1EB4DA5A00D431BC /* ObserveOn.swift in Sources */,\n\t\t\t\tC8093CF51B8A72BE0088E94D /* Event.swift in Sources */,\n\t\t\t\tC83D73C41C1DBAEE003DC470 /* ScheduledItem.swift in Sources */,\n\t\t\t\tC820A8A81EB4DA5A00D431BC /* WithLatestFrom.swift in Sources */,\n\t\t\t\tC867817C1DB8129E00B2029A /* Queue.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC8E8BA511E2C181A00A4AC2C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8E8BA641E2C186200A4AC2C /* Benchmarks.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tA2897D5A225CA28F004EA481 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = A2897D59225CA28F004EA481 /* PBXContainerItemProxy */;\n\t\t};\n\t\tA2897D64225CBD37004EA481 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = A2897CB3225CA1E7004EA481 /* RxRelay */;\n\t\t\ttargetProxy = A2897D63225CBD37004EA481 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83508CA1C386F6F0027C24C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C83508C91C386F6F0027C24C /* PBXContainerItemProxy */;\n\t\t};\n\t\tC835097B1C3871340027C24C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C88FA4FD1C25C44800CCFEA4 /* RxTest */;\n\t\t\ttargetProxy = C835097A1C3871340027C24C /* PBXContainerItemProxy */;\n\t\t};\n\t\tC835097D1C3871380027C24C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8093B4B1B8A71F00088E94D /* RxBlocking */;\n\t\t\ttargetProxy = C835097C1C3871380027C24C /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E398721890703001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C83E398621890703001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E398921890703001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C80938F51B8A71760088E94D /* RxCocoa */;\n\t\t\ttargetProxy = C83E398821890703001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E398B21890703001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8093B4B1B8A71F00088E94D /* RxBlocking */;\n\t\t\ttargetProxy = C83E398A21890703001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E398D21890703001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C88FA4FD1C25C44800CCFEA4 /* RxTest */;\n\t\t\ttargetProxy = C83E398C21890703001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E398F2189070A001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C83E398E2189070A001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E39912189070A001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C80938F51B8A71760088E94D /* RxCocoa */;\n\t\t\ttargetProxy = C83E39902189070A001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E39932189070A001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8093B4B1B8A71F00088E94D /* RxBlocking */;\n\t\t\ttargetProxy = C83E39922189070A001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC83E39952189070A001F4F0E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C88FA4FD1C25C44800CCFEA4 /* RxTest */;\n\t\t\ttargetProxy = C83E39942189070A001F4F0E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC872BD1C1BC0529600D7175E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C872BD1B1BC0529600D7175E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC872BD241BC052B800D7175E /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C872BD231BC052B800D7175E /* PBXContainerItemProxy */;\n\t\t};\n\t\tC88FA4FE1C25C44800CCFEA4 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tplatformFilters = (\n\t\t\t\tios,\n\t\t\t\tmaccatalyst,\n\t\t\t\tmacos,\n\t\t\t\ttvos,\n\t\t\t\txros,\n\t\t\t);\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C88FA4FF1C25C44800CCFEA4 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8B52BC6215434D600EAA87C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C80938F51B8A71760088E94D /* RxCocoa */;\n\t\t\ttargetProxy = C8B52BC5215434D600EAA87C /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E8BA5C1E2C181A00A4AC2C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C8A56AD61AD7424700B4673B /* RxSwift */;\n\t\t\ttargetProxy = C8E8BA5B1E2C181A00A4AC2C /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E8BA761E2C1BB200A4AC2C /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C80938F51B8A71760088E94D /* RxCocoa */;\n\t\t\ttargetProxy = C8E8BA751E2C1BB200A4AC2C /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\tA2897D50225CA1E7004EA481 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxRelay/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tA2897D51225CA1E7004EA481 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxRelay/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tA2897D52225CA1E7004EA481 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxRelay/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC809396A1B8A71760088E94D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxCocoa/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxCocoa;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC809396B1B8A71760088E94D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxCocoa/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxCocoa;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC809396C1B8A71760088E94D /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxCocoa/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxCocoa;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8093BC41B8A71F00088E94D /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxBlocking/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxBlocking;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC8093BC51B8A71F00088E94D /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxBlocking/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxBlocking;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC8093BC61B8A71F00088E94D /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxBlocking/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxBlocking;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC83508CB1C386F6F0027C24C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-iOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-iOS-Bridging-Header.h\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC83508CC1C386F6F0027C24C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-iOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-iOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC83508CD1C386F6F0027C24C /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-iOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-iOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC835098D1C38740E0027C24C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvsimulator appletvos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-tvOS-Bridging-Header.h\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC835098E1C38740E0027C24C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = NO;\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvsimulator appletvos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-tvOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC835098F1C38740E0027C24C /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-tvOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = appletvos;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvsimulator appletvos\";\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-tvOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC835099D1C38742C0027C24C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-macOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSUPPORTED_PLATFORMS = macosx;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-macOS-Bridging-Header.h\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC835099E1C38742C0027C24C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = NO;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-macOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSUPPORTED_PLATFORMS = macosx;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-macOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC835099F1C38742C0027C24C /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t\t\"@loader_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"-all_load\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.AllTests-macOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSUPPORTED_PLATFORMS = macosx;\n\t\t\t\tSWIFT_OBJC_BRIDGING_HEADER = \"Tests/RxCocoaTests/RxTest-macOS-Bridging-Header.h\";\n\t\t\t\tSWIFT_REFLECTION_METADATA_LEVEL = none;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC85BA0551C3878750075D68E /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Tests/Microoptimizations/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC85BA0561C3878750075D68E /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Microoptimizations/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC85BA0571C3878750075D68E /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tINFOPLIST_FILE = Tests/Microoptimizations/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/../Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.PerformanceTests;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8633A941B08FA5500375D60 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_CODE_COVERAGE = NO;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = \"TRACE_RESOURCES=1\";\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACH_O_TYPE = mh_dylib;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tONLY_ACTIVE_ARCH = NO;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D TRACE_RESOURCES -Xfrontend -debug-time-function-bodies -Xfrontend -warn-long-expression-type-checking=100 -Xfrontend -warn-long-function-bodies=100\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos macosx appletvos appletvsimulator watchos watchsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 3.0;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8633A951B08FA5500375D60 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxSwift/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxSwift;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC88FA5091C25C44800CCFEA4 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tENABLE_TESTING_SEARCH_PATHS = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(PLATFORM_DIR)/Developer/Library/Frameworks\";\n\t\t\t\tINFOPLIST_FILE = RxTest/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest;\n\t\t\t\tPRODUCT_NAME = RxTest;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC88FA50A1C25C44800CCFEA4 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tENABLE_TESTING_SEARCH_PATHS = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(PLATFORM_DIR)/Developer/Library/Frameworks\";\n\t\t\t\tINFOPLIST_FILE = RxTest/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest;\n\t\t\t\tPRODUCT_NAME = RxTest;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC88FA50B1C25C44800CCFEA4 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = NO;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_BITCODE = NO;\n\t\t\t\tENABLE_TESTING_SEARCH_PATHS = YES;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = \"$(PLATFORM_DIR)/Developer/Library/Frameworks\";\n\t\t\t\tINFOPLIST_FILE = RxTest/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.RxTest;\n\t\t\t\tPRODUCT_NAME = RxTest;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,7\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8A56AEB1AD7424700B4673B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"TRACE_RESOURCES=1\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACH_O_TYPE = mh_dylib;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D TRACE_RESOURCES -D DEBUG\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos macosx appletvos appletvsimulator watchos watchsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 3.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC8A56AEC1AD7424700B4673B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tAPPLICATION_EXTENSION_API_ONLY = YES;\n\t\t\t\tBUILD_LIBRARY_FOR_DISTRIBUTION = YES;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_CODE_COVERAGE = NO;\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = NO;\n\t\t\t\tENABLE_USER_SCRIPT_SANDBOXING = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_TREAT_WARNINGS_AS_ERRORS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACH_O_TYPE = mh_dylib;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tONLY_ACTIVE_ARCH = NO;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D RELEASE\";\n\t\t\t\tSUPPORTED_PLATFORMS = \"iphonesimulator iphoneos macosx appletvos appletvsimulator watchos watchsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t\tTVOS_DEPLOYMENT_TARGET = 11.0;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t\tWATCHOS_DEPLOYMENT_TARGET = 3.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC8A56AEE1AD7424700B4673B /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxSwift/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxSwift;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC8A56AEF1AD7424700B4673B /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = \"$(SRCROOT)/RxSwift/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.$(PRODUCT_NAME:rfc1034identifier)\";\n\t\t\t\tPRODUCT_NAME = RxSwift;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTED_PLATFORMS = \"appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator\";\n\t\t\t\tSUPPORTS_MACCATALYST = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4,7\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC8E8BA5E1E2C181A00A4AC2C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tINFOPLIST_FILE = Tests/Benchmarks/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC8E8BA5F1E2C181A00A4AC2C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Tests/Benchmarks/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC8E8BA601E2C181A00A4AC2C /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = Tests/Benchmarks/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.Benchmarks;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tA2897D4F225CA1E7004EA481 /* Build configuration list for PBXNativeTarget \"RxRelay\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tA2897D50225CA1E7004EA481 /* Debug */,\n\t\t\t\tA2897D51225CA1E7004EA481 /* Release */,\n\t\t\t\tA2897D52225CA1E7004EA481 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC80939691B8A71760088E94D /* Build configuration list for PBXNativeTarget \"RxCocoa\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC809396A1B8A71760088E94D /* Debug */,\n\t\t\t\tC809396B1B8A71760088E94D /* Release */,\n\t\t\t\tC809396C1B8A71760088E94D /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC8093BC31B8A71F00088E94D /* Build configuration list for PBXNativeTarget \"RxBlocking\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC8093BC41B8A71F00088E94D /* Debug */,\n\t\t\t\tC8093BC51B8A71F00088E94D /* Release */,\n\t\t\t\tC8093BC61B8A71F00088E94D /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC83508CE1C386F6F0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC83508CB1C386F6F0027C24C /* Debug */,\n\t\t\t\tC83508CC1C386F6F0027C24C /* Release */,\n\t\t\t\tC83508CD1C386F6F0027C24C /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC835098C1C38740E0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-tvOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC835098D1C38740E0027C24C /* Debug */,\n\t\t\t\tC835098E1C38740E0027C24C /* Release */,\n\t\t\t\tC835098F1C38740E0027C24C /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC835099C1C38742C0027C24C /* Build configuration list for PBXNativeTarget \"AllTests-macOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC835099D1C38742C0027C24C /* Debug */,\n\t\t\t\tC835099E1C38742C0027C24C /* Release */,\n\t\t\t\tC835099F1C38742C0027C24C /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC85BA0581C3878750075D68E /* Build configuration list for PBXNativeTarget \"Microoptimizations\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC85BA0551C3878750075D68E /* Debug */,\n\t\t\t\tC85BA0561C3878750075D68E /* Release */,\n\t\t\t\tC85BA0571C3878750075D68E /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC88FA5081C25C44800CCFEA4 /* Build configuration list for PBXNativeTarget \"RxTest\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC88FA5091C25C44800CCFEA4 /* Debug */,\n\t\t\t\tC88FA50A1C25C44800CCFEA4 /* Release */,\n\t\t\t\tC88FA50B1C25C44800CCFEA4 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC8A56AD11AD7424700B4673B /* Build configuration list for PBXProject \"Rx\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC8A56AEB1AD7424700B4673B /* Debug */,\n\t\t\t\tC8A56AEC1AD7424700B4673B /* Release */,\n\t\t\t\tC8633A941B08FA5500375D60 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC8A56AED1AD7424700B4673B /* Build configuration list for PBXNativeTarget \"RxSwift\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC8A56AEE1AD7424700B4673B /* Debug */,\n\t\t\t\tC8A56AEF1AD7424700B4673B /* Release */,\n\t\t\t\tC8633A951B08FA5500375D60 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC8E8BA5D1E2C181A00A4AC2C /* Build configuration list for PBXNativeTarget \"Benchmarks\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC8E8BA5E1E2C181A00A4AC2C /* Debug */,\n\t\t\t\tC8E8BA5F1E2C181A00A4AC2C /* Release */,\n\t\t\t\tC8E8BA601E2C181A00A4AC2C /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = C8A56ACE1AD7424700B4673B /* Project object */;\n}\n"
  },
  {
    "path": "Rx.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:Rx.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Rx.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcbaselines/C8E8BA541E2C181A00A4AC2C.xcbaseline/91761072-433E-43DC-A058-545FB88C59EC.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>classNames</key>\n\t<dict>\n\t\t<key>Benchmarks</key>\n\t\t<dict>\n\t\t\t<key>testCombineLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.78754</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testCombineLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.40023</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.31364</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.0434</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.28765</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.73057</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.21918</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.6856</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.57503</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.18783</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.34253</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.36147</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Jan 21, 2017, 22:52:02</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcbaselines/C8E8BA541E2C181A00A4AC2C.xcbaseline/996C445D-86F0-429E-92A9-44EBD3769290.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>classNames</key>\n\t<dict>\n\t\t<key>Benchmarks</key>\n\t\t<dict>\n\t\t\t<key>testCombineLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.0266</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testCombineLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.57447</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.37629</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.451</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.33589</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.93107</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.25352</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.0115</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.78744</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.24782</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.49188</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.50931</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:45:48</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcbaselines/C8E8BA541E2C181A00A4AC2C.xcbaseline/B553A9F9-C6F1-4009-9BDC-AC42F9D31E38.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>classNames</key>\n\t<dict>\n\t\t<key>Benchmarks</key>\n\t\t<dict>\n\t\t\t<key>testCombineLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.0261</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testCombineLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.58378</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.38735</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapLatestPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>1.4896</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.33991</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testFlatMapsPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.9919</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.25215</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.9969</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterDriverPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.78215</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testMapFilterPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.24464</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectCreating()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.49331</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t\t<key>testPublishSubjectPumping()</key>\n\t\t\t<dict>\n\t\t\t\t<key>com.apple.XCTPerformanceMetric_WallClockTime</key>\n\t\t\t\t<dict>\n\t\t\t\t\t<key>baselineAverage</key>\n\t\t\t\t\t<real>0.49641</real>\n\t\t\t\t\t<key>baselineIntegrationDisplayName</key>\n\t\t\t\t\t<string>Mar 4, 2017, 21:38:44</string>\n\t\t\t\t</dict>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcbaselines/C8E8BA541E2C181A00A4AC2C.xcbaseline/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>runDestinationsByUUID</key>\n\t<dict>\n\t\t<key>91761072-433E-43DC-A058-545FB88C59EC</key>\n\t\t<dict>\n\t\t\t<key>localComputer</key>\n\t\t\t<dict>\n\t\t\t\t<key>busSpeedInMHz</key>\n\t\t\t\t<integer>100</integer>\n\t\t\t\t<key>cpuCount</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>cpuKind</key>\n\t\t\t\t<string>Intel Core i7</string>\n\t\t\t\t<key>cpuSpeedInMHz</key>\n\t\t\t\t<integer>2500</integer>\n\t\t\t\t<key>logicalCPUCoresPerPackage</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t\t<key>modelCode</key>\n\t\t\t\t<string>MacBookPro11,3</string>\n\t\t\t\t<key>physicalCPUCoresPerPackage</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t\t<key>platformIdentifier</key>\n\t\t\t\t<string>com.apple.platform.macosx</string>\n\t\t\t</dict>\n\t\t\t<key>targetArchitecture</key>\n\t\t\t<string>x86_64</string>\n\t\t\t<key>targetDevice</key>\n\t\t\t<dict>\n\t\t\t\t<key>modelCode</key>\n\t\t\t\t<string>iPhone9,2</string>\n\t\t\t\t<key>platformIdentifier</key>\n\t\t\t\t<string>com.apple.platform.iphonesimulator</string>\n\t\t\t</dict>\n\t\t</dict>\n\t\t<key>996C445D-86F0-429E-92A9-44EBD3769290</key>\n\t\t<dict>\n\t\t\t<key>localComputer</key>\n\t\t\t<dict>\n\t\t\t\t<key>busSpeedInMHz</key>\n\t\t\t\t<integer>100</integer>\n\t\t\t\t<key>cpuCount</key>\n\t\t\t\t<integer>1</integer>\n\t\t\t\t<key>cpuKind</key>\n\t\t\t\t<string>Intel Core i7</string>\n\t\t\t\t<key>cpuSpeedInMHz</key>\n\t\t\t\t<integer>2500</integer>\n\t\t\t\t<key>logicalCPUCoresPerPackage</key>\n\t\t\t\t<integer>8</integer>\n\t\t\t\t<key>modelCode</key>\n\t\t\t\t<string>MacBookPro11,3</string>\n\t\t\t\t<key>physicalCPUCoresPerPackage</key>\n\t\t\t\t<integer>4</integer>\n\t\t\t\t<key>platformIdentifier</key>\n\t\t\t\t<string>com.apple.platform.macosx</string>\n\t\t\t</dict>\n\t\t\t<key>targetArchitecture</key>\n\t\t\t<string>i386</string>\n\t\t\t<key>targetDevice</key>\n\t\t\t<dict>\n\t\t\t\t<key>modelCode</key>\n\t\t\t\t<string>iPad3,1</string>\n\t\t\t\t<key>platformIdentifier</key>\n\t\t\t\t<string>com.apple.platform.iphonesimulator</string>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/AllTests-iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      enableThreadSanitizer = \"YES\"\n      enableUBSanitizer = \"YES\"\n      codeCoverageEnabled = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C83508C21C386F6F0027C24C\"\n               BuildableName = \"AllTests-iOS.xctest\"\n               BlueprintName = \"AllTests-iOS\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Release\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/AllTests-macOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      enableThreadSanitizer = \"YES\"\n      enableUBSanitizer = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\"\n            parallelizable = \"YES\"\n            testExecutionOrdering = \"random\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C83509931C38742C0027C24C\"\n               BuildableName = \"AllTests-macOS.xctest\"\n               BlueprintName = \"AllTests-macOS\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      enableThreadSanitizer = \"YES\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/AllTests-tvOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      enableThreadSanitizer = \"YES\"\n      enableUBSanitizer = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\"\n            parallelizable = \"YES\"\n            testExecutionOrdering = \"random\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C83509831C38740E0027C24C\"\n               BuildableName = \"AllTests-tvOS.xctest\"\n               BlueprintName = \"AllTests-tvOS\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/RxBlocking.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C8093B4B1B8A71F00088E94D\"\n               BuildableName = \"RxBlocking.framework\"\n               BlueprintName = \"RxBlocking\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C8093B4B1B8A71F00088E94D\"\n            BuildableName = \"RxBlocking.framework\"\n            BlueprintName = \"RxBlocking\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C8093B4B1B8A71F00088E94D\"\n            BuildableName = \"RxBlocking.framework\"\n            BlueprintName = \"RxBlocking\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/RxCocoa.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C80938F51B8A71760088E94D\"\n               BuildableName = \"RxCocoa.framework\"\n               BlueprintName = \"RxCocoa\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C80938F51B8A71760088E94D\"\n            BuildableName = \"RxCocoa.framework\"\n            BlueprintName = \"RxCocoa\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C80938F51B8A71760088E94D\"\n            BuildableName = \"RxCocoa.framework\"\n            BlueprintName = \"RxCocoa\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/RxRelay.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"A2897CB3225CA1E7004EA481\"\n               BuildableName = \"RxRelay.framework\"\n               BlueprintName = \"RxRelay\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A2897CB3225CA1E7004EA481\"\n            BuildableName = \"RxRelay.framework\"\n            BlueprintName = \"RxRelay\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"A2897CB3225CA1E7004EA481\"\n            BuildableName = \"RxRelay.framework\"\n            BlueprintName = \"RxRelay\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/RxSwift.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C8A56AD61AD7424700B4673B\"\n               BuildableName = \"RxSwift.framework\"\n               BlueprintName = \"RxSwift\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C8A56AD61AD7424700B4673B\"\n            BuildableName = \"RxSwift.framework\"\n            BlueprintName = \"RxSwift\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C8A56AD61AD7424700B4673B\"\n            BuildableName = \"RxSwift.framework\"\n            BlueprintName = \"RxSwift\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcodeproj/xcshareddata/xcschemes/RxTest.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C88FA4FD1C25C44800CCFEA4\"\n               BuildableName = \"RxTest.framework\"\n               BlueprintName = \"RxTest\"\n               ReferencedContainer = \"container:Rx.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C88FA4FD1C25C44800CCFEA4\"\n            BuildableName = \"RxTest.framework\"\n            BlueprintName = \"RxTest\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C88FA4FD1C25C44800CCFEA4\"\n            BuildableName = \"RxTest.framework\"\n            BlueprintName = \"RxTest\"\n            ReferencedContainer = \"container:Rx.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "Rx.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"group:Package.swift\">\n   </FileRef>\n   <FileRef\n      location = \"group:LICENSE.md\">\n   </FileRef>\n   <FileRef\n      location = \"group:README.md\">\n   </FileRef>\n   <FileRef\n      location = \"group:CHANGELOG.md\">\n   </FileRef>\n   <FileRef\n      location = \"group:Version.xcconfig\">\n   </FileRef>\n   <Group\n      location = \"group:scripts\"\n      name = \"scripts\">\n      <FileRef\n         location = \"group:package-spm.swift\">\n      </FileRef>\n      <FileRef\n         location = \"group:all-tests.sh\">\n      </FileRef>\n      <FileRef\n         location = \"group:common.sh\">\n      </FileRef>\n      <FileRef\n         location = \"group:test-linux.sh\">\n      </FileRef>\n      <FileRef\n         location = \"group:validate-headers.swift\">\n      </FileRef>\n      <FileRef\n         location = \"group:validate-playgrounds.sh\">\n      </FileRef>\n      <FileRef\n         location = \"group:validate-markdown.sh\">\n      </FileRef>\n   </Group>\n   <Group\n      location = \"group:Documentation\"\n      name = \"Documentation\">\n      <FileRef\n         location = \"group:ComparisonWithOtherLibraries.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:DesignRationale.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:ExampleApp.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Examples.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:GettingStarted.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:HotAndColdObservables.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:MathBehindRx.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:NewFeatureRequestTemplate.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Playgrounds.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Schedulers.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Subjects.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Tips.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Traits.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:UnitTests.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Warnings.md\">\n      </FileRef>\n      <FileRef\n         location = \"group:Why.md\">\n      </FileRef>\n   </Group>\n   <FileRef\n      location = \"group:Rx.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:Preprocessor/Preprocessor.xcodeproj\">\n   </FileRef>\n   <FileRef\n      location = \"group:RxExample/RxExample.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "Rx.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxBlocking/BlockingObservable+Operators.swift",
    "content": "//\n//  BlockingObservable+Operators.swift\n//  RxBlocking\n//\n//  Created by Krunoslav Zaher on 10/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// The `MaterializedSequenceResult` enum represents the materialized\n/// output of a BlockingObservable.\n///\n/// If the sequence terminates successfully, the result is represented\n/// by `.completed` with the array of elements.\n///\n/// If the sequence terminates with error, the result is represented\n/// by `.failed` with both the array of elements and the terminating error.\n@frozen public enum MaterializedSequenceResult<T> {\n    case completed(elements: [T])\n    case failed(elements: [T], error: Error)\n}\n\npublic extension BlockingObservable {\n    /// Blocks current thread until sequence terminates.\n    ///\n    /// If sequence terminates with error, terminating error will be thrown.\n    ///\n    /// - returns: All elements of sequence.\n    func toArray() throws -> [Element] {\n        let results = materializeResult()\n        return try elementsOrThrow(results)\n    }\n}\n\npublic extension BlockingObservable {\n    /// Blocks current thread until sequence produces first element.\n    ///\n    /// If sequence terminates with error before producing first element, terminating error will be thrown.\n    ///\n    /// - returns: First element of sequence. If sequence is empty `nil` is returned.\n    func first() throws -> Element? {\n        let results = materializeResult(max: 1)\n        return try elementsOrThrow(results).first\n    }\n}\n\npublic extension BlockingObservable {\n    /// Blocks current thread until sequence terminates.\n    ///\n    /// If sequence terminates with error, terminating error will be thrown.\n    ///\n    /// - returns: Last element in the sequence. If sequence is empty `nil` is returned.\n    func last() throws -> Element? {\n        let results = materializeResult()\n        return try elementsOrThrow(results).last\n    }\n}\n\npublic extension BlockingObservable {\n    /// Blocks current thread until sequence terminates.\n    ///\n    /// If sequence terminates with error before producing first element, terminating error will be thrown.\n    ///\n    /// - returns: Returns the only element of an sequence, and reports an error if there is not exactly one element in the observable sequence.\n    func single() throws -> Element {\n        try single { _ in true }\n    }\n\n    /// Blocks current thread until sequence terminates.\n    ///\n    /// If sequence terminates with error before producing first element, terminating error will be thrown.\n    ///\n    /// - parameter predicate: A function to test each source element for a condition.\n    /// - returns: Returns the only element of an sequence that satisfies the condition in the predicate, and reports an error if there is not exactly one element in the sequence.\n    func single(_ predicate: @escaping (Element) throws -> Bool) throws -> Element {\n        let results = materializeResult(max: 2, predicate: predicate)\n        let elements = try elementsOrThrow(results)\n\n        if elements.count > 1 {\n            throw RxError.moreThanOneElement\n        }\n\n        guard let first = elements.first else {\n            throw RxError.noElements\n        }\n\n        return first\n    }\n}\n\npublic extension BlockingObservable {\n    /// Blocks current thread until sequence terminates.\n    ///\n    /// The sequence is materialized as a result type capturing how the sequence terminated (completed or error), along with any elements up to that point.\n    ///\n    /// - returns: On completion, returns the list of elements in the sequence. On error, returns the list of elements up to that point, along with the error itself.\n    func materialize() -> MaterializedSequenceResult<Element> {\n        materializeResult()\n    }\n}\n\nextension BlockingObservable {\n    private func materializeResult(max: Int? = nil, predicate: @escaping (Element) throws -> Bool = { _ in true }) -> MaterializedSequenceResult<Element> {\n        var elements = [Element]()\n        var error: Swift.Error?\n\n        let lock = RunLoopLock(timeout: timeout)\n\n        let d = SingleAssignmentDisposable()\n\n        defer {\n            d.dispose()\n        }\n\n        lock.dispatch {\n            let subscription = self.source.subscribe { event in\n                if d.isDisposed {\n                    return\n                }\n                switch event {\n                case let .next(element):\n                    do {\n                        if try predicate(element) {\n                            elements.append(element)\n                        }\n                        if let max, elements.count >= max {\n                            d.dispose()\n                            lock.stop()\n                        }\n                    } catch let err {\n                        error = err\n                        d.dispose()\n                        lock.stop()\n                    }\n                case let .error(err):\n                    error = err\n                    d.dispose()\n                    lock.stop()\n                case .completed:\n                    d.dispose()\n                    lock.stop()\n                }\n            }\n\n            d.setDisposable(subscription)\n        }\n\n        do {\n            try lock.run()\n        } catch let err {\n            error = err\n        }\n\n        if let error {\n            return MaterializedSequenceResult.failed(elements: elements, error: error)\n        }\n\n        return MaterializedSequenceResult.completed(elements: elements)\n    }\n\n    private func elementsOrThrow(_ results: MaterializedSequenceResult<Element>) throws -> [Element] {\n        switch results {\n        case let .failed(_, error):\n            throw error\n        case let .completed(elements):\n            return elements\n        }\n    }\n}\n"
  },
  {
    "path": "RxBlocking/BlockingObservable.swift",
    "content": "//\n//  BlockingObservable.swift\n//  RxBlocking\n//\n//  Created by Krunoslav Zaher on 10/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\n/**\n `BlockingObservable` is a variety of `Observable` that provides blocking operators.\n\n It can be useful for testing and demo purposes, but is generally inappropriate for production applications.\n\n If you think you need to use a `BlockingObservable` this is usually a sign that you should rethink your\n design.\n */\npublic struct BlockingObservable<Element> {\n    let timeout: TimeInterval?\n    let source: Observable<Element>\n}\n"
  },
  {
    "path": "RxBlocking/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(RX_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxBlocking/ObservableConvertibleType+Blocking.swift",
    "content": "//\n//  ObservableConvertibleType+Blocking.swift\n//  RxBlocking\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\npublic extension ObservableConvertibleType {\n    /// Converts an Observable into a `BlockingObservable` (an Observable with blocking operators).\n    ///\n    /// - parameter timeout: Maximal time interval BlockingObservable can block without throwing `RxError.timeout`.\n    /// - returns: `BlockingObservable` version of `self`\n    func toBlocking(timeout: TimeInterval? = nil) -> BlockingObservable<Element> {\n        BlockingObservable(timeout: timeout, source: asObservable())\n    }\n}\n"
  },
  {
    "path": "RxBlocking/README.md",
    "content": "RxBlocking \n============================================================\n\nSet of blocking operators for easy unit testing.\n\n***Don't use these operators in production apps. These operators are only meant for testing purposes.***\n\n\n```swift\nextension BlockingObservable {\n    public func toArray() throws -> [E] {}\n}\n\nextension BlockingObservable {\n    public func first() throws -> Element? {}\n}\n\nextension BlockingObservable {\n    public func last() throws -> Element? {}\n}\n\nextension BlockingObservable {\n    public func single() throws -> Element? {}\n    public func single(_ predicate: @escaping (E) throws -> Bool) throws -> Element? {}\n}\n\nextension BlockingObservable {\n    public func materialize() -> MaterializedSequenceResult<Element>\n}\n```\n\n\n"
  },
  {
    "path": "RxBlocking/Resources.swift",
    "content": "//\n//  Resources.swift\n//  RxBlocking\n//\n//  Created by Krunoslav Zaher on 1/21/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n#if TRACE_RESOURCES\nenum Resources {\n    static func incrementTotal() -> Int32 {\n        RxSwift.Resources.incrementTotal()\n    }\n\n    static func decrementTotal() -> Int32 {\n        RxSwift.Resources.decrementTotal()\n    }\n\n    static var numberOfSerialDispatchQueueObservables: Int32 {\n        RxSwift.Resources.numberOfSerialDispatchQueueObservables\n    }\n\n    static var total: Int32 {\n        RxSwift.Resources.total\n    }\n}\n#endif\n"
  },
  {
    "path": "RxBlocking/RunLoopLock.swift",
    "content": "//\n//  RunLoopLock.swift\n//  RxBlocking\n//\n//  Created by Krunoslav Zaher on 11/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreFoundation\nimport Foundation\nimport RxSwift\n\n#if !canImport(Darwin)\nimport Foundation\n\nlet runLoopMode: RunLoop.Mode = .default\nlet runLoopModeRaw: CFString = unsafeBitCast(runLoopMode.rawValue._bridgeToObjectiveC(), to: CFString.self)\n#else\nlet runLoopMode: CFRunLoopMode = .defaultMode\nlet runLoopModeRaw = runLoopMode.rawValue\n#endif\n\nfinal class RunLoopLock {\n    let currentRunLoop: CFRunLoop\n\n    let calledRun = AtomicInt(0)\n    let calledStop = AtomicInt(0)\n    var timeout: TimeInterval?\n\n    init(timeout: TimeInterval?) {\n        self.timeout = timeout\n        currentRunLoop = CFRunLoopGetCurrent()\n    }\n\n    func dispatch(_ action: @escaping () -> Void) {\n        CFRunLoopPerformBlock(currentRunLoop, runLoopModeRaw) {\n            if CurrentThreadScheduler.isScheduleRequired {\n                _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n                    action()\n                    return Disposables.create()\n                }\n            } else {\n                action()\n            }\n        }\n        CFRunLoopWakeUp(currentRunLoop)\n    }\n\n    func stop() {\n        if decrement(calledStop) > 1 {\n            return\n        }\n        CFRunLoopPerformBlock(currentRunLoop, runLoopModeRaw) {\n            CFRunLoopStop(self.currentRunLoop)\n        }\n        CFRunLoopWakeUp(currentRunLoop)\n    }\n\n    func run() throws {\n        if increment(calledRun) != 0 {\n            fatalError(\"Run can be only called once\")\n        }\n        if let timeout {\n            #if !canImport(Darwin)\n            let runLoopResult = CFRunLoopRunInMode(runLoopModeRaw, timeout, false)\n            #else\n            let runLoopResult = CFRunLoopRunInMode(runLoopMode, timeout, false)\n            #endif\n\n            switch runLoopResult {\n            case .finished:\n                return\n            case .handledSource:\n                return\n            case .stopped:\n                return\n            case .timedOut:\n                throw RxError.timeout\n            default:\n                return\n            }\n        } else {\n            CFRunLoopRun()\n        }\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Common/ControlTarget.swift",
    "content": "//\n//  ControlTarget.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS) || os(macOS)\n\nimport RxSwift\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport UIKit\n\ntypealias Control = UIKit.UIControl\n#elseif os(macOS)\nimport Cocoa\n\ntypealias Control = Cocoa.NSControl\n#endif\n\n// This should be only used from `MainScheduler`\nfinal class ControlTarget: RxTarget {\n    typealias Callback = (Control) -> Void\n\n    let selector: Selector = #selector(ControlTarget.eventHandler(_:))\n\n    weak var control: Control?\n    #if os(iOS) || os(tvOS) || os(visionOS)\n    let controlEvents: UIControl.Event\n    #endif\n    var callback: Callback?\n    #if os(iOS) || os(tvOS) || os(visionOS)\n    init(control: Control, controlEvents: UIControl.Event, callback: @escaping Callback) {\n        MainScheduler.ensureRunningOnMainThread()\n\n        self.control = control\n        self.controlEvents = controlEvents\n        self.callback = callback\n\n        super.init()\n\n        control.addTarget(self, action: selector, for: controlEvents)\n\n        let method = method(for: selector)\n        if method == nil {\n            rxFatalError(\"Can't find method\")\n        }\n    }\n\n    #elseif os(macOS)\n    init(control: Control, callback: @escaping Callback) {\n        MainScheduler.ensureRunningOnMainThread()\n\n        self.control = control\n        self.callback = callback\n\n        super.init()\n\n        control.target = self\n        control.action = selector\n\n        let method = method(for: selector)\n        if method == nil {\n            rxFatalError(\"Can't find method\")\n        }\n    }\n    #endif\n\n    @objc func eventHandler(_: Control!) {\n        if let callback, let control {\n            callback(control)\n        }\n    }\n\n    override func dispose() {\n        super.dispose()\n        #if os(iOS) || os(tvOS) || os(visionOS)\n        control?.removeTarget(self, action: selector, for: controlEvents)\n        #elseif os(macOS)\n        control?.target = nil\n        control?.action = nil\n        #endif\n        callback = nil\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Common/DelegateProxy.swift",
    "content": "//\n//  DelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport RxSwift\n#if SWIFT_PACKAGE && !os(Linux)\nimport RxCocoaRuntime\n#endif\n\n/// Base class for `DelegateProxyType` protocol.\n///\n/// This implementation is not thread safe and can be used only from one thread (Main thread).\nopen class DelegateProxy<P: AnyObject, D>: _RXDelegateProxy {\n    public typealias ParentObject = P\n    public typealias Delegate = D\n\n    private var _sentMessageForSelector = [Selector: MessageDispatcher]()\n    private var _methodInvokedForSelector = [Selector: MessageDispatcher]()\n\n    /// Parent object associated with delegate proxy.\n    private weak var _parentObject: ParentObject?\n\n    private let _currentDelegateFor: (ParentObject) -> AnyObject?\n    private let _setCurrentDelegateTo: (AnyObject?, ParentObject) -> Void\n\n    /// Initializes new instance.\n    ///\n    /// - parameter parentObject: Optional parent object that owns `DelegateProxy` as associated object.\n    public init<Proxy: DelegateProxyType>(parentObject: ParentObject, delegateProxy: Proxy.Type)\n        where Proxy: DelegateProxy<ParentObject, Delegate>, Proxy.ParentObject == ParentObject, Proxy.Delegate == Delegate\n    {\n        _parentObject = parentObject\n        _currentDelegateFor = delegateProxy._currentDelegate\n        _setCurrentDelegateTo = delegateProxy._setCurrentDelegate\n\n        MainScheduler.ensureRunningOnMainThread()\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n        super.init()\n    }\n\n    /**\n     Returns observable sequence of invocations of delegate methods. Elements are sent *before method is invoked*.\n\n     Only methods that have `void` return value can be observed using this method because\n     those methods are used as a notification mechanism. It doesn't matter if they are optional\n     or not. Observing is performed by installing a hidden associated `PublishSubject` that is\n     used to dispatch messages to observers.\n\n     Delegate methods that have non `void` return value can't be observed directly using this method\n     because:\n     * those methods are not intended to be used as a notification mechanism, but as a behavior customization mechanism\n     * there is no sensible automatic way to determine a default return value\n\n     In case observing of delegate methods that have return type is required, it can be done by\n     manually installing a `PublishSubject` or `BehaviorSubject` and implementing delegate method.\n\n     e.g.\n\n         // delegate proxy part (RxScrollViewDelegateProxy)\n\n         let internalSubject = PublishSubject<CGPoint>\n\n         public func requiredDelegateMethod(scrollView: UIScrollView, arg1: CGPoint) -> Bool {\n             internalSubject.on(.next(arg1))\n             return self._forwardToDelegate?.requiredDelegateMethod?(scrollView, arg1: arg1) ?? defaultReturnValue\n         }\n\n     ....\n\n         // reactive property implementation in a real class (`UIScrollView`)\n         public var property: Observable<CGPoint> {\n             let proxy = RxScrollViewDelegateProxy.proxy(for: base)\n             return proxy.internalSubject.asObservable()\n         }\n\n     **In case calling this method prints \"Delegate proxy is already implementing `\\(selector)`,\n     a more performant way of registering might exist.\", that means that manual observing method\n     is required analog to the example above because delegate method has already been implemented.**\n\n     - parameter selector: Selector used to filter observed invocations of delegate methods.\n     - returns: Observable sequence of arguments passed to `selector` method.\n     */\n    open func sentMessage(_ selector: Selector) -> Observable<[Any]> {\n        MainScheduler.ensureRunningOnMainThread()\n\n        let subject = _sentMessageForSelector[selector]\n\n        if let subject {\n            return subject.asObservable()\n        } else {\n            let subject = MessageDispatcher(selector: selector, delegateProxy: self)\n            _sentMessageForSelector[selector] = subject\n            return subject.asObservable()\n        }\n    }\n\n    /**\n     Returns observable sequence of invoked delegate methods. Elements are sent *after method is invoked*.\n\n     Only methods that have `void` return value can be observed using this method because\n     those methods are used as a notification mechanism. It doesn't matter if they are optional\n     or not. Observing is performed by installing a hidden associated `PublishSubject` that is\n     used to dispatch messages to observers.\n\n     Delegate methods that have non `void` return value can't be observed directly using this method\n     because:\n     * those methods are not intended to be used as a notification mechanism, but as a behavior customization mechanism\n     * there is no sensible automatic way to determine a default return value\n\n     In case observing of delegate methods that have return type is required, it can be done by\n     manually installing a `PublishSubject` or `BehaviorSubject` and implementing delegate method.\n\n     e.g.\n\n         // delegate proxy part (RxScrollViewDelegateProxy)\n\n         let internalSubject = PublishSubject<CGPoint>\n\n         public func requiredDelegateMethod(scrollView: UIScrollView, arg1: CGPoint) -> Bool {\n             internalSubject.on(.next(arg1))\n             return self._forwardToDelegate?.requiredDelegateMethod?(scrollView, arg1: arg1) ?? defaultReturnValue\n         }\n\n     ....\n\n         // reactive property implementation in a real class (`UIScrollView`)\n         public var property: Observable<CGPoint> {\n             let proxy = RxScrollViewDelegateProxy.proxy(for: base)\n             return proxy.internalSubject.asObservable()\n         }\n\n     **In case calling this method prints \"Delegate proxy is already implementing `\\(selector)`,\n     a more performant way of registering might exist.\", that means that manual observing method\n     is required analog to the example above because delegate method has already been implemented.**\n\n     - parameter selector: Selector used to filter observed invocations of delegate methods.\n     - returns: Observable sequence of arguments passed to `selector` method.\n     */\n    open func methodInvoked(_ selector: Selector) -> Observable<[Any]> {\n        MainScheduler.ensureRunningOnMainThread()\n\n        let subject = _methodInvokedForSelector[selector]\n\n        if let subject {\n            return subject.asObservable()\n        } else {\n            let subject = MessageDispatcher(selector: selector, delegateProxy: self)\n            _methodInvokedForSelector[selector] = subject\n            return subject.asObservable()\n        }\n    }\n\n    fileprivate func checkSelectorIsObservable(_ selector: Selector) {\n        MainScheduler.ensureRunningOnMainThread()\n\n        if hasWiredImplementation(for: selector) {\n            print(\"⚠️ Delegate proxy is already implementing `\\(selector)`, a more performant way of registering might exist.\")\n            return\n        }\n\n        if voidDelegateMethodsContain(selector) {\n            return\n        }\n\n        // In case `_forwardToDelegate` is `nil`, it is assumed the check is being done prematurely.\n        if !(_forwardToDelegate?.responds(to: selector) ?? true) {\n            print(\"⚠️ Using delegate proxy dynamic interception method but the target delegate object doesn't respond to the requested selector. \" +\n                \"In case pure Swift delegate proxy is being used please use manual observing method by using`PublishSubject`s. \" +\n                \" (selector: `\\(selector)`, forwardToDelegate: `\\(_forwardToDelegate ?? self)`)\")\n        }\n    }\n\n    // proxy\n\n    override open func _sentMessage(_ selector: Selector, withArguments arguments: [Any]) {\n        _sentMessageForSelector[selector]?.on(.next(arguments))\n    }\n\n    override open func _methodInvoked(_ selector: Selector, withArguments arguments: [Any]) {\n        _methodInvokedForSelector[selector]?.on(.next(arguments))\n    }\n\n    /// Returns reference of normal delegate that receives all forwarded messages\n    /// through `self`.\n    ///\n    /// - returns: Value of reference if set or nil.\n    open func forwardToDelegate() -> Delegate? {\n        castOptionalOrFatalError(_forwardToDelegate)\n    }\n\n    /// Sets reference of normal delegate that receives all forwarded messages\n    /// through `self`.\n    ///\n    /// - parameter delegate: Reference of delegate that receives all messages through `self`.\n    /// - parameter retainDelegate: Should `self` retain `forwardToDelegate`.\n    open func setForwardToDelegate(_ delegate: Delegate?, retainDelegate: Bool) {\n        #if DEBUG // 4.0 all configurations\n        MainScheduler.ensureRunningOnMainThread()\n        #endif\n        _setForwardToDelegate(delegate, retainDelegate: retainDelegate)\n\n        let sentSelectors: [Selector] = _sentMessageForSelector.values.filter(\\.hasObservers).map(\\.selector)\n        let invokedSelectors: [Selector] = _methodInvokedForSelector.values.filter(\\.hasObservers).map(\\.selector)\n        let allUsedSelectors = sentSelectors + invokedSelectors\n\n        for selector in Set(allUsedSelectors) {\n            checkSelectorIsObservable(selector)\n        }\n\n        reset()\n    }\n\n    private func hasObservers(selector: Selector) -> Bool {\n        (_sentMessageForSelector[selector]?.hasObservers ?? false)\n            || (_methodInvokedForSelector[selector]?.hasObservers ?? false)\n    }\n\n    override open func responds(to aSelector: Selector!) -> Bool {\n        guard let aSelector else { return false }\n        return super.responds(to: aSelector)\n            || (_forwardToDelegate?.responds(to: aSelector) ?? false)\n            || (voidDelegateMethodsContain(aSelector) && hasObservers(selector: aSelector))\n    }\n\n    fileprivate func reset() {\n        guard let parentObject = _parentObject else { return }\n\n        let maybeCurrentDelegate = _currentDelegateFor(parentObject)\n\n        if maybeCurrentDelegate === self {\n            _setCurrentDelegateTo(nil, parentObject)\n            _setCurrentDelegateTo(castOrFatalError(self), parentObject)\n        }\n    }\n\n    deinit {\n        for v in self._sentMessageForSelector.values {\n            v.on(.completed)\n        }\n        for v in self._methodInvokedForSelector.values {\n            v.on(.completed)\n        }\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n\nprivate let mainScheduler = MainScheduler()\n\nprivate final class MessageDispatcher {\n    private let dispatcher: PublishSubject<[Any]>\n    private let result: Observable<[Any]>\n\n    fileprivate let selector: Selector\n\n    init(selector: Selector, delegateProxy _delegateProxy: DelegateProxy<some Any, some Any>) {\n        #if swift(>=6.2)\n        weak let weakDelegateProxy = _delegateProxy\n        #else\n        weak var weakDelegateProxy = _delegateProxy\n        #endif\n\n        let dispatcher = PublishSubject<[Any]>()\n        self.dispatcher = dispatcher\n        self.selector = selector\n\n        result = dispatcher\n            .do(onSubscribed: { weakDelegateProxy?.checkSelectorIsObservable(selector); weakDelegateProxy?.reset() }, onDispose: { weakDelegateProxy?.reset() })\n            .share()\n            .subscribe(on: mainScheduler)\n    }\n\n    var on: (Event<[Any]>) -> Void {\n        dispatcher.on\n    }\n\n    var hasObservers: Bool {\n        dispatcher.hasObservers\n    }\n\n    func asObservable() -> Observable<[Any]> {\n        result\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Common/DelegateProxyType.swift",
    "content": "//\n//  DelegateProxyType.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport Foundation\nimport RxSwift\n\n/**\n `DelegateProxyType` protocol enables using both normal delegates and Rx observable sequences with\n views that can have only one delegate/datasource registered.\n\n `Proxies` store information about observers, subscriptions and delegates\n for specific views.\n\n Type implementing `DelegateProxyType` should never be initialized directly.\n\n To fetch initialized instance of type implementing `DelegateProxyType`, `proxy` method\n should be used.\n\n This is more or less how it works.\n\n       +-------------------------------------------+\n       |                                           |\n       | UIView subclass (UIScrollView)            |\n       |                                           |\n       +-----------+-------------------------------+\n                   |\n                   | Delegate\n                   |\n                   |\n       +-----------v-------------------------------+\n       |                                           |\n       | Delegate proxy : DelegateProxyType        +-----+---->  Observable<T1>\n       |                , UIScrollViewDelegate     |     |\n       +-----------+-------------------------------+     +---->  Observable<T2>\n                   |                                     |\n                   |                                     +---->  Observable<T3>\n                   |                                     |\n                   | forwards events                     |\n                   | to custom delegate                  |\n                   |                                     v\n       +-----------v-------------------------------+\n       |                                           |\n       | Custom delegate (UIScrollViewDelegate)    |\n       |                                           |\n       +-------------------------------------------+\n\n Since RxCocoa needs to automagically create those Proxies and because views that have delegates can be hierarchical\n\n      UITableView : UIScrollView : UIView\n\n .. and corresponding delegates are also hierarchical\n\n      UITableViewDelegate : UIScrollViewDelegate : NSObject\n\n ... this mechanism can be extended by using the following snippet in `registerKnownImplementations` or in some other\n      part of your app that executes before using `rx.*` (e.g. appDidFinishLaunching).\n\n     RxScrollViewDelegateProxy.register { RxTableViewDelegateProxy(parentObject: $0) }\n\n */\npublic protocol DelegateProxyType: AnyObject {\n    associatedtype ParentObject: AnyObject\n    associatedtype Delegate\n\n    /// It is require that enumerate call `register` of the extended DelegateProxy subclasses here.\n    static func registerKnownImplementations()\n\n    /// Unique identifier for delegate\n    static var identifier: UnsafeRawPointer { get }\n\n    /// Returns designated delegate property for object.\n    ///\n    /// Objects can have multiple delegate properties.\n    ///\n    /// Each delegate property needs to have it's own type implementing `DelegateProxyType`.\n    ///\n    /// It's abstract method.\n    ///\n    /// - parameter object: Object that has delegate property.\n    /// - returns: Value of delegate property.\n    static func currentDelegate(for object: ParentObject) -> Delegate?\n\n    /// Sets designated delegate property for object.\n    ///\n    /// Objects can have multiple delegate properties.\n    ///\n    /// Each delegate property needs to have it's own type implementing `DelegateProxyType`.\n    ///\n    /// It's abstract method.\n    ///\n    /// - parameter delegate: Delegate value.\n    /// - parameter object: Object that has delegate property.\n    static func setCurrentDelegate(_ delegate: Delegate?, to object: ParentObject)\n\n    /// Returns reference of normal delegate that receives all forwarded messages\n    /// through `self`.\n    ///\n    /// - returns: Value of reference if set or nil.\n    func forwardToDelegate() -> Delegate?\n\n    /// Sets reference of normal delegate that receives all forwarded messages\n    /// through `self`.\n    ///\n    /// - parameter forwardToDelegate: Reference of delegate that receives all messages through `self`.\n    /// - parameter retainDelegate: Should `self` retain `forwardToDelegate`.\n    func setForwardToDelegate(_ forwardToDelegate: Delegate?, retainDelegate: Bool)\n}\n\n// default implementations\npublic extension DelegateProxyType {\n    /// Unique identifier for delegate\n    static var identifier: UnsafeRawPointer {\n        let delegateIdentifier = ObjectIdentifier(Delegate.self)\n        let integerIdentifier = Int(bitPattern: delegateIdentifier)\n        return UnsafeRawPointer(bitPattern: integerIdentifier)!\n    }\n}\n\n// workaround of Delegate: class\nextension DelegateProxyType {\n    static func _currentDelegate(for object: ParentObject) -> AnyObject? {\n        currentDelegate(for: object).map { $0 as AnyObject }\n    }\n\n    static func _setCurrentDelegate(_ delegate: AnyObject?, to object: ParentObject) {\n        setCurrentDelegate(castOptionalOrFatalError(delegate), to: object)\n    }\n\n    func _forwardToDelegate() -> AnyObject? {\n        forwardToDelegate().map { $0 as AnyObject }\n    }\n\n    func _setForwardToDelegate(_ forwardToDelegate: AnyObject?, retainDelegate: Bool) {\n        setForwardToDelegate(castOptionalOrFatalError(forwardToDelegate), retainDelegate: retainDelegate)\n    }\n}\n\npublic extension DelegateProxyType {\n    /// Store DelegateProxy subclass to factory.\n    /// When make 'Rx*DelegateProxy' subclass, call 'Rx*DelegateProxySubclass.register(for:_)' 1 time, or use it in DelegateProxyFactory\n    /// 'Rx*DelegateProxy' can have one subclass implementation per concrete ParentObject type.\n    /// Should call it from concrete DelegateProxy type, not generic.\n    static func register<Parent>(make: @escaping (Parent) -> Self) {\n        factory.extend(make: make)\n    }\n\n    /// Creates new proxy for target object.\n    /// Should not call this function directory, use 'DelegateProxy.proxy(for:)'\n    static func createProxy(for object: AnyObject) -> Self {\n        castOrFatalError(factory.createProxy(for: object))\n    }\n\n    /// Returns existing proxy for object or installs new instance of delegate proxy.\n    ///\n    /// - parameter object: Target object on which to install delegate proxy.\n    /// - returns: Installed instance of delegate proxy.\n    ///\n    ///\n    ///     extension Reactive where Base: UISearchBar {\n    ///\n    ///         public var delegate: DelegateProxy<UISearchBar, UISearchBarDelegate> {\n    ///            return RxSearchBarDelegateProxy.proxy(for: base)\n    ///         }\n    ///\n    ///         public var text: ControlProperty<String> {\n    ///             let source: Observable<String> = self.delegate.observe(#selector(UISearchBarDelegate.searchBar(_:textDidChange:)))\n    ///             ...\n    ///         }\n    ///     }\n    static func proxy(for object: ParentObject) -> Self {\n        MainScheduler.ensureRunningOnMainThread()\n\n        let maybeProxy = assignedProxy(for: object)\n\n        let proxy: AnyObject\n        if let existingProxy = maybeProxy {\n            proxy = existingProxy\n        } else {\n            proxy = castOrFatalError(createProxy(for: object))\n            assignProxy(proxy, toObject: object)\n            assert(assignedProxy(for: object) === proxy)\n        }\n        let currentDelegate = _currentDelegate(for: object)\n        let delegateProxy: Self = castOrFatalError(proxy)\n\n        if currentDelegate !== delegateProxy {\n            delegateProxy._setForwardToDelegate(currentDelegate, retainDelegate: false)\n            assert(delegateProxy._forwardToDelegate() === currentDelegate)\n            _setCurrentDelegate(proxy, to: object)\n            assert(_currentDelegate(for: object) === proxy)\n            assert(delegateProxy._forwardToDelegate() === currentDelegate)\n        }\n\n        return delegateProxy\n    }\n\n    /// Sets forward delegate for `DelegateProxyType` associated with a specific object and return disposable that can be used to unset the forward to delegate.\n    /// Using this method will also make sure that potential original object cached selectors are cleared and will report any accidental forward delegate mutations.\n    ///\n    /// - parameter forwardDelegate: Delegate object to set.\n    /// - parameter retainDelegate: Retain `forwardDelegate` while it's being set.\n    /// - parameter onProxyForObject: Object that has `delegate` property.\n    /// - returns: Disposable object that can be used to clear forward delegate.\n    static func installForwardDelegate(_ forwardDelegate: Delegate, retainDelegate: Bool, onProxyForObject object: ParentObject) -> Disposable {\n        #if swift(>=6.2)\n        weak let weakForwardDelegate: AnyObject? = forwardDelegate as AnyObject\n        #else\n        weak var weakForwardDelegate: AnyObject? = forwardDelegate as AnyObject\n        #endif\n        let proxy = proxy(for: object)\n\n        assert(\n            proxy._forwardToDelegate() === nil,\n            \"This is a feature to warn you that there is already a delegate (or data source) set somewhere previously. The action you are trying to perform will clear that delegate (data source) and that means that some of your features that depend on that delegate (data source) being set will likely stop working.\\n\" +\n                \"If you are ok with this, try to set delegate (data source) to `nil` in front of this operation.\\n\" +\n                \" This is the source object value: \\(object)\\n\" +\n                \" This is the original delegate (data source) value: \\(proxy.forwardToDelegate()!)\\n\" +\n                \"Hint: Maybe delegate was already set in xib or storyboard and now it's being overwritten in code.\\n\"\n        )\n\n        proxy.setForwardToDelegate(forwardDelegate, retainDelegate: retainDelegate)\n\n        return Disposables.create {\n            MainScheduler.ensureRunningOnMainThread()\n\n            let delegate: AnyObject? = weakForwardDelegate\n\n            assert(delegate == nil || proxy._forwardToDelegate() === delegate, \"Delegate was changed from time it was first set. Current \\(String(describing: proxy.forwardToDelegate())), and it should have been \\(proxy)\")\n\n            proxy.setForwardToDelegate(nil, retainDelegate: retainDelegate)\n        }\n    }\n}\n\n// private extensions\nextension DelegateProxyType {\n    private static var factory: DelegateProxyFactory {\n        DelegateProxyFactory.sharedFactory(for: self)\n    }\n\n    private static func assignedProxy(for object: ParentObject) -> AnyObject? {\n        let maybeDelegate = objc_getAssociatedObject(object, identifier)\n        return castOptionalOrFatalError(maybeDelegate)\n    }\n\n    private static func assignProxy(_ proxy: AnyObject, toObject object: ParentObject) {\n        objc_setAssociatedObject(object, identifier, proxy, .OBJC_ASSOCIATION_RETAIN)\n    }\n}\n\n/// Describes an object that has a delegate.\npublic protocol HasDelegate: AnyObject {\n    /// Delegate type\n    associatedtype Delegate\n\n    /// Delegate\n    var delegate: Delegate? { get set }\n}\n\npublic extension DelegateProxyType where ParentObject: HasDelegate, Self.Delegate == ParentObject.Delegate {\n    static func currentDelegate(for object: ParentObject) -> Delegate? {\n        object.delegate\n    }\n\n    static func setCurrentDelegate(_ delegate: Delegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n}\n\n/// Describes an object that has a data source.\npublic protocol HasDataSource: AnyObject {\n    /// Data source type\n    associatedtype DataSource\n\n    /// Data source\n    var dataSource: DataSource? { get set }\n}\n\npublic extension DelegateProxyType where ParentObject: HasDataSource, Self.Delegate == ParentObject.DataSource {\n    static func currentDelegate(for object: ParentObject) -> Delegate? {\n        object.dataSource\n    }\n\n    static func setCurrentDelegate(_ delegate: Delegate?, to object: ParentObject) {\n        object.dataSource = delegate\n    }\n}\n\n/// Describes an object that has a prefetch data source.\n@available(iOS 10.0, tvOS 10.0, *)\npublic protocol HasPrefetchDataSource: AnyObject {\n    /// Prefetch data source type\n    associatedtype PrefetchDataSource\n\n    /// Prefetch data source\n    var prefetchDataSource: PrefetchDataSource? { get set }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\npublic extension DelegateProxyType where ParentObject: HasPrefetchDataSource, Self.Delegate == ParentObject.PrefetchDataSource {\n    static func currentDelegate(for object: ParentObject) -> Delegate? {\n        object.prefetchDataSource\n    }\n\n    static func setCurrentDelegate(_ delegate: Delegate?, to object: ParentObject) {\n        object.prefetchDataSource = delegate\n    }\n}\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport UIKit\n\nextension ObservableType {\n    func subscribeProxyDataSource<DelegateProxy: DelegateProxyType>(ofObject object: DelegateProxy.ParentObject, dataSource: DelegateProxy.Delegate, retainDataSource: Bool, binding: @escaping (DelegateProxy, Event<Element>) -> Void)\n        -> Disposable\n        where DelegateProxy.ParentObject: UIView,\n        DelegateProxy.Delegate: AnyObject\n    {\n        let proxy = DelegateProxy.proxy(for: object)\n        let unregisterDelegate = DelegateProxy.installForwardDelegate(dataSource, retainDelegate: retainDataSource, onProxyForObject: object)\n\n        // Do not perform layoutIfNeeded if the object is still not in the view hierarchy\n        if object.window != nil {\n            // this is needed to flush any delayed old state (https://github.com/RxSwiftCommunity/RxDataSources/pull/75)\n            object.layoutIfNeeded()\n        }\n\n        let subscription = asObservable()\n            .observe(on: MainScheduler())\n            .catch { error in\n                bindingError(error)\n                return Observable.empty()\n            }\n            // source can never end, otherwise it would release the subscriber, and deallocate the data source\n            .concat(Observable.never())\n            .take(until: object.rx.deallocated)\n            .subscribe { [weak object] (event: Event<Element>) in\n                if let object {\n                    assert(proxy === DelegateProxy.currentDelegate(for: object), \"Proxy changed from the time it was first set.\\nOriginal: \\(proxy)\\nExisting: \\(String(describing: DelegateProxy.currentDelegate(for: object)))\")\n                }\n\n                binding(proxy, event)\n\n                switch event {\n                case let .error(error):\n                    bindingError(error)\n                    unregisterDelegate.dispose()\n                case .completed:\n                    unregisterDelegate.dispose()\n                default:\n                    break\n                }\n            }\n\n        return Disposables.create { [weak object] in\n            subscription.dispose()\n\n            if object?.window != nil {\n                object?.layoutIfNeeded()\n            }\n\n            unregisterDelegate.dispose()\n        }\n    }\n}\n\n#endif\n\n/**\n\n To add delegate proxy subclasses call `DelegateProxySubclass.register()` in `registerKnownImplementations` or in some other\n part of your app that executes before using `rx.*` (e.g. appDidFinishLaunching).\n\n     class RxScrollViewDelegateProxy: DelegateProxy {\n         public static func registerKnownImplementations() {\n             self.register { RxTableViewDelegateProxy(parentObject: $0) }\n     }\n     ...\n\n */\nprivate class DelegateProxyFactory {\n    private static var _sharedFactories: [UnsafeRawPointer: DelegateProxyFactory] = [:]\n\n    fileprivate static func sharedFactory<DelegateProxy: DelegateProxyType>(for proxyType: DelegateProxy.Type) -> DelegateProxyFactory {\n        MainScheduler.ensureRunningOnMainThread()\n        let identifier = DelegateProxy.identifier\n        if let factory = _sharedFactories[identifier] {\n            return factory\n        }\n        let factory = DelegateProxyFactory(for: proxyType)\n        _sharedFactories[identifier] = factory\n        DelegateProxy.registerKnownImplementations()\n        return factory\n    }\n\n    private var _factories: [ObjectIdentifier: (AnyObject) -> AnyObject]\n    private var _delegateProxyType: Any.Type\n    private var _identifier: UnsafeRawPointer\n\n    private init(for proxyType: (some DelegateProxyType).Type) {\n        _factories = [:]\n        _delegateProxyType = proxyType\n        _identifier = proxyType.identifier\n    }\n\n    fileprivate func extend<DelegateProxy: DelegateProxyType, ParentObject>(make: @escaping (ParentObject) -> DelegateProxy) {\n        MainScheduler.ensureRunningOnMainThread()\n        precondition(_identifier == DelegateProxy.identifier, \"Delegate proxy has inconsistent identifier\")\n        guard _factories[ObjectIdentifier(ParentObject.self)] == nil else {\n            rxFatalError(\"The factory of \\(ParentObject.self) is duplicated. DelegateProxy is not allowed of duplicated base object type.\")\n        }\n        _factories[ObjectIdentifier(ParentObject.self)] = { make(castOrFatalError($0)) }\n    }\n\n    fileprivate func createProxy(for object: AnyObject) -> AnyObject {\n        MainScheduler.ensureRunningOnMainThread()\n        var maybeMirror: Mirror? = Mirror(reflecting: object)\n        while let mirror = maybeMirror {\n            if let factory = _factories[ObjectIdentifier(mirror.subjectType)] {\n                return factory(object)\n            }\n            maybeMirror = mirror.superclassMirror\n        }\n        rxFatalError(\"DelegateProxy has no factory of \\(object). Implement DelegateProxy subclass for \\(object) first.\")\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Common/Infallible+Bind.swift",
    "content": "//\n//  Infallible+Bind.swift\n//  RxCocoa\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension InfallibleType {\n    /**\n     Creates new subscription and sends elements to observer(s).\n     In this form, it's equivalent to the `subscribe` method, but it better conveys intent, and enables\n     writing more consistent binding code.\n     - parameter observers: Observers to receives events.\n     - returns: Disposable object that can be used to unsubscribe the observers.\n     */\n    func bind<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element {\n        subscribe { infallibleEvent in\n            observers.forEach { $0.on(infallibleEvent.event) }\n        }\n    }\n\n    /**\n     Creates new subscription and sends elements to observer(s).\n     In this form, it's equivalent to the `subscribe` method, but it better conveys intent, and enables\n     writing more consistent binding code.\n     - parameter observers: Observers to receives events.\n     - returns: Disposable object that can be used to unsubscribe the observers.\n     */\n    func bind<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element? {\n        map { $0 as Element? }\n            .subscribe { infallibleEvent in\n                observers.forEach { $0.on(infallibleEvent.event) }\n            }\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function.\n\n     - parameter binder: Function used to bind elements from `self`.\n     - returns: Object representing subscription.\n     */\n    func bind<Result>(to binder: (Self) -> Result) -> Result {\n        binder(self)\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function and final parameter passed to binder function\n     after `self` is passed.\n\n         public func bind<R1, R2>(to binder: Self -> R1 -> R2, curriedArgument: R1) -> R2 {\n             return binder(self)(curriedArgument)\n         }\n\n     - parameter binder: Function used to bind elements from `self`.\n     - parameter curriedArgument: Final argument passed to `binder` to finish binding process.\n     - returns: Object representing subscription.\n     */\n    func bind<R1, R2>(to binder: (Self) -> (R1) -> R2, curriedArgument: R1) -> R2 {\n        binder(self)(curriedArgument)\n    }\n\n    /**\n     Subscribes an element handler to an observable sequence.\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func bind(onNext: @escaping (Element) -> Void) -> Disposable {\n        subscribe(onNext: onNext)\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: BehaviorRelay<Element>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: BehaviorRelay<Element?>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `PublishRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: PublishRelay<Element>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `PublishRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: PublishRelay<Element?>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: ReplayRelay<Element>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func bind(to relays: ReplayRelay<Element?>...) -> Disposable {\n        subscribe(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Common/Observable+Bind.swift",
    "content": "//\n//  Observable+Bind.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 8/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ObservableType {\n    /**\n     Creates new subscription and sends elements to observer(s).\n     In this form, it's equivalent to the `subscribe` method, but it better conveys intent, and enables\n     writing more consistent binding code.\n     - parameter observers: Observers to receives events.\n     - returns: Disposable object that can be used to unsubscribe the observers.\n     */\n    func bind<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element {\n        subscribe { event in\n            observers.forEach { $0.on(event) }\n        }\n    }\n\n    /**\n     Creates new subscription and sends elements to observer(s).\n     In this form, it's equivalent to the `subscribe` method, but it better conveys intent, and enables\n     writing more consistent binding code.\n     - parameter observers: Observers to receives events.\n     - returns: Disposable object that can be used to unsubscribe the observers.\n     */\n    func bind<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element? {\n        map { $0 as Element? }\n            .subscribe { event in\n                observers.forEach { $0.on(event) }\n            }\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function.\n\n     - parameter binder: Function used to bind elements from `self`.\n     - returns: Object representing subscription.\n     */\n    func bind<Result>(to binder: (Self) -> Result) -> Result {\n        binder(self)\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function and final parameter passed to binder function\n     after `self` is passed.\n\n         public func bind<R1, R2>(to binder: Self -> R1 -> R2, curriedArgument: R1) -> R2 {\n             return binder(self)(curriedArgument)\n         }\n\n     - parameter binder: Function used to bind elements from `self`.\n     - parameter curriedArgument: Final argument passed to `binder` to finish binding process.\n     - returns: Object representing subscription.\n     */\n    func bind<R1, R2>(to binder: (Self) -> (R1) -> R2, curriedArgument: R1) -> R2 {\n        binder(self)(curriedArgument)\n    }\n\n    /**\n     Subscribes an element handler to an observable sequence.\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n      - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func bind<Object: AnyObject>(\n        with object: Object,\n        onNext: @escaping (Object, Element) -> Void\n    ) -> Disposable {\n        subscribe(\n            onNext: { [weak object] in\n                guard let object else { return }\n                onNext(object, $0)\n            },\n            onError: { error in\n                rxFatalErrorInDebug(\"Binding error: \\(error)\")\n            }\n        )\n    }\n\n    /**\n     Subscribes an element handler to an observable sequence.\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func bind(onNext: @escaping (Element) -> Void) -> Disposable {\n        subscribe(\n            onNext: onNext,\n            onError: { error in\n                rxFatalErrorInDebug(\"Binding error: \\(error)\")\n            }\n        )\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Common/RxCocoaObjCRuntimeError+Extensions.swift",
    "content": "//\n//  RxCocoaObjCRuntimeError+Extensions.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 10/9/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if SWIFT_PACKAGE && !DISABLE_SWIZZLING && !os(Linux)\nimport RxCocoaRuntime\n#endif\n\n#if !DISABLE_SWIZZLING && !os(Linux)\n/// RxCocoa ObjC runtime interception mechanism.\npublic enum RxCocoaInterceptionMechanism {\n    /// Unknown message interception mechanism.\n    case unknown\n    /// Key value observing interception mechanism.\n    case kvo\n}\n\n/// RxCocoa ObjC runtime modification errors.\npublic enum RxCocoaObjCRuntimeError:\n    Swift.Error,\n    CustomDebugStringConvertible\n{\n    /// Unknown error has occurred.\n    case unknown(target: AnyObject)\n\n    /**\n     If the object is reporting a different class then it's real class, that means that there is probably\n     already some interception mechanism in place or something weird is happening.\n\n     The most common case when this would happen is when using a combination of KVO (`observe`) and `sentMessage`.\n\n     This error is easily resolved by just using `sentMessage` observing before `observe`.\n\n     The reason why the other way around could create issues is because KVO will unregister it's interceptor\n     class and restore original class. Unfortunately that will happen no matter was there another interceptor\n     subclass registered in hierarchy or not.\n\n     Failure scenario:\n     * KVO sets class to be `__KVO__OriginalClass` (subclass of `OriginalClass`)\n     * `sentMessage` sets object class to be `_RX_namespace___KVO__OriginalClass` (subclass of `__KVO__OriginalClass`)\n     * then unobserving with KVO will restore class to be `OriginalClass` -> failure point (possibly a bug in KVO)\n\n     The reason why changing order of observing works is because any interception method on unregistration\n     should return object's original real class (if that doesn't happen then it's really easy to argue that's a bug\n     in that interception mechanism).\n\n     This library won't remove registered interceptor even if there aren't any observers left because\n     it's highly unlikely it would have any benefit in real world use cases, and it's even more\n     dangerous.\n     */\n    case objectMessagesAlreadyBeingIntercepted(target: AnyObject, interceptionMechanism: RxCocoaInterceptionMechanism)\n\n    /// Trying to observe messages for selector that isn't implemented.\n    case selectorNotImplemented(target: AnyObject)\n\n    /// Core Foundation classes are usually toll free bridged. Those classes crash the program in case\n    /// `object_setClass` is performed on them.\n    ///\n    /// There is a possibility to just swizzle methods on original object, but since those won't be usual use\n    /// cases for this library, then an error will just be reported for now.\n    case cantInterceptCoreFoundationTollFreeBridgedObjects(target: AnyObject)\n\n    /// Two libraries have simultaneously tried to modify ObjC runtime and that was detected. This can only\n    /// happen in scenarios where multiple interception libraries are used.\n    ///\n    /// To synchronize other libraries intercepting messages for an object, use `synchronized` on target object and\n    /// it's meta-class.\n    case threadingCollisionWithOtherInterceptionMechanism(target: AnyObject)\n\n    /// For some reason saving original method implementation under RX namespace failed.\n    case savingOriginalForwardingMethodFailed(target: AnyObject)\n\n    /// Intercepting a sent message by replacing a method implementation with `_objc_msgForward` failed for some reason.\n    case replacingMethodWithForwardingImplementation(target: AnyObject)\n\n    /// Attempt to intercept one of the performance sensitive methods:\n    ///    * class\n    ///    * respondsToSelector:\n    ///    * methodSignatureForSelector:\n    ///    * forwardingTargetForSelector:\n    case observingPerformanceSensitiveMessages(target: AnyObject)\n\n    /// Message implementation has unsupported return type (for example large struct). The reason why this is a error\n    /// is because in some cases intercepting sent messages requires replacing implementation with `_objc_msgForward_stret`\n    /// instead of `_objc_msgForward`.\n    ///\n    /// The unsupported cases should be fairly uncommon.\n    case observingMessagesWithUnsupportedReturnType(target: AnyObject)\n}\n\npublic extension RxCocoaObjCRuntimeError {\n    /// A textual representation of `self`, suitable for debugging.\n    var debugDescription: String {\n        switch self {\n        case let .unknown(target):\n            return \"Unknown error occurred.\\nTarget: `\\(target)`\"\n        case let .objectMessagesAlreadyBeingIntercepted(target, interceptionMechanism):\n            let interceptionMechanismDescription = interceptionMechanism == .kvo ? \"KVO\" : \"other interception mechanism\"\n            return \"Collision between RxCocoa interception mechanism and \\(interceptionMechanismDescription).\"\n                + \" To resolve this conflict please use this interception mechanism first.\\nTarget: \\(target)\"\n        case let .selectorNotImplemented(target):\n            return \"Trying to observe messages for selector that isn't implemented.\\nTarget: \\(target)\"\n        case let .cantInterceptCoreFoundationTollFreeBridgedObjects(target):\n            return \"Interception of messages sent to Core Foundation isn't supported.\\nTarget: \\(target)\"\n        case let .threadingCollisionWithOtherInterceptionMechanism(target):\n            return \"Detected a conflict while modifying ObjC runtime.\\nTarget: \\(target)\"\n        case let .savingOriginalForwardingMethodFailed(target):\n            return \"Saving original method implementation failed.\\nTarget: \\(target)\"\n        case let .replacingMethodWithForwardingImplementation(target):\n            return \"Intercepting a sent message by replacing a method implementation with `_objc_msgForward` failed for some reason.\\nTarget: \\(target)\"\n        case let .observingPerformanceSensitiveMessages(target):\n            return \"Attempt to intercept one of the performance sensitive methods. \\nTarget: \\(target)\"\n        case let .observingMessagesWithUnsupportedReturnType(target):\n            return \"Attempt to intercept a method with unsupported return type. \\nTarget: \\(target)\"\n        }\n    }\n}\n\n// MARK: Conversions `NSError` > `RxCocoaObjCRuntimeError`\n\nextension Error {\n    func rxCocoaErrorForTarget(_ target: AnyObject) -> RxCocoaObjCRuntimeError {\n        let error = self as NSError\n\n        if error.domain == RXObjCRuntimeErrorDomain {\n            let errorCode = RXObjCRuntimeError(rawValue: error.code) ?? .unknown\n\n            switch errorCode {\n            case .unknown:\n                return .unknown(target: target)\n            case .objectMessagesAlreadyBeingIntercepted:\n                let isKVO = (error.userInfo[RXObjCRuntimeErrorIsKVOKey] as? NSNumber)?.boolValue ?? false\n                return .objectMessagesAlreadyBeingIntercepted(target: target, interceptionMechanism: isKVO ? .kvo : .unknown)\n            case .selectorNotImplemented:\n                return .selectorNotImplemented(target: target)\n            case .cantInterceptCoreFoundationTollFreeBridgedObjects:\n                return .cantInterceptCoreFoundationTollFreeBridgedObjects(target: target)\n            case .threadingCollisionWithOtherInterceptionMechanism:\n                return .threadingCollisionWithOtherInterceptionMechanism(target: target)\n            case .savingOriginalForwardingMethodFailed:\n                return .savingOriginalForwardingMethodFailed(target: target)\n            case .replacingMethodWithForwardingImplementation:\n                return .replacingMethodWithForwardingImplementation(target: target)\n            case .observingPerformanceSensitiveMessages:\n                return .observingPerformanceSensitiveMessages(target: target)\n            case .observingMessagesWithUnsupportedReturnType:\n                return .observingMessagesWithUnsupportedReturnType(target: target)\n            @unknown default:\n                fatalError(\"Unhandled Objective C Runtime Error\")\n            }\n        }\n\n        return RxCocoaObjCRuntimeError.unknown(target: target)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Common/RxTarget.swift",
    "content": "//\n//  RxTarget.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nimport RxSwift\n\nclass RxTarget: NSObject,\n    Disposable\n{\n    private var retainSelf: RxTarget?\n\n    override init() {\n        super.init()\n        retainSelf = self\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n\n        #if DEBUG\n        MainScheduler.ensureRunningOnMainThread()\n        #endif\n    }\n\n    func dispose() {\n        #if DEBUG\n        MainScheduler.ensureRunningOnMainThread()\n        #endif\n        retainSelf = nil\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxCocoa/Common/SectionedViewDataSourceType.swift",
    "content": "//\n//  SectionedViewDataSourceType.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 1/10/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Data source with access to underlying sectioned model.\npublic protocol SectionedViewDataSourceType {\n    /// Returns model at index path.\n    ///\n    /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown.\n\n    /// - parameter indexPath: Model index path\n    /// - returns: Model at index path.\n    func model(at indexPath: IndexPath) throws -> Any\n}\n"
  },
  {
    "path": "RxCocoa/Common/TextInput.swift",
    "content": "//\n//  TextInput.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 5/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport UIKit\n\n/// Represents text input with reactive extensions.\npublic struct TextInput<Base: UITextInput> {\n    /// Base text input to extend.\n    public let base: Base\n\n    /// Reactive wrapper for `text` property.\n    public let text: ControlProperty<String?>\n\n    /// Initializes new text input.\n    ///\n    /// - parameter base: Base object.\n    /// - parameter text: Textual control property.\n    public init(base: Base, text: ControlProperty<String?>) {\n        self.base = base\n        self.text = text\n    }\n}\n\npublic extension Reactive where Base: UITextField {\n    /// Reactive text input.\n    var textInput: TextInput<Base> {\n        TextInput(base: base, text: text)\n    }\n}\n\npublic extension Reactive where Base: UITextView {\n    /// Reactive text input.\n    var textInput: TextInput<Base> {\n        TextInput(base: base, text: text)\n    }\n}\n\n#endif\n\n#if os(macOS)\nimport Cocoa\n\n/// Represents text input with reactive extensions.\npublic struct TextInput<Base: NSTextInputClient> {\n    /// Base text input to extend.\n    public let base: Base\n\n    /// Reactive wrapper for `text` property.\n    public let text: ControlProperty<String?>\n\n    /// Initializes new text input.\n    ///\n    /// - parameter base: Base object.\n    /// - parameter text: Textual control property.\n    public init(base: Base, text: ControlProperty<String?>) {\n        self.base = base\n        self.text = text\n    }\n}\n\npublic extension Reactive where Base: NSTextField, Base: NSTextInputClient {\n    /// Reactive text input.\n    var textInput: TextInput<Base> {\n        TextInput(base: base, text: text)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift",
    "content": "//\n//  KVORepresentable+CoreGraphics.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport CoreGraphics\nimport RxSwift\n\nimport Foundation\n\n#if arch(x86_64) || arch(arm64)\nlet CGRectType = \"{CGRect={CGPoint=dd}{CGSize=dd}}\"\nlet CGSizeType = \"{CGSize=dd}\"\nlet CGPointType = \"{CGPoint=dd}\"\n#elseif arch(i386) || arch(arm) || os(watchOS)\nlet CGRectType = \"{CGRect={CGPoint=ff}{CGSize=ff}}\"\nlet CGSizeType = \"{CGSize=ff}\"\nlet CGPointType = \"{CGPoint=ff}\"\n#endif\n\nextension CGRect: KVORepresentable {\n    public typealias KVOType = NSValue\n\n    /// Constructs self from `NSValue`.\n    public init?(KVOValue: KVOType) {\n        if strcmp(KVOValue.objCType, CGRectType) != 0 {\n            return nil\n        }\n        var typedValue = CGRect(x: 0, y: 0, width: 0, height: 0)\n        KVOValue.getValue(&typedValue)\n        self = typedValue\n    }\n}\n\nextension CGPoint: KVORepresentable {\n    public typealias KVOType = NSValue\n\n    /// Constructs self from `NSValue`.\n    public init?(KVOValue: KVOType) {\n        if strcmp(KVOValue.objCType, CGPointType) != 0 {\n            return nil\n        }\n        var typedValue = CGPoint(x: 0, y: 0)\n        KVOValue.getValue(&typedValue)\n        self = typedValue\n    }\n}\n\nextension CGSize: KVORepresentable {\n    public typealias KVOType = NSValue\n\n    /// Constructs self from `NSValue`.\n    public init?(KVOValue: KVOType) {\n        if strcmp(KVOValue.objCType, CGSizeType) != 0 {\n            return nil\n        }\n        var typedValue = CGSize(width: 0, height: 0)\n        KVOValue.getValue(&typedValue)\n        self = typedValue\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Foundation/KVORepresentable+Swift.swift",
    "content": "//\n//  KVORepresentable+Swift.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension Int: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.int32Value)\n    }\n}\n\nextension Int32: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.int32Value)\n    }\n}\n\nextension Int64: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.int64Value)\n    }\n}\n\nextension UInt: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.uintValue)\n    }\n}\n\nextension UInt32: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.uint32Value)\n    }\n}\n\nextension UInt64: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.uint64Value)\n    }\n}\n\nextension Bool: KVORepresentable {\n    public typealias KVOType = NSNumber\n\n    /// Constructs `Self` using KVO value.\n    public init?(KVOValue: KVOType) {\n        self.init(KVOValue.boolValue)\n    }\n}\n\nextension RawRepresentable where RawValue: KVORepresentable {\n    /// Constructs `Self` using optional KVO value.\n    init?(KVOValue: RawValue.KVOType?) {\n        guard let KVOValue else {\n            return nil\n        }\n\n        guard let rawValue = RawValue(KVOValue: KVOValue) else {\n            return nil\n        }\n\n        self.init(rawValue: rawValue)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Foundation/KVORepresentable.swift",
    "content": "//\n//  KVORepresentable.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Type that is KVO representable (KVO mechanism can be used to observe it).\npublic protocol KVORepresentable {\n    /// Associated KVO type.\n    associatedtype KVOType\n\n    /// Constructs `Self` using KVO value.\n    init?(KVOValue: KVOType)\n}\n\nextension KVORepresentable {\n    /// Initializes `KVORepresentable` with optional value.\n    init?(KVOValue: KVOType?) {\n        guard let KVOValue else {\n            return nil\n        }\n\n        self.init(KVOValue: KVOValue)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Foundation/NSObject+Rx+KVORepresentable.swift",
    "content": "//\n//  NSObject+Rx+KVORepresentable.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport Foundation\nimport RxSwift\n\n/// Key value observing options\npublic struct KeyValueObservingOptions: OptionSet {\n    /// Raw value\n    public let rawValue: UInt\n\n    public init(rawValue: UInt) {\n        self.rawValue = rawValue\n    }\n\n    /// Whether a sequence element should be sent to the observer immediately, before the subscribe method even returns.\n    public static let initial = KeyValueObservingOptions(rawValue: 1 << 0)\n    /// Whether to send updated values.\n    public static let new = KeyValueObservingOptions(rawValue: 1 << 1)\n}\n\npublic extension Reactive where Base: NSObject {\n    /**\n     Specialization of generic `observe` method.\n\n     This is a special overload because to observe values of some type (for example `Int`), first values of KVO type\n     need to be observed (`NSNumber`), and then converted to result type.\n\n     For more information take a look at `observe` method.\n     */\n    func observe<Element: KVORepresentable>(_: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<Element?> {\n        observe(Element.KVOType.self, keyPath, options: options, retainSelf: retainSelf)\n            .map(Element.init)\n    }\n}\n\n#if !DISABLE_SWIZZLING && !os(Linux)\n// KVO\npublic extension Reactive where Base: NSObject {\n    /**\n     Specialization of generic `observeWeakly` method.\n\n     For more information take a look at `observeWeakly` method.\n     */\n    func observeWeakly<Element: KVORepresentable>(_: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable<Element?> {\n        observeWeakly(Element.KVOType.self, keyPath, options: options)\n            .map(Element.init)\n    }\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Foundation/NSObject+Rx+RawRepresentable.swift",
    "content": "//\n//  NSObject+Rx+RawRepresentable.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/9/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport RxSwift\n\nimport Foundation\n\npublic extension Reactive where Base: NSObject {\n    /**\n     Specialization of generic `observe` method.\n\n     This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.\n\n     It is useful for observing bridged ObjC enum values.\n\n     For more information take a look at `observe` method.\n     */\n    func observe<Element: RawRepresentable>(_: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial], retainSelf: Bool = true) -> Observable<Element?> where Element.RawValue: KVORepresentable {\n        observe(Element.RawValue.KVOType.self, keyPath, options: options, retainSelf: retainSelf)\n            .map(Element.init)\n    }\n}\n\n#if !DISABLE_SWIZZLING\n\n// observeWeakly + RawRepresentable\npublic extension Reactive where Base: NSObject {\n    /**\n     Specialization of generic `observeWeakly` method.\n\n     This specialization first observes `KVORepresentable` value and then converts it to `RawRepresentable` value.\n\n     It is useful for observing bridged ObjC enum values.\n\n     For more information take a look at `observeWeakly` method.\n     */\n    func observeWeakly<Element: RawRepresentable>(_: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable<Element?> where Element.RawValue: KVORepresentable {\n        observeWeakly(Element.RawValue.KVOType.self, keyPath, options: options)\n            .map(Element.init)\n    }\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Foundation/NSObject+Rx.swift",
    "content": "//\n//  NSObject+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(Linux)\n\nimport Foundation\nimport RxSwift\n#if SWIFT_PACKAGE && !DISABLE_SWIZZLING && !os(Linux)\nimport RxCocoaRuntime\n#endif\n\n#if !DISABLE_SWIZZLING && !os(Linux)\nprivate var deallocatingSubjectTriggerContext: UInt8 = 0\nprivate var deallocatingSubjectContext: UInt8 = 0\n#endif\nprivate var deallocatedSubjectTriggerContext: UInt8 = 0\nprivate var deallocatedSubjectContext: UInt8 = 0\n\n#if !os(Linux)\n\n/**\n KVO is a tricky mechanism.\n\n When observing child in a ownership hierarchy, usually retaining observing target is wanted behavior.\n When observing parent in a ownership hierarchy, usually retaining target isn't wanter behavior.\n\n KVO with weak references is especially tricky. For it to work, some kind of swizzling is required.\n That can be done by\n     * replacing object class dynamically (like KVO does)\n     * by swizzling `dealloc` method on all instances for a class.\n     * some third method ...\n\n Both approaches can fail in certain scenarios:\n     * problems arise when swizzlers return original object class (like KVO does when nobody is observing)\n     * Problems can arise because replacing dealloc method isn't atomic operation (get implementation,\n     set implementation).\n\n Second approach is chosen. It can fail in case there are multiple libraries dynamically trying\n to replace dealloc method. In case that isn't the case, it should be ok.\n */\npublic extension Reactive where Base: NSObject {\n    /**\n     Observes values on `keyPath` starting from `self` with `options` and retains `self` if `retainSelf` is set.\n\n     `observe` is just a simple and performant wrapper around KVO mechanism.\n\n     * it can be used to observe paths starting from `self` or from ancestors in ownership graph (`retainSelf = false`)\n     * it can be used to observe paths starting from descendants in ownership graph (`retainSelf = true`)\n     * the paths have to consist only of `strong` properties, otherwise you are risking crashing the system by not unregistering KVO observer before dealloc.\n\n     If support for weak properties is needed or observing arbitrary or unknown relationships in the\n     ownership tree, `observeWeakly` is the preferred option.\n     - parameter type: Optional type hint of the observed sequence elements.\n     - parameter keyPath: Key path of property names to observe.\n     - parameter options: KVO mechanism notification options.\n     - parameter retainSelf: Retains self during observation if set `true`.\n     - returns: Observable sequence of objects on `keyPath`.\n     */\n    func observe<Element>(\n        _: Element.Type,\n        _ keyPath: String,\n        options: KeyValueObservingOptions = [.new, .initial],\n        retainSelf: Bool = true\n    ) -> Observable<Element?> {\n        KVOObservable(object: base, keyPath: keyPath, options: options, retainTarget: retainSelf).asObservable()\n    }\n\n    /**\n     Observes values at the provided key path using the provided options.\n\n      - parameter keyPath: A key path between the object and one of its properties.\n      - parameter options: Key-value observation options, defaults to `.new` and `.initial`.\n\n      - note: When the object is deallocated, a completion event is emitted.\n\n      - returns: An observable emitting value changes at the provided key path.\n     */\n    func observe<Element>(\n        _ keyPath: KeyPath<Base, Element>,\n        options: NSKeyValueObservingOptions = [.new, .initial]\n    ) -> Observable<Element> {\n        Observable<Element>.create { [weak base] observer in\n            let observation = base?.observe(keyPath, options: options) { obj, _ in\n                observer.on(.next(obj[keyPath: keyPath]))\n            }\n\n            return Disposables.create { observation?.invalidate() }\n        }\n        .take(until: base.rx.deallocated)\n    }\n}\n\n#endif\n\n#if !DISABLE_SWIZZLING && !os(Linux)\n// KVO\npublic extension Reactive where Base: NSObject {\n    /**\n     Observes values on `keyPath` starting from `self` with `options` and doesn't retain `self`.\n\n     It can be used in all cases where `observe` can be used and additionally\n\n     * because it won't retain observed target, it can be used to observe arbitrary object graph whose ownership relation is unknown\n     * it can be used to observe `weak` properties\n\n     **Since it needs to intercept object deallocation process it needs to perform swizzling of `dealloc` method on observed object.**\n     - parameter type: Optional type hint of the observed sequence elements.\n     - parameter keyPath: Key path of property names to observe.\n     - parameter options: KVO mechanism notification options.\n     - returns: Observable sequence of objects on `keyPath`.\n     */\n    func observeWeakly<Element>(_: Element.Type, _ keyPath: String, options: KeyValueObservingOptions = [.new, .initial]) -> Observable<Element?> {\n        observeWeaklyKeyPathFor(base, keyPath: keyPath, options: options)\n            .map { n in\n                n as? Element\n            }\n    }\n}\n#endif\n\n// Dealloc\npublic extension Reactive where Base: AnyObject {\n    /**\n     Observable sequence of object deallocated events.\n\n     After object is deallocated one `()` element will be produced and sequence will immediately complete.\n\n     - returns: Observable sequence of object deallocated events.\n     */\n    var deallocated: Observable<Void> {\n        synchronized {\n            if let deallocObservable = objc_getAssociatedObject(self.base, &deallocatedSubjectContext) as? DeallocObservable {\n                return deallocObservable.subject\n            }\n\n            let deallocObservable = DeallocObservable()\n\n            objc_setAssociatedObject(self.base, &deallocatedSubjectContext, deallocObservable, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)\n            return deallocObservable.subject\n        }\n    }\n\n    #if !DISABLE_SWIZZLING && !os(Linux)\n\n    /**\n     Observable sequence of message arguments that completes when object is deallocated.\n\n     Each element is produced before message is invoked on target object. `methodInvoked`\n     exists in case observing of invoked messages is needed.\n\n     In case an error occurs sequence will fail with `RxCocoaObjCRuntimeError`.\n\n     In case some argument is `nil`, instance of `NSNull()` will be sent.\n\n     - returns: Observable sequence of arguments passed to `selector` method.\n     */\n    func sentMessage(_ selector: Selector) -> Observable<[Any]> {\n        synchronized {\n            // in case of dealloc selector replay subject behavior needs to be used\n            if selector == deallocSelector {\n                return self.deallocating.map { _ in [] }\n            }\n\n            do {\n                let proxy: MessageSentProxy = try self.registerMessageInterceptor(selector)\n                return proxy.messageSent.asObservable()\n            } catch let e {\n                return Observable.error(e)\n            }\n        }\n    }\n\n    /**\n     Observable sequence of message arguments that completes when object is deallocated.\n\n     Each element is produced after message is invoked on target object. `sentMessage`\n     exists in case interception of sent messages before they were invoked is needed.\n\n     In case an error occurs sequence will fail with `RxCocoaObjCRuntimeError`.\n\n     In case some argument is `nil`, instance of `NSNull()` will be sent.\n\n     - returns: Observable sequence of arguments passed to `selector` method.\n     */\n    func methodInvoked(_ selector: Selector) -> Observable<[Any]> {\n        synchronized {\n            // in case of dealloc selector replay subject behavior needs to be used\n            if selector == deallocSelector {\n                return self.deallocated.map { _ in [] }\n            }\n\n            do {\n                let proxy: MessageSentProxy = try self.registerMessageInterceptor(selector)\n                return proxy.methodInvoked.asObservable()\n            } catch let e {\n                return Observable.error(e)\n            }\n        }\n    }\n\n    /**\n     Observable sequence of object deallocating events.\n\n     When `dealloc` message is sent to `self` one `()` element will be produced and after object is deallocated sequence\n     will immediately complete.\n\n     In case an error occurs sequence will fail with `RxCocoaObjCRuntimeError`.\n\n     - returns: Observable sequence of object deallocating events.\n     */\n    var deallocating: Observable<Void> {\n        synchronized {\n            do {\n                let proxy: DeallocatingProxy = try self.registerMessageInterceptor(deallocSelector)\n                return proxy.messageSent.asObservable()\n            } catch let e {\n                return Observable.error(e)\n            }\n        }\n    }\n\n    private func registerMessageInterceptor<T: MessageInterceptorSubject>(_ selector: Selector) throws -> T {\n        let rxSelector = RX_selector(selector)\n        let selectorReference = RX_reference_from_selector(rxSelector)\n\n        let subject: T\n        if let existingSubject = objc_getAssociatedObject(base, selectorReference) as? T {\n            subject = existingSubject\n        } else {\n            subject = T()\n            objc_setAssociatedObject(\n                base,\n                selectorReference,\n                subject,\n                .OBJC_ASSOCIATION_RETAIN_NONATOMIC\n            )\n        }\n\n        if subject.isActive {\n            return subject\n        }\n\n        var error: NSError?\n        let targetImplementation = RX_ensure_observing(base, selector, &error)\n        if targetImplementation == nil {\n            throw error?.rxCocoaErrorForTarget(base) ?? RxCocoaError.unknown\n        }\n\n        subject.targetImplementation = targetImplementation!\n\n        return subject\n    }\n    #endif\n}\n\n// MARK: Message interceptors\n\n#if !DISABLE_SWIZZLING && !os(Linux)\n\nprivate protocol MessageInterceptorSubject: AnyObject {\n    init()\n\n    var isActive: Bool {\n        get\n    }\n\n    var targetImplementation: IMP { get set }\n}\n\nprivate final class DeallocatingProxy:\n    MessageInterceptorSubject,\n    RXDeallocatingObserver\n{\n    typealias Element = Void\n\n    let messageSent = ReplaySubject<Void>.create(bufferSize: 1)\n\n    @objc var targetImplementation: IMP = RX_default_target_implementation()\n\n    var isActive: Bool {\n        targetImplementation != RX_default_target_implementation()\n    }\n\n    init() {}\n\n    @objc func deallocating() {\n        messageSent.on(.next(()))\n    }\n\n    deinit {\n        self.messageSent.on(.completed)\n    }\n}\n\nprivate final class MessageSentProxy:\n    MessageInterceptorSubject,\n    RXMessageSentObserver\n{\n    typealias Element = [AnyObject]\n\n    let messageSent = PublishSubject<[Any]>()\n    let methodInvoked = PublishSubject<[Any]>()\n\n    @objc var targetImplementation: IMP = RX_default_target_implementation()\n\n    var isActive: Bool {\n        targetImplementation != RX_default_target_implementation()\n    }\n\n    init() {}\n\n    @objc func messageSent(withArguments arguments: [Any]) {\n        messageSent.on(.next(arguments))\n    }\n\n    @objc func methodInvoked(withArguments arguments: [Any]) {\n        methodInvoked.on(.next(arguments))\n    }\n\n    deinit {\n        self.messageSent.on(.completed)\n        self.methodInvoked.on(.completed)\n    }\n}\n\n#endif\n\nprivate final class DeallocObservable {\n    let subject = ReplaySubject<Void>.create(bufferSize: 1)\n\n    init() {}\n\n    deinit {\n        self.subject.on(.next(()))\n        self.subject.on(.completed)\n    }\n}\n\n// MARK: KVO\n\n#if !os(Linux)\n\nprivate protocol KVOObservableProtocol {\n    var target: AnyObject { get }\n    var keyPath: String { get }\n    var retainTarget: Bool { get }\n    var options: KeyValueObservingOptions { get }\n}\n\nprivate final class KVOObserver:\n    _RXKVOObserver,\n    Disposable\n{\n    typealias Callback = (Any?) -> Void\n\n    var retainSelf: KVOObserver?\n\n    init(parent: KVOObservableProtocol, callback: @escaping Callback) {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n\n        super.init(target: parent.target, retainTarget: parent.retainTarget, keyPath: parent.keyPath, options: parent.options.nsOptions, callback: callback)\n        retainSelf = self\n    }\n\n    override func dispose() {\n        super.dispose()\n        retainSelf = nil\n    }\n\n    deinit {\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n\nprivate final class KVOObservable<Element>:\n    ObservableType,\n    KVOObservableProtocol\n{\n    typealias Element = Element?\n\n    unowned var target: AnyObject\n    var strongTarget: AnyObject?\n\n    var keyPath: String\n    var options: KeyValueObservingOptions\n    var retainTarget: Bool\n\n    init(object: AnyObject, keyPath: String, options: KeyValueObservingOptions, retainTarget: Bool) {\n        target = object\n        self.keyPath = keyPath\n        self.options = options\n        self.retainTarget = retainTarget\n        if retainTarget {\n            strongTarget = object\n        }\n    }\n\n    func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element? {\n        let observer = KVOObserver(parent: self) { value in\n            if value as? NSNull != nil {\n                observer.on(.next(nil))\n                return\n            }\n            observer.on(.next(value as? Element))\n        }\n\n        return Disposables.create(with: observer.dispose)\n    }\n}\n\nprivate extension KeyValueObservingOptions {\n    var nsOptions: NSKeyValueObservingOptions {\n        var result: UInt = 0\n        if contains(.new) {\n            result |= NSKeyValueObservingOptions.new.rawValue\n        }\n        if contains(.initial) {\n            result |= NSKeyValueObservingOptions.initial.rawValue\n        }\n\n        return NSKeyValueObservingOptions(rawValue: result)\n    }\n}\n\n#endif\n\n#if !DISABLE_SWIZZLING && !os(Linux)\n\nprivate func observeWeaklyKeyPathFor(_ target: NSObject, keyPath: String, options: KeyValueObservingOptions) -> Observable<AnyObject?> {\n    let components = keyPath.components(separatedBy: \".\").filter { $0 != \"self\" }\n\n    let observable = observeWeaklyKeyPathFor(target, keyPathSections: components, options: options)\n        .finishWithNilWhenDealloc(target)\n\n    if !options.isDisjoint(with: .initial) {\n        return observable\n    } else {\n        return observable\n            .skip(1)\n    }\n}\n\n// This should work correctly\n// Identifiers can't contain `,`, so the only place where `,` can appear\n// is as a delimiter.\n// This means there is `W` as element in an array of property attributes.\nprivate func isWeakProperty(_ properyRuntimeInfo: String) -> Bool {\n    properyRuntimeInfo.range(of: \",W,\") != nil\n}\n\nprivate extension ObservableType where Element == AnyObject? {\n    func finishWithNilWhenDealloc(_ target: NSObject)\n        -> Observable<AnyObject?>\n    {\n        let deallocating = target.rx.deallocating\n\n        return deallocating\n            .map { _ in\n                Observable.just(nil)\n            }\n            .startWith(asObservable())\n            .switchLatest()\n    }\n}\n\nprivate func observeWeaklyKeyPathFor(\n    _ target: NSObject,\n    keyPathSections: [String],\n    options: KeyValueObservingOptions\n) -> Observable<AnyObject?> {\n    #if swift(>=6.2)\n    weak let weakTarget: AnyObject? = target\n    #else\n    weak var weakTarget: AnyObject? = target\n    #endif\n\n    let propertyName = keyPathSections[0]\n    let remainingPaths = Array(keyPathSections[1 ..< keyPathSections.count])\n\n    let property = class_getProperty(object_getClass(target), propertyName)\n    if property == nil {\n        return Observable.error(RxCocoaError.invalidPropertyName(object: target, propertyName: propertyName))\n    }\n    let propertyAttributes = property_getAttributes(property!)\n\n    // should dealloc hook be in place if week property, or just create strong reference because it doesn't matter\n    let isWeak = isWeakProperty(propertyAttributes.map(String.init) ?? \"\")\n    let propertyObservable = KVOObservable(object: target, keyPath: propertyName, options: options.union(.initial), retainTarget: false) as KVOObservable<AnyObject>\n\n    // KVO recursion for value changes\n    return propertyObservable\n        .flatMapLatest { (nextTarget: AnyObject?) -> Observable<AnyObject?> in\n            if nextTarget == nil {\n                return Observable.just(nil)\n            }\n            let nextObject = nextTarget! as? NSObject\n\n            let strongTarget: AnyObject? = weakTarget\n\n            if nextObject == nil {\n                return Observable.error(RxCocoaError.invalidObjectOnKeyPath(object: nextTarget!, sourceObject: strongTarget ?? NSNull(), propertyName: propertyName))\n            }\n\n            // if target is alive, then send change\n            // if it's deallocated, don't send anything\n            if strongTarget == nil {\n                return Observable.empty()\n            }\n\n            let nextElementsObservable = keyPathSections.count == 1\n                ? Observable.just(nextTarget)\n                : observeWeaklyKeyPathFor(nextObject!, keyPathSections: remainingPaths, options: options)\n\n            if isWeak {\n                return nextElementsObservable\n                    .finishWithNilWhenDealloc(nextObject!)\n            } else {\n                return nextElementsObservable\n            }\n        }\n}\n#endif\n\n// MARK: Constants\n\nprivate let deallocSelector = NSSelectorFromString(\"dealloc\")\n\n// MARK: AnyObject + Reactive\n\nextension Reactive where Base: AnyObject {\n    func synchronized<T>(_ action: () -> T) -> T {\n        objc_sync_enter(base)\n        let result = action()\n        objc_sync_exit(base)\n        return result\n    }\n}\n\nextension Reactive where Base: AnyObject {\n    /**\n     Helper to make sure that `Observable` returned from `createCachedObservable` is only created once.\n     This is important because there is only one `target` and `action` properties on `NSControl` or `UIBarButtonItem`.\n     */\n    func lazyInstanceObservable<T: AnyObject>(_ key: UnsafeRawPointer, createCachedObservable: () -> T) -> T {\n        if let value = objc_getAssociatedObject(base, key) {\n            return value as! T\n        }\n\n        let observable = createCachedObservable()\n\n        objc_setAssociatedObject(base, key, observable, .OBJC_ASSOCIATION_RETAIN_NONATOMIC)\n\n        return observable\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Foundation/NotificationCenter+Rx.swift",
    "content": "//\n//  NotificationCenter+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 5/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\npublic extension Reactive where Base: NotificationCenter {\n    /**\n     Transforms notifications posted to notification center to observable sequence of notifications.\n\n     - parameter name: Optional name used to filter notifications.\n     - parameter object: Optional object used to filter notifications.\n     - returns: Observable sequence of posted notifications.\n     */\n    func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable<Notification> {\n        Observable.create { [weak object] observer in\n            let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in\n                observer.on(.next(notification))\n            }\n\n            return Disposables.create {\n                self.base.removeObserver(nsObserver)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Foundation/URLSession+Rx.swift",
    "content": "//\n//  URLSession+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 3/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\n#if canImport(FoundationNetworking)\nimport FoundationNetworking\n#endif\n\n/// RxCocoa URL errors.\npublic enum RxCocoaURLError:\n    Swift.Error\n{\n    /// Unknown error occurred.\n    case unknown\n    /// Response is not NSHTTPURLResponse\n    case nonHTTPResponse(response: URLResponse)\n    /// Response is not successful. (not in `200 ..< 300` range)\n    case httpRequestFailed(response: HTTPURLResponse, data: Data?)\n    /// Deserialization error.\n    case deserializationError(error: Swift.Error)\n}\n\nextension RxCocoaURLError:\n    CustomDebugStringConvertible\n{\n    /// A textual representation of `self`, suitable for debugging.\n    public var debugDescription: String {\n        switch self {\n        case .unknown:\n            \"Unknown error has occurred.\"\n        case let .nonHTTPResponse(response):\n            \"Response is not NSHTTPURLResponse `\\(response)`.\"\n        case let .httpRequestFailed(response, _):\n            \"HTTP request failed with `\\(response.statusCode)`.\"\n        case let .deserializationError(error):\n            \"Error during deserialization of the response: \\(error)\"\n        }\n    }\n}\n\nprivate func escapeTerminalString(_ value: String) -> String {\n    value.replacingOccurrences(of: \"\\\"\", with: \"\\\\\\\"\", options: [], range: nil)\n}\n\nprivate func convertURLRequestToCurlCommand(_ request: URLRequest) -> String {\n    let method = request.httpMethod ?? \"GET\"\n    var returnValue = \"curl -X \\(method) \"\n\n    if let httpBody = request.httpBody {\n        let maybeBody = String(data: httpBody, encoding: String.Encoding.utf8)\n        if let body = maybeBody {\n            returnValue += \"-d \\\"\\(escapeTerminalString(body))\\\" \"\n        }\n    }\n\n    for (key, value) in request.allHTTPHeaderFields ?? [:] {\n        let escapedKey = escapeTerminalString(key as String)\n        let escapedValue = escapeTerminalString(value as String)\n        returnValue += \"\\n    -H \\\"\\(escapedKey): \\(escapedValue)\\\" \"\n    }\n\n    let URLString = request.url?.absoluteString ?? \"<unknown url>\"\n\n    returnValue += \"\\n\\\"\\(escapeTerminalString(URLString))\\\"\"\n\n    returnValue += \" -i -v\"\n\n    return returnValue\n}\n\nprivate func convertResponseToString(_ response: URLResponse?, _ error: NSError?, _ interval: TimeInterval) -> String {\n    let ms = Int(interval * 1000)\n\n    if let response = response as? HTTPURLResponse {\n        if 200 ..< 300 ~= response.statusCode {\n            return \"Success (\\(ms)ms): Status \\(response.statusCode)\"\n        } else {\n            return \"Failure (\\(ms)ms): Status \\(response.statusCode)\"\n        }\n    }\n\n    if let error {\n        if error.domain == NSURLErrorDomain, error.code == NSURLErrorCancelled {\n            return \"Canceled (\\(ms)ms)\"\n        }\n        return \"Failure (\\(ms)ms): NSError > \\(error)\"\n    }\n\n    return \"<Unhandled response from server>\"\n}\n\npublic extension Reactive where Base: URLSession {\n    /**\n     Observable sequence of responses for URL request.\n\n     Performing of request starts after observer is subscribed and not after invoking this method.\n\n     **URL requests will be performed per subscribed observer.**\n\n     Any error during fetching of the response will cause observed sequence to terminate with error.\n\n     - parameter request: URL request.\n     - returns: Observable sequence of URL responses.\n     */\n    func response(request: URLRequest) -> Observable<(response: HTTPURLResponse, data: Data)> {\n        Observable.create { observer in\n            // smart compiler should be able to optimize this out\n            let d: Date? = if URLSession.rx.shouldLogRequest(request) {\n                Date()\n            } else {\n                nil\n            }\n\n            let task = self.base.dataTask(with: request) { data, response, error in\n                if URLSession.rx.shouldLogRequest(request) {\n                    let interval = Date().timeIntervalSince(d ?? Date())\n                    print(convertURLRequestToCurlCommand(request))\n                    #if !canImport(Darwin)\n                    print(convertResponseToString(response, error.flatMap { $0 as NSError }, interval))\n                    #else\n                    print(convertResponseToString(response, error.map { $0 as NSError }, interval))\n                    #endif\n                }\n\n                guard let response, let data else {\n                    observer.on(.error(error ?? RxCocoaURLError.unknown))\n                    return\n                }\n\n                guard let httpResponse = response as? HTTPURLResponse else {\n                    observer.on(.error(RxCocoaURLError.nonHTTPResponse(response: response)))\n                    return\n                }\n\n                observer.on(.next((httpResponse, data)))\n                observer.on(.completed)\n            }\n\n            task.resume()\n\n            return Disposables.create(with: task.cancel)\n        }\n    }\n\n    /**\n     Observable sequence of response data for URL request.\n\n     Performing of request starts after observer is subscribed and not after invoking this method.\n\n     **URL requests will be performed per subscribed observer.**\n\n     Any error during fetching of the response will cause observed sequence to terminate with error.\n\n     If response is not HTTP response with status code in the range of `200 ..< 300`, sequence\n     will terminate with `(RxCocoaErrorDomain, RxCocoaError.NetworkError)`.\n\n     - parameter request: URL request.\n     - returns: Observable sequence of response data.\n     */\n    func data(request: URLRequest) -> Observable<Data> {\n        response(request: request).map { pair -> Data in\n            if 200 ..< 300 ~= pair.0.statusCode {\n                return pair.1\n            } else {\n                throw RxCocoaURLError.httpRequestFailed(response: pair.0, data: pair.1)\n            }\n        }\n    }\n\n    /**\n     Observable sequence of response JSON for URL request.\n\n     Performing of request starts after observer is subscribed and not after invoking this method.\n\n     **URL requests will be performed per subscribed observer.**\n\n     Any error during fetching of the response will cause observed sequence to terminate with error.\n\n     If response is not HTTP response with status code in the range of `200 ..< 300`, sequence\n     will terminate with `(RxCocoaErrorDomain, RxCocoaError.NetworkError)`.\n\n     If there is an error during JSON deserialization observable sequence will fail with that error.\n\n     - parameter request: URL request.\n     - returns: Observable sequence of response JSON.\n     */\n    func json(request: URLRequest, options: JSONSerialization.ReadingOptions = []) -> Observable<Any> {\n        data(request: request).map { data -> Any in\n            do {\n                return try JSONSerialization.jsonObject(with: data, options: options)\n            } catch {\n                throw RxCocoaURLError.deserializationError(error: error)\n            }\n        }\n    }\n\n    /**\n     Observable sequence of response JSON for GET request with `URL`.\n\n     Performing of request starts after observer is subscribed and not after invoking this method.\n\n     **URL requests will be performed per subscribed observer.**\n\n     Any error during fetching of the response will cause observed sequence to terminate with error.\n\n     If response is not HTTP response with status code in the range of `200 ..< 300`, sequence\n     will terminate with `(RxCocoaErrorDomain, RxCocoaError.NetworkError)`.\n\n     If there is an error during JSON deserialization observable sequence will fail with that error.\n\n     - parameter url: URL of `NSURLRequest` request.\n     - returns: Observable sequence of response JSON.\n     */\n    func json(url: Foundation.URL) -> Observable<Any> {\n        json(request: URLRequest(url: url))\n    }\n}\n\npublic extension Reactive where Base == URLSession {\n    /// Log URL requests to standard output in curl format.\n    static var shouldLogRequest: (URLRequest) -> Bool = { _ in\n        #if DEBUG\n        return true\n        #else\n        return false\n        #endif\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(RX_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxCocoa/Runtime/_RX.m",
    "content": "//\n//  _RX.m\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"include/_RX.h\"\n\n"
  },
  {
    "path": "RxCocoa/Runtime/_RXDelegateProxy.m",
    "content": "//\n//  _RXDelegateProxy.m\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"include/_RXDelegateProxy.h\"\n#import \"include/_RX.h\"\n#import \"include/_RXObjCRuntime.h\"\n\n@interface _RXDelegateProxy () {\n    id __weak __forwardToDelegate;\n}\n\n@property (nonatomic, strong) id strongForwardDelegate;\n\n@end\n\nstatic NSMutableDictionary *voidSelectorsPerClass = nil;\n\n@implementation _RXDelegateProxy\n\n+(NSSet*)collectVoidSelectorsForProtocol:(Protocol *)protocol {\n    NSMutableSet *selectors = [NSMutableSet set];\n\n    unsigned int protocolMethodCount = 0;\n    struct objc_method_description *pMethods = protocol_copyMethodDescriptionList(protocol, NO, YES, &protocolMethodCount);\n\n    for (unsigned int i = 0; i < protocolMethodCount; ++i) {\n        struct objc_method_description method = pMethods[i];\n        if (RX_is_method_with_description_void(method)) {\n            [selectors addObject:SEL_VALUE(method.name)];\n        }\n    }\n            \n    free(pMethods);\n\n    unsigned int numberOfBaseProtocols = 0;\n    Protocol * __unsafe_unretained * pSubprotocols = protocol_copyProtocolList(protocol, &numberOfBaseProtocols);\n\n    for (unsigned int i = 0; i < numberOfBaseProtocols; ++i) {\n        [selectors unionSet:[self collectVoidSelectorsForProtocol:pSubprotocols[i]]];\n    }\n    \n    free(pSubprotocols);\n\n    return selectors;\n}\n\n+(void)initialize {\n    @synchronized (_RXDelegateProxy.class) {\n        if (voidSelectorsPerClass == nil) {\n            voidSelectorsPerClass = [[NSMutableDictionary alloc] init];\n        }\n\n        NSMutableSet *voidSelectors = [NSMutableSet set];\n\n#define CLASS_HIERARCHY_MAX_DEPTH 100\n\n        NSInteger  classHierarchyDepth = 0;\n        Class      targetClass         = NULL;\n\n        for (classHierarchyDepth = 0, targetClass = self;\n             classHierarchyDepth < CLASS_HIERARCHY_MAX_DEPTH && targetClass != nil;\n             ++classHierarchyDepth, targetClass = class_getSuperclass(targetClass)\n        ) {\n            unsigned int count;\n            Protocol *__unsafe_unretained *pProtocols = class_copyProtocolList(targetClass, &count);\n            \n            for (unsigned int i = 0; i < count; i++) {\n                NSSet *selectorsForProtocol = [self collectVoidSelectorsForProtocol:pProtocols[i]];\n                [voidSelectors unionSet:selectorsForProtocol];\n            }\n            \n            free(pProtocols);\n        }\n\n        if (classHierarchyDepth == CLASS_HIERARCHY_MAX_DEPTH) {\n            NSLog(@\"Detected weird class hierarchy with depth over %d. Starting with this class -> %@\", CLASS_HIERARCHY_MAX_DEPTH, self);\n#if DEBUG\n            abort();\n#endif\n        }\n        \n        voidSelectorsPerClass[CLASS_VALUE(self)] = voidSelectors;\n    }\n}\n\n-(id)_forwardToDelegate {\n    return __forwardToDelegate;\n}\n\n-(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate {\n    __forwardToDelegate = forwardToDelegate;\n    if (retainDelegate) {\n        self.strongForwardDelegate = forwardToDelegate;\n    }\n    else {\n        self.strongForwardDelegate = nil;\n    }\n}\n\n-(BOOL)hasWiredImplementationForSelector:(SEL)selector {\n    return [super respondsToSelector:selector];\n}\n\n-(BOOL)voidDelegateMethodsContain:(SEL)selector {\n    @synchronized(_RXDelegateProxy.class) {\n        NSSet *voidSelectors = voidSelectorsPerClass[CLASS_VALUE(self.class)];\n        NSAssert(voidSelectors != nil, @\"Set of allowed methods not initialized\");\n        return [voidSelectors containsObject:SEL_VALUE(selector)];\n    }\n}\n\n-(NSMethodSignature *)methodSignatureForSelector:(SEL)selector {\n    NSMethodSignature *signature = [super methodSignatureForSelector:selector];\n    if (!signature) {\n        signature = [self._forwardToDelegate methodSignatureForSelector:selector];\n    }\n    return signature;\n}\n\n-(void)forwardInvocation:(NSInvocation *)anInvocation {\n    BOOL isVoid = RX_is_method_signature_void(anInvocation.methodSignature);\n    NSArray *arguments = nil;\n    if (isVoid) {\n        arguments = RX_extract_arguments(anInvocation);\n        [self _sentMessage:anInvocation.selector withArguments:arguments];\n    }\n    \n    if (self._forwardToDelegate && [self._forwardToDelegate respondsToSelector:anInvocation.selector]) {\n        [anInvocation invokeWithTarget:self._forwardToDelegate];\n    }\n\n    if (isVoid) {\n        [self _methodInvoked:anInvocation.selector withArguments:arguments];\n    }\n}\n\n// abstract method\n-(void)_sentMessage:(SEL)selector withArguments:(NSArray *)arguments {\n\n}\n\n// abstract method\n-(void)_methodInvoked:(SEL)selector withArguments:(NSArray *)arguments {\n\n}\n\n-(void)dealloc {\n}\n\n@end\n"
  },
  {
    "path": "RxCocoa/Runtime/_RXKVOObserver.m",
    "content": "//\n//  _RXKVOObserver.m\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"include/_RXKVOObserver.h\"\n\n@interface _RXKVOObserver ()\n\n@property (nonatomic, unsafe_unretained) id            target;\n@property (nonatomic, strong           ) id            retainedTarget;\n@property (nonatomic, copy             ) NSString     *keyPath;\n@property (nonatomic, copy             ) void (^callback)(id);\n\n@end\n\n@implementation _RXKVOObserver\n\n-(instancetype)initWithTarget:(id)target\n                 retainTarget:(BOOL)retainTarget\n                      keyPath:(NSString*)keyPath\n                      options:(NSKeyValueObservingOptions)options\n                     callback:(void (^)(id))callback {\n    self = [super init];\n    if (!self) return nil;\n    \n    self.target = target;\n    if (retainTarget) {\n        self.retainedTarget = target;\n    }\n    self.keyPath = keyPath;\n    self.callback = callback;\n    \n    [self.target addObserver:self forKeyPath:self.keyPath options:options context:nil];\n    \n    return self;\n}\n\n-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {\n    @synchronized(self) {\n        self.callback(change[NSKeyValueChangeNewKey]);\n    }\n}\n\n-(void)dispose {\n    [self.target removeObserver:self forKeyPath:self.keyPath context:nil];\n    self.target = nil;\n    self.retainedTarget = nil;\n}\n\n@end\n"
  },
  {
    "path": "RxCocoa/Runtime/_RXObjCRuntime.m",
    "content": "//\n//  _RXObjCRuntime.m\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <pthread.h>\n#import <Foundation/Foundation.h>\n#import <objc/runtime.h>\n#import <objc/message.h>\n#import <libkern/OSAtomic.h>\n#import <stdatomic.h>\n\n#import \"include/_RX.h\"\n#import \"include/_RXObjCRuntime.h\"\n\n// self + cmd\n#define HIDDEN_ARGUMENT_COUNT   2\n\n#if !DISABLE_SWIZZLING\n\n#define NSErrorParam NSError *__autoreleasing __nullable * __nullable\n\n@class RXObjCRuntime;\n\nBOOL RXAbortOnThreadingHazard = NO;\n\ntypedef NSInvocation       *NSInvocationRef;\ntypedef NSMethodSignature  *NSMethodSignatureRef;\ntypedef unsigned char       rx_uchar;\ntypedef unsigned short      rx_ushort;\ntypedef unsigned int        rx_uint;\ntypedef unsigned long       rx_ulong;\ntypedef id (^rx_block)(id);\ntypedef BOOL (^RXInterceptWithOptimizedObserver)(RXObjCRuntime * __nonnull self, Class __nonnull class, SEL __nonnull selector, NSErrorParam error);\n\nstatic CFTypeID  defaultTypeID;\nstatic SEL       deallocSelector;\n\nstatic int RxSwizzlingTargetClassKey = 0;\n\n#if TRACE_RESOURCES\n_Atomic static int32_t numberOInterceptedMethods = 0;\n_Atomic static int32_t numberOfForwardedMethods = 0;\n#endif\n\n#define THREADING_HAZARD(class) \\\n    NSLog(@\"There was a problem swizzling on `%@`.\\nYou have probably two libraries performing swizzling in runtime.\\nWe didn't want to crash your program, but this is not good ...\\nYou an solve this problem by either not using swizzling in this library, removing one of those other libraries, or making sure that swizzling parts are synchronized (only perform them on main thread).\\nAnd yes, this message will self destruct when you clear the console, and since it's non deterministic, the problem could still exist and it will be hard for you to reproduce it.\", NSStringFromClass(class)); ABORT_IN_DEBUG if (RXAbortOnThreadingHazard) { abort(); }\n\n#define ALWAYS(condition, message) if (!(condition)) { [NSException raise:@\"RX Invalid Operator\" format:@\"%@\", message]; }\n#define ALWAYS_WITH_INFO(condition, message) NSAssert((condition), @\"%@ [%@] > %@\", NSStringFromClass(class), NSStringFromSelector(selector), (message))\n#define C_ALWAYS(condition, message) NSCAssert((condition), @\"%@ [%@] > %@\", NSStringFromClass(class), NSStringFromSelector(selector), (message))\n\n#define RX_PREFIX @\"_RX_namespace_\"\n\n#define RX_ARG_id(value)           ((value) ?: [NSNull null])\n#define RX_ARG_char(value)         [NSNumber numberWithChar:value]\n#define RX_ARG_short(value)        [NSNumber numberWithShort:value]\n#define RX_ARG_int(value)          [NSNumber numberWithInt:value]\n#define RX_ARG_long(value)         [NSNumber numberWithLong:value]\n#define RX_ARG_BOOL(value)         [NSNumber numberWithBool:value]\n#define RX_ARG_SEL(value)          [NSNumber valueWithPointer:value]\n#define RX_ARG_rx_uchar(value)     [NSNumber numberWithUnsignedInt:value]\n#define RX_ARG_rx_ushort(value)    [NSNumber numberWithUnsignedInt:value]\n#define RX_ARG_rx_uint(value)      [NSNumber numberWithUnsignedInt:value]\n#define RX_ARG_rx_ulong(value)     [NSNumber numberWithUnsignedLong:value]\n#define RX_ARG_rx_block(value)     ((id)(value) ?: [NSNull null])\n#define RX_ARG_float(value)        [NSNumber numberWithFloat:value]\n#define RX_ARG_double(value)       [NSNumber numberWithDouble:value]\n\ntypedef struct supported_type {\n    const char *encoding;\n} supported_type_t;\n\nstatic supported_type_t supported_types[] = {\n    { .encoding = @encode(void)},\n    { .encoding = @encode(id)},\n    { .encoding = @encode(Class)},\n    { .encoding = @encode(void (^)(void))},\n    { .encoding = @encode(char)},\n    { .encoding = @encode(short)},\n    { .encoding = @encode(int)},\n    { .encoding = @encode(long)},\n    { .encoding = @encode(long long)},\n    { .encoding = @encode(unsigned char)},\n    { .encoding = @encode(unsigned short)},\n    { .encoding = @encode(unsigned int)},\n    { .encoding = @encode(unsigned long)},\n    { .encoding = @encode(unsigned long long)},\n    { .encoding = @encode(float)},\n    { .encoding = @encode(double)},\n    { .encoding = @encode(BOOL)},\n    { .encoding = @encode(const char*)},\n};\n\nNSString * __nonnull const RXObjCRuntimeErrorDomain   = @\"RXObjCRuntimeErrorDomain\";\nNSString * __nonnull const RXObjCRuntimeErrorIsKVOKey = @\"RXObjCRuntimeErrorIsKVOKey\";\n\nBOOL RX_return_type_is_supported(const char *type) {\n    if (type == nil) {\n        return NO;\n    }\n\n    for (int i = 0; i < sizeof(supported_types) / sizeof(supported_type_t); ++i) {\n        if (supported_types[i].encoding[0] != type[0]) {\n            continue;\n        }\n        if (strcmp(supported_types[i].encoding, type) == 0) {\n            return YES;\n        }\n    }\n\n    return NO;\n}\n\nstatic BOOL RX_method_has_supported_return_type(Method method) {\n    const char *rawEncoding = method_getTypeEncoding(method);\n    ALWAYS(rawEncoding != nil, @\"Example encoding method is nil.\");\n\n    NSMethodSignature *methodSignature = [NSMethodSignature signatureWithObjCTypes:rawEncoding];\n    ALWAYS(methodSignature != nil, @\"Method signature method is nil.\");\n\n    return RX_return_type_is_supported(methodSignature.methodReturnType);\n}\n\nSEL __nonnull RX_selector(SEL __nonnull selector) {\n    NSString *selectorString = NSStringFromSelector(selector);\n    return NSSelectorFromString([RX_PREFIX stringByAppendingString:selectorString]);\n}\n\n#endif\n\nBOOL RX_is_method_signature_void(NSMethodSignature * __nonnull methodSignature) {\n    const char *methodReturnType = methodSignature.methodReturnType;\n    return strcmp(methodReturnType, @encode(void)) == 0;\n}\n\nBOOL RX_is_method_with_description_void(struct objc_method_description method) {\n    return strncmp(method.types, @encode(void), 1) == 0;\n}\n\nid __nonnull RX_extract_argument_at_index(NSInvocation * __nonnull invocation, NSUInteger index) {\n    const char *argumentType = [invocation.methodSignature getArgumentTypeAtIndex:index];\n    \n#define RETURN_VALUE(type) \\\n    else if (strcmp(argumentType, @encode(type)) == 0) {\\\n        type val = 0; \\\n        [invocation getArgument:&val atIndex:index]; \\\n        return @(val); \\\n    }\n\n    // Skip const type qualifier.\n    if (argumentType[0] == 'r') {\n        argumentType++;\n    }\n    \n    if (strcmp(argumentType, @encode(id)) == 0\n        || strcmp(argumentType, @encode(Class)) == 0\n        || strcmp(argumentType, @encode(void (^)(void))) == 0\n    ) {\n        __unsafe_unretained id argument = nil;\n        [invocation getArgument:&argument atIndex:index];\n        return argument;\n    }\n    RETURN_VALUE(char)\n    RETURN_VALUE(short)\n    RETURN_VALUE(int)\n    RETURN_VALUE(long)\n    RETURN_VALUE(long long)\n    RETURN_VALUE(unsigned char)\n    RETURN_VALUE(unsigned short)\n    RETURN_VALUE(unsigned int)\n    RETURN_VALUE(unsigned long)\n    RETURN_VALUE(unsigned long long)\n    RETURN_VALUE(float)\n    RETURN_VALUE(double)\n    RETURN_VALUE(BOOL)\n    RETURN_VALUE(const char *)\n    else {\n        NSUInteger size = 0;\n        NSGetSizeAndAlignment(argumentType, &size, NULL);\n        NSCParameterAssert(size > 0);\n        uint8_t data[size];\n        [invocation getArgument:&data atIndex:index];\n        \n        return [NSValue valueWithBytes:&data objCType:argumentType];\n    }\n}\n\nNSArray *RX_extract_arguments(NSInvocation *invocation) {\n    NSUInteger numberOfArguments = invocation.methodSignature.numberOfArguments;\n    NSUInteger numberOfVisibleArguments = numberOfArguments - HIDDEN_ARGUMENT_COUNT;\n    \n    NSCParameterAssert(numberOfVisibleArguments >= 0);\n    \n    NSMutableArray *arguments = [NSMutableArray arrayWithCapacity:numberOfVisibleArguments];\n    \n    for (NSUInteger index = HIDDEN_ARGUMENT_COUNT; index < numberOfArguments; ++index) {\n        [arguments addObject:RX_extract_argument_at_index(invocation, index) ?: [NSNull null]];\n    }\n    \n    return arguments;\n}\n\nIMP __nonnull RX_default_target_implementation(void) {\n    return _objc_msgForward;\n}\n\n#if !DISABLE_SWIZZLING\n\nvoid * __nonnull RX_reference_from_selector(SEL __nonnull selector) {\n    return selector;\n}\n\nstatic BOOL RX_forward_invocation(id __nonnull __unsafe_unretained self, NSInvocation *invocation) {\n    SEL originalSelector = RX_selector(invocation.selector);\n\n    id<RXMessageSentObserver> messageSentObserver = objc_getAssociatedObject(self, originalSelector);\n\n    if (messageSentObserver != nil) {\n        NSArray *arguments = RX_extract_arguments(invocation);\n        [messageSentObserver messageSentWithArguments:arguments];\n    }\n\n    if ([self respondsToSelector:originalSelector]) {\n        invocation.selector = originalSelector;\n        [invocation invokeWithTarget:self];\n\n        if (messageSentObserver != nil) {\n            NSArray *arguments = RX_extract_arguments(invocation);\n            [messageSentObserver methodInvokedWithArguments:arguments];\n        }\n\n        return YES;\n    }\n\n    return NO;\n}\n\nstatic BOOL RX_responds_to_selector(id __nonnull __unsafe_unretained self, SEL selector) {\n    Class class = object_getClass(self);\n    if (class == nil) { return NO; }\n\n    Method m = class_getInstanceMethod(class, selector);\n    return m != nil;\n\n}\n\nstatic NSMethodSignatureRef RX_method_signature(id __nonnull __unsafe_unretained self, SEL selector) {\n    Class class = object_getClass(self);\n    if (class == nil) { return nil; }\n\n    Method method = class_getInstanceMethod(class, selector);\n    if (method == nil) { return nil; }\n\n    const char *encoding = method_getTypeEncoding(method);\n    if (encoding == nil) { return nil; }\n\n    return [NSMethodSignature signatureWithObjCTypes:encoding];\n}\n\nstatic NSString * __nonnull RX_method_encoding(Method __nonnull method) {\n    const char *typeEncoding = method_getTypeEncoding(method);\n    ALWAYS(typeEncoding != nil, @\"Method encoding is nil.\");\n\n    NSString *encoding = [NSString stringWithCString:typeEncoding encoding:NSASCIIStringEncoding];\n    ALWAYS(encoding != nil, @\"Can't convert encoding to NSString.\");\n    return encoding;\n}\n\n@interface RXObjCRuntime: NSObject\n\n@property (nonatomic, assign) pthread_mutex_t lock;\n\n@property (nonatomic, strong) NSMutableSet<NSValue *> *classesThatSupportObservingByForwarding;\n@property (nonatomic, strong) NSMutableDictionary<NSValue *, NSMutableSet<NSValue*> *> *forwardedSelectorsByClass;\n\n@property (nonatomic, strong) NSMutableDictionary<NSValue *, Class> *dynamicSubclassByRealClass;\n@property (nonatomic, strong) NSMutableDictionary<NSValue *, NSMutableDictionary<NSValue*, NSValue *>*> *interceptorIMPbySelectorsByClass;\n\n+(RXObjCRuntime*)instance;\n\n-(void)performLocked:(void (^)(RXObjCRuntime* __nonnull))action;\n-(IMP __nullable)ensurePrepared:(id __nonnull)target forObserving:(SEL __nonnull)selector error:(NSErrorParam)error;\n-(BOOL)ensureSwizzledSelector:(SEL __nonnull)selector\n                      ofClass:(Class __nonnull)class\n   newImplementationGenerator:(IMP(^)(void))newImplementationGenerator\nreplacementImplementationGenerator:(IMP (^)(IMP originalImplementation))replacementImplementationGenerator\n                        error:(NSErrorParam)error;\n\n\n+(void)registerOptimizedObserver:(RXInterceptWithOptimizedObserver)registration encodedAs:(SEL)selector;\n\n@end\n\n/**\n All API methods perform work on locked instance of `RXObjCRuntime`. In that way it's easy to prove\n that every action is properly locked.\n */\nIMP __nullable RX_ensure_observing(id __nonnull target, SEL __nonnull selector, NSErrorParam error) {\n    __block IMP targetImplementation = nil;\n    // Target is the second object that needs to be synchronized to TRY to make sure other swizzling framework\n    // won't do something in parallel.\n    // Even though this is too fine grained locking and more coarse grained locks should exist, this is just in case\n    // someone calls this method directly without any external lock.\n    @synchronized(target) {\n        // The only other resource that all other swizzling libraries have in common without introducing external\n        // dependencies is class object.\n        //\n        // It is polite to try to synchronize it in hope other unknown entities will also attempt to do so.\n        // It's like trying to figure out how to communicate with aliens without actually communicating,\n        // save for the fact that aliens are people, programmers, authors of swizzling libraries.\n        @synchronized([target class]) {\n            [[RXObjCRuntime instance] performLocked:^(RXObjCRuntime * __nonnull self) {\n                targetImplementation = [self ensurePrepared:target\n                                               forObserving:selector\n                                                      error:error];\n            }];\n        }\n    }\n\n    return targetImplementation;\n}\n\n// bodies\n\n#define FORWARD_BODY(invocation)                        if (RX_forward_invocation(self, NAME_CAT(_, 0, invocation))) { return; }\n\n#define RESPONDS_TO_SELECTOR_BODY(selector)             if (RX_responds_to_selector(self, NAME_CAT(_, 0, selector))) return YES;\n\n#define CLASS_BODY(...)                                 return actAsClass;\n\n#define METHOD_SIGNATURE_FOR_SELECTOR_BODY(selector)                                            \\\n    NSMethodSignatureRef methodSignature = RX_method_signature(self, NAME_CAT(_, 0, selector)); \\\n    if (methodSignature != nil) {                                                               \\\n        return methodSignature;                                                                 \\\n    }\n\n#define DEALLOCATING_BODY(...)                                                        \\\n    id<RXDeallocatingObserver> observer = objc_getAssociatedObject(self, rxSelector); \\\n    if (observer != nil && observer.targetImplementation == thisIMP) {                \\\n        [observer deallocating];                                                      \\\n    }\n\n#define OBSERVE_BODY(...)                                                              \\\n    id<RXMessageSentObserver> observer = objc_getAssociatedObject(self, rxSelector);   \\\n                                                                                       \\\n    if (observer != nil && observer.targetImplementation == thisIMP) {                 \\\n        [observer messageSentWithArguments:@[COMMA_DELIMITED_ARGUMENTS(__VA_ARGS__)]]; \\\n    }                                                                                  \\\n\n\n#define OBSERVE_INVOKED_BODY(...)                                                        \\\n    if (observer != nil && observer.targetImplementation == thisIMP) {                   \\\n        [observer methodInvokedWithArguments:@[COMMA_DELIMITED_ARGUMENTS(__VA_ARGS__)]]; \\\n    }                                                                                    \\\n\n\n#define BUILD_ARG_WRAPPER(type)                   RX_ARG_ ## type                                                     //RX_ARG_ ## type\n\n#define CAT(_1, _2, head, tail)                   RX_CAT2(head, tail)\n#define SEPARATE_BY_COMMA(_1, _2, head, tail)     head, tail\n#define SEPARATE_BY_SPACE(_1, _2, head, tail)     head tail\n#define SEPARATE_BY_UNDERSCORE(head, tail)        RX_CAT2(RX_CAT2(head, _), tail)\n\n#define UNDERSCORE_TYPE_CAT(_1, index, type)      RX_CAT2(_, type)                                                    // generates -> _type\n#define NAME_CAT(_1, index, type)                 SEPARATE_BY_UNDERSCORE(type, index)                                 // generates -> type_0\n#define TYPE_AND_NAME_CAT(_1, index, type)        type SEPARATE_BY_UNDERSCORE(type, index)                            // generates -> type type_0\n#define NOT_NULL_ARGUMENT_CAT(_1, index, type)    BUILD_ARG_WRAPPER(type)(NAME_CAT(_1, index, type))                  // generates -> ((id)(type_0) ?: [NSNull null])\n#define EXAMPLE_PARAMETER(_1, index, type)        RX_CAT2(_, type):(type)SEPARATE_BY_UNDERSCORE(type, index)          // generates -> _type:(type)type_0\n#define SELECTOR_PART(_1, index, type)            RX_CAT2(_, type:)                                                   // generates -> _type:\n\n#define COMMA_DELIMITED_ARGUMENTS(...)            RX_FOREACH(_, SEPARATE_BY_COMMA, NOT_NULL_ARGUMENT_CAT, ## __VA_ARGS__)\n#define ARGUMENTS(...)                            RX_FOREACH_COMMA(_, NAME_CAT, ## __VA_ARGS__)\n#define DECLARE_ARGUMENTS(...)                    RX_FOREACH_COMMA(_, TYPE_AND_NAME_CAT, ## __VA_ARGS__)\n\n// optimized observe methods\n\n#define GENERATE_SELECTOR_IDENTIFIER(...)         RX_CAT2(exampleSelector, RX_FOREACH(_, CAT, UNDERSCORE_TYPE_CAT, ## __VA_ARGS__))\n\n#define GENERATE_METHOD_IDENTIFIER(...)           RX_CAT2(swizzle, RX_FOREACH(_, CAT, UNDERSCORE_TYPE_CAT, ## __VA_ARGS__))\n\n#define GENERATE_OBSERVE_METHOD_DECLARATION(...)                                 \\\n    -(BOOL)GENERATE_METHOD_IDENTIFIER(__VA_ARGS__):(Class __nonnull)class        \\\n                                          selector:(SEL)selector                 \\\n                                             error:(NSErrorParam)error {         \\\n\n\n#define BUILD_EXAMPLE_METHOD(return_value, ...) \\\n    +(return_value)RX_CAT2(RX_CAT2(example_, return_value), RX_FOREACH(_, SEPARATE_BY_SPACE, EXAMPLE_PARAMETER, ## __VA_ARGS__)) {}\n\n#define BUILD_EXAMPLE_METHOD_SELECTOR(return_value, ...) \\\n    RX_CAT2(RX_CAT2(example_, return_value), RX_FOREACH(_, SEPARATE_BY_SPACE, SELECTOR_PART, ## __VA_ARGS__))\n\n#define SWIZZLE_OBSERVE_METHOD_DEFINITIONS(return_value, ...) \\\n    BUILD_EXAMPLE_METHOD(return_value, ## __VA_ARGS__)                                                                                                  \\\n    SWIZZLE_METHOD(return_value, GENERATE_OBSERVE_METHOD_DECLARATION(return_value, ## __VA_ARGS__), OBSERVE_BODY, OBSERVE_INVOKED_BODY, ## __VA_ARGS__) \\\n\n#define SWIZZLE_OBSERVE_METHOD_BODY(return_value, ...)                                                                                                       \\\n       __unused SEL GENERATE_SELECTOR_IDENTIFIER(return_value, ## __VA_ARGS__) = @selector(BUILD_EXAMPLE_METHOD_SELECTOR(return_value, ## __VA_ARGS__));                                           \\\n       [self registerOptimizedObserver:^BOOL(RXObjCRuntime * __nonnull self, Class __nonnull class,                                                     \\\n            SEL __nonnull selector, NSErrorParam error) {                                                                                               \\\n            return [self GENERATE_METHOD_IDENTIFIER(return_value, ## __VA_ARGS__):class selector:selector error:error];                                 \\\n       } encodedAs:GENERATE_SELECTOR_IDENTIFIER(return_value, ## __VA_ARGS__)];                                                                                                                    \\\n\n// infrastructure method\n\n#define NO_BODY(...)\n\n#define SWIZZLE_INFRASTRUCTURE_METHOD(return_value, method_name, parameters, method_selector, body, ...)               \\\n    SWIZZLE_METHOD(return_value, -(BOOL)method_name:(Class __nonnull)class parameters error:(NSErrorParam)error        \\\n        {                                                                                                              \\\n            SEL selector = method_selector; , body, NO_BODY, __VA_ARGS__)                                              \\\n\n\n// common base\n\n#define SWIZZLE_METHOD(return_value, method_prototype, body, invoked_body, ...)                                          \\\nmethod_prototype                                                                                                         \\\n    __unused SEL rxSelector = RX_selector(selector);                                                                     \\\n    IMP (^newImplementationGenerator)(void) = ^() {                                                                      \\\n        __block IMP thisIMP = nil;                                                                                       \\\n        id newImplementation = ^return_value(__unsafe_unretained id self DECLARE_ARGUMENTS(__VA_ARGS__)) {               \\\n            body(__VA_ARGS__)                                                                                            \\\n                                                                                                                         \\\n            struct objc_super superInfo = {                                                                              \\\n                .receiver = self,                                                                                        \\\n                .super_class = class_getSuperclass(class)                                                                \\\n            };                                                                                                           \\\n                                                                                                                         \\\n            return_value (*msgSend)(struct objc_super *, SEL DECLARE_ARGUMENTS(__VA_ARGS__))                             \\\n                = (__typeof__(msgSend))objc_msgSendSuper;                                                                \\\n            @try {                                                                                                       \\\n              return msgSend(&superInfo, selector ARGUMENTS(__VA_ARGS__));                                               \\\n            }                                                                                                            \\\n            @finally { invoked_body(__VA_ARGS__) }                                                                       \\\n        };                                                                                                               \\\n                                                                                                                         \\\n        thisIMP = imp_implementationWithBlock(newImplementation);                                                        \\\n        return thisIMP;                                                                                                  \\\n    };                                                                                                                   \\\n                                                                                                                         \\\n    IMP (^replacementImplementationGenerator)(IMP) = ^(IMP originalImplementation) {                                     \\\n        __block return_value (*originalImplementationTyped)(__unsafe_unretained id, SEL DECLARE_ARGUMENTS(__VA_ARGS__) ) \\\n            = (__typeof__(originalImplementationTyped))(originalImplementation);                                         \\\n                                                                                                                         \\\n        __block IMP thisIMP = nil;                                                                                       \\\n        id implementationReplacement = ^return_value(__unsafe_unretained id self DECLARE_ARGUMENTS(__VA_ARGS__) ) {      \\\n            body(__VA_ARGS__)                                                                                            \\\n            @try {                                                                                                       \\\n                return originalImplementationTyped(self, selector ARGUMENTS(__VA_ARGS__));                               \\\n            }                                                                                                            \\\n            @finally { invoked_body(__VA_ARGS__) }                                                                       \\\n        };                                                                                                               \\\n                                                                                                                         \\\n        thisIMP = imp_implementationWithBlock(implementationReplacement);                                                \\\n        return thisIMP;                                                                                                  \\\n    };                                                                                                                   \\\n                                                                                                                         \\\n    return [self ensureSwizzledSelector:selector                                                                         \\\n                                ofClass:class                                                                            \\\n             newImplementationGenerator:newImplementationGenerator                                                       \\\n     replacementImplementationGenerator:replacementImplementationGenerator                                               \\\n                                  error:error];                                                                          \\\n }                                                                                                                       \\\n\n\n@interface RXObjCRuntime (InfrastructureMethods)\n@end\n\n// MARK: Infrastructure Methods\n\n@implementation RXObjCRuntime (InfrastructureMethods)\n\nSWIZZLE_INFRASTRUCTURE_METHOD(\n    void,\n    swizzleForwardInvocation,\n    ,\n    @selector(forwardInvocation:),\n    FORWARD_BODY,\n    NSInvocationRef\n)\nSWIZZLE_INFRASTRUCTURE_METHOD(\n    BOOL,\n    swizzleRespondsToSelector,\n    ,\n    @selector(respondsToSelector:),\n    RESPONDS_TO_SELECTOR_BODY,\n    SEL\n)\nSWIZZLE_INFRASTRUCTURE_METHOD(\n    Class __nonnull,\n    swizzleClass,\n    toActAs:(Class)actAsClass,\n    @selector(class),\n    CLASS_BODY\n)\nSWIZZLE_INFRASTRUCTURE_METHOD(\n    NSMethodSignatureRef,\n    swizzleMethodSignatureForSelector,\n    ,\n    @selector(methodSignatureForSelector:),\n    METHOD_SIGNATURE_FOR_SELECTOR_BODY,\n    SEL\n)\nSWIZZLE_INFRASTRUCTURE_METHOD(\n    void,\n    swizzleDeallocating,\n    ,\n    deallocSelector,\n    DEALLOCATING_BODY\n)\n\n@end\n\n// MARK: Optimized intercepting methods for specific combination of parameter types\n\n@interface RXObjCRuntime (swizzle)\n\n@end\n\n@implementation RXObjCRuntime(swizzle)\n\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void)\n\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, char)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, short)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, int)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, long)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, rx_uchar)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, rx_ushort)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, rx_uint)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, rx_ulong)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, rx_block)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, float)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, double)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, SEL)\n\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, id)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, char)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, short)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, int)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, long)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, rx_uchar)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, rx_ushort)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, rx_uint)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, rx_ulong)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, rx_block)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, float)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, double)\nSWIZZLE_OBSERVE_METHOD_DEFINITIONS(void, id, SEL)\n\n+(void)load {\n    SWIZZLE_OBSERVE_METHOD_BODY(void)\n\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, char)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, short)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, int)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, long)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, rx_uchar)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, rx_ushort)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, rx_uint)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, rx_ulong)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, rx_block)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, float)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, double)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, SEL)\n\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, id)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, char)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, short)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, int)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, long)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, rx_uchar)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, rx_ushort)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, rx_uint)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, rx_ulong)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, rx_block)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, float)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, double)\n    SWIZZLE_OBSERVE_METHOD_BODY(void, id, SEL)\n}\n\n@end\n\n// MARK: RXObjCRuntime\n\n@implementation RXObjCRuntime\n\nstatic RXObjCRuntime *_instance = nil;\nstatic NSMutableDictionary<NSString *, RXInterceptWithOptimizedObserver> *optimizedObserversByMethodEncoding = nil;\n\n+(RXObjCRuntime*)instance {\n    return _instance;\n}\n\n+(void)initialize {\n    _instance = [[RXObjCRuntime alloc] init];\n    defaultTypeID = CFGetTypeID((CFTypeRef)RXObjCRuntime.class); // just need a reference of some object not from CF\n    deallocSelector = NSSelectorFromString(@\"dealloc\");\n    NSAssert(_instance != nil, @\"Failed to initialize swizzling\");\n}\n\n-(instancetype)init {\n    self = [super init];\n    if (!self) return nil;\n\n    self.classesThatSupportObservingByForwarding = [NSMutableSet set];\n    self.forwardedSelectorsByClass = [NSMutableDictionary dictionary];\n\n    self.dynamicSubclassByRealClass = [NSMutableDictionary dictionary];\n    self.interceptorIMPbySelectorsByClass = [NSMutableDictionary dictionary];\n\n    pthread_mutexattr_t lock_attr;\n    pthread_mutexattr_init(&lock_attr);\n    pthread_mutexattr_settype(&lock_attr, PTHREAD_MUTEX_RECURSIVE);\n    pthread_mutex_init(&_lock, &lock_attr);\n    pthread_mutexattr_destroy(&lock_attr);\n    \n    return self;\n}\n\n-(void)performLocked:(void (^)(RXObjCRuntime* __nonnull))action {\n    pthread_mutex_lock(&_lock);\n    action(self);\n    pthread_mutex_unlock(&_lock);\n}\n\n+(void)registerOptimizedObserver:(RXInterceptWithOptimizedObserver)registration encodedAs:(SEL)selector {\n    Method exampleEncodingMethod = class_getClassMethod(self, selector);\n    ALWAYS(exampleEncodingMethod != nil, @\"Example encoding method is nil.\");\n\n    NSString *methodEncoding = RX_method_encoding(exampleEncodingMethod);\n\n    if (optimizedObserversByMethodEncoding == nil) {\n        optimizedObserversByMethodEncoding = [NSMutableDictionary dictionary];\n    }\n\n    DLOG(@\"Added optimized method: %@ (%@)\", methodEncoding, NSStringFromSelector(selector));\n    ALWAYS(optimizedObserversByMethodEncoding[methodEncoding] == nil, @\"Optimized observer already registered\")\n    optimizedObserversByMethodEncoding[methodEncoding] = registration;\n}\n\n/**\n This is the main entry point for observing messages sent to arbitrary objects.\n */\n-(IMP __nullable)ensurePrepared:(id __nonnull)target forObserving:(SEL __nonnull)selector error:(NSErrorParam)error {\n    Method instanceMethod = class_getInstanceMethod([target class], selector);\n    if (instanceMethod == nil) {\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorSelectorNotImplemented\n                                       userInfo:nil], nil);\n    }\n\n    if (selector == @selector(class)\n    ||  selector == @selector(forwardingTargetForSelector:)\n    ||  selector == @selector(methodSignatureForSelector:)\n    ||  selector == @selector(respondsToSelector:)) {\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorObservingPerformanceSensitiveMessages\n                                       userInfo:nil], nil);\n    }\n\n    // For `dealloc` message, original implementation will be swizzled.\n    // This is a special case because observing `dealloc` message is performed when `observeWeakly` is used.\n    //\n    // Some toll free bridged classes don't handle `object_setClass` well and cause crashes.\n    //\n    // To make `deallocating` as robust as possible, original implementation will be replaced.\n    if (selector == deallocSelector) {\n        Class __nonnull deallocSwizzingTarget = [target class];\n        IMP interceptorIMPForSelector = [self interceptorImplementationForSelector:selector forClass:deallocSwizzingTarget];\n        if (interceptorIMPForSelector != nil) {\n            return interceptorIMPForSelector;\n        }\n\n        if (![self swizzleDeallocating:deallocSwizzingTarget error:error]) {\n            return nil;\n        }\n\n        interceptorIMPForSelector = [self interceptorImplementationForSelector:selector forClass:deallocSwizzingTarget];\n        if (interceptorIMPForSelector != nil) {\n            return interceptorIMPForSelector;\n        }\n    }\n    else {\n        Class __nullable swizzlingImplementorClass = [self prepareTargetClassForObserving:target error:error];\n        if (swizzlingImplementorClass == nil) {\n            return nil;\n        }\n\n        NSString *methodEncoding = RX_method_encoding(instanceMethod);\n        RXInterceptWithOptimizedObserver optimizedIntercept = optimizedObserversByMethodEncoding[methodEncoding];\n\n        if (!RX_method_has_supported_return_type(instanceMethod)) {\n            RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                               code:RXObjCRuntimeErrorObservingMessagesWithUnsupportedReturnType\n                                           userInfo:nil], nil);\n        }\n\n        // optimized interception method\n        if (optimizedIntercept != nil) {\n            IMP interceptorIMPForSelector = [self interceptorImplementationForSelector:selector forClass:swizzlingImplementorClass];\n            if (interceptorIMPForSelector != nil) {\n                return interceptorIMPForSelector;\n            }\n\n            if (!optimizedIntercept(self, swizzlingImplementorClass, selector, error)) {\n                return nil;\n            }\n\n            interceptorIMPForSelector = [self interceptorImplementationForSelector:selector forClass:swizzlingImplementorClass];\n            if (interceptorIMPForSelector != nil) {\n                return interceptorIMPForSelector;\n            }\n        }\n        // default fallback to observing by forwarding messages\n        else {\n            if ([self forwardingSelector:selector forClass:swizzlingImplementorClass]) {\n                return RX_default_target_implementation();\n            }\n\n            if (![self observeByForwardingMessages:swizzlingImplementorClass\n                                          selector:selector\n                                            target:target\n                                             error:error]) {\n                return nil;\n            }\n\n            if ([self forwardingSelector:selector forClass:swizzlingImplementorClass]) {\n                return RX_default_target_implementation();\n            }\n        }\n    }\n\n    RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                       code:RXObjCRuntimeErrorUnknown\n                                   userInfo:nil], nil);\n}\n\n-(Class __nullable)prepareTargetClassForObserving:(id __nonnull)target error:(NSErrorParam)error {\n    Class swizzlingClass = objc_getAssociatedObject(target, &RxSwizzlingTargetClassKey);\n    if (swizzlingClass != nil) {\n        return swizzlingClass;\n    }\n\n    Class __nonnull wannaBeClass = [target class];\n    /**\n     Core Foundation classes are usually toll free bridged. Those classes crash the program in case\n     `object_setClass` is performed on them.\n\n     There is a possibility to just swizzle methods on original object, but since those won't be usual use\n     cases for this library, then an error will just be reported for now.\n     */\n    BOOL isThisTollFreeFoundationClass = CFGetTypeID((CFTypeRef)target) != defaultTypeID;\n\n    if (isThisTollFreeFoundationClass) {\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorCantInterceptCoreFoundationTollFreeBridgedObjects\n                                       userInfo:nil], nil);\n    }\n\n    /**\n     If the object is reporting a different class then what it's real class, that means that there is probably\n     already some interception mechanism in place or something weird is happening.\n     \n     Most common case when this would happen is when using KVO (`observe`) and `sentMessage`.\n\n     This error is easily resolved by just using `sentMessage` observing before `observe`.\n     \n     The reason why other way around could create issues is because KVO will unregister it's interceptor \n     class and restore original class. Unfortunately that will happen no matter was there another interceptor\n     subclass registered in hierarchy or not.\n     \n     Failure scenario:\n     * KVO sets class to be `__KVO__OriginalClass` (subclass of `OriginalClass`)\n     * `sentMessage` sets object class to be `_RX_namespace___KVO__OriginalClass` (subclass of `__KVO__OriginalClass`)\n     * then unobserving with KVO will restore class to be `OriginalClass` -> failure point\n\n     The reason why changing order of observing works is because any interception method should return\n     object's original real class (if that doesn't happen then it's really easy to argue that's a bug\n     in that other library).\n     \n     This library won't remove registered interceptor even if there aren't any observers left because\n     it's highly unlikely it would have any benefit in real world use cases, and it's even more\n     dangerous.\n     */\n    if ([target class] != object_getClass(target)) {\n        BOOL isKVO = [target respondsToSelector:NSSelectorFromString(@\"_isKVOA\")];\n\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorObjectMessagesAlreadyBeingIntercepted\n                                       userInfo:@{\n                                                  RXObjCRuntimeErrorIsKVOKey : @(isKVO)\n                                                  }], nil);\n    }\n\n    Class __nullable dynamicFakeSubclass = [self ensureHasDynamicFakeSubclass:wannaBeClass error:error];\n\n    if (dynamicFakeSubclass == nil) {\n        return nil;\n    }\n\n    Class previousClass = object_setClass(target, dynamicFakeSubclass);\n    if (previousClass != wannaBeClass) {\n        THREADING_HAZARD(wannaBeClass);\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorThreadingCollisionWithOtherInterceptionMechanism\n                                       userInfo:nil], nil);\n    }\n\n    objc_setAssociatedObject(target, &RxSwizzlingTargetClassKey, dynamicFakeSubclass, OBJC_ASSOCIATION_RETAIN_NONATOMIC);\n    return dynamicFakeSubclass;\n}\n\n\n-(BOOL)forwardingSelector:(SEL)selector forClass:(Class __nonnull)class {\n    return [self.forwardedSelectorsByClass[CLASS_VALUE(class)] containsObject:SEL_VALUE(selector)];\n}\n\n-(void)registerForwardedSelector:(SEL)selector forClass:(Class __nonnull)class {\n    NSValue *classValue = CLASS_VALUE(class);\n\n    NSMutableSet<NSValue *> *forwardedSelectors = self.forwardedSelectorsByClass[classValue];\n\n    if (forwardedSelectors == nil) {\n        forwardedSelectors = [NSMutableSet set];\n        self.forwardedSelectorsByClass[classValue] = forwardedSelectors;\n    }\n\n    [forwardedSelectors addObject:SEL_VALUE(selector)];\n}\n\n-(BOOL)observeByForwardingMessages:(Class __nonnull)swizzlingImplementorClass\n                          selector:(SEL)selector\n                            target:(id __nonnull)target\n                             error:(NSErrorParam)error {\n    if (![self ensureForwardingMethodsAreSwizzled:swizzlingImplementorClass error:error]) {\n        return NO;\n    }\n\n    ALWAYS(![self forwardingSelector:selector forClass:swizzlingImplementorClass], @\"Already observing selector for class\");\n\n#if TRACE_RESOURCES\n    atomic_fetch_add(&numberOfForwardedMethods, 1);\n#endif\n    SEL rxSelector = RX_selector(selector);\n\n    Method instanceMethod = class_getInstanceMethod(swizzlingImplementorClass, selector);\n    ALWAYS(instanceMethod != nil, @\"Instance method is nil\");\n\n    const char* methodEncoding = method_getTypeEncoding(instanceMethod);\n    ALWAYS(methodEncoding != nil, @\"Method encoding is nil.\");\n    NSMethodSignature *methodSignature = [NSMethodSignature signatureWithObjCTypes:methodEncoding];\n    ALWAYS(methodSignature != nil, @\"Method signature is invalid.\");\n\n    IMP implementation = method_getImplementation(instanceMethod);\n\n    if (implementation == nil) {\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorSelectorNotImplemented\n                                       userInfo:nil], NO);\n    }\n\n    if (!class_addMethod(swizzlingImplementorClass, rxSelector, implementation, methodEncoding)) {\n        RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                           code:RXObjCRuntimeErrorSavingOriginalForwardingMethodFailed\n                                       userInfo:nil], NO);\n    }\n\n    if (!class_addMethod(swizzlingImplementorClass, selector, _objc_msgForward, methodEncoding)) {\n        if (implementation != method_setImplementation(instanceMethod, _objc_msgForward)) {\n            THREADING_HAZARD(swizzlingImplementorClass);\n            RX_THROW_ERROR([NSError errorWithDomain:RXObjCRuntimeErrorDomain\n                                               code:RXObjCRuntimeErrorReplacingMethodWithForwardingImplementation\n                                           userInfo:nil], NO);\n        }\n    }\n\n    DLOG(@\"Rx uses forwarding to observe `%@` for `%@`.\", NSStringFromSelector(selector), swizzlingImplementorClass);\n    [self registerForwardedSelector:selector forClass:swizzlingImplementorClass];\n\n    return YES;\n}\n\n/**\n If object don't have some weird behavior, claims it's the same class that runtime shows,\n then dynamic subclass is created (only this instance will have performance hit).\n \n In case something weird is detected, then original base class is being swizzled and all instances\n will have somewhat reduced performance.\n \n This is especially handy optimization for weak KVO. Nobody will swizzle for example `NSString`,\n but to know when instance of a `NSString` was deallocated, performance hit will be only felt on a \n single instance of `NSString`, not all instances of `NSString`s.\n */\n-(Class __nullable)ensureHasDynamicFakeSubclass:(Class __nonnull)class error:(NSErrorParam)error {\n    Class dynamicFakeSubclass = self.dynamicSubclassByRealClass[CLASS_VALUE(class)];\n    if (dynamicFakeSubclass != nil) {\n        return dynamicFakeSubclass;\n    }\n\n    NSString *dynamicFakeSubclassName = [RX_PREFIX stringByAppendingString:NSStringFromClass(class)];\n    const char *dynamicFakeSubclassNameRaw = dynamicFakeSubclassName.UTF8String;\n    dynamicFakeSubclass = objc_allocateClassPair(class, dynamicFakeSubclassNameRaw, 0);\n    ALWAYS(dynamicFakeSubclass != nil, @\"Class not generated\");\n\n    if (![self swizzleClass:dynamicFakeSubclass toActAs:class error:error]) {\n        return nil;\n    }\n\n    objc_registerClassPair(dynamicFakeSubclass);\n\n    [self.dynamicSubclassByRealClass setObject:dynamicFakeSubclass forKey:CLASS_VALUE(class)];\n    ALWAYS(self.dynamicSubclassByRealClass[CLASS_VALUE(class)] != nil, @\"Class not registered\");\n\n    return dynamicFakeSubclass;\n}\n\n-(BOOL)ensureForwardingMethodsAreSwizzled:(Class __nonnull)class error:(NSErrorParam)error {\n    NSValue *classValue = CLASS_VALUE(class);\n    if ([self.classesThatSupportObservingByForwarding containsObject:classValue]) {\n        return YES;\n    }\n\n    if (![self swizzleForwardInvocation:class error:error]) { return NO; }\n    if (![self swizzleMethodSignatureForSelector:class error:error]) { return NO; }\n    if (![self swizzleRespondsToSelector:class error:error]) { return NO; }\n\n    [self.classesThatSupportObservingByForwarding addObject:classValue];\n\n    return YES;\n}\n\n-(void)registerInterceptedSelector:(SEL)selector implementation:(IMP)implementation forClass:(Class)class {\n    NSValue * __nonnull classValue = CLASS_VALUE(class);\n    NSValue * __nonnull selectorValue = SEL_VALUE(selector);\n\n    NSMutableDictionary *swizzledIMPBySelectorsForClass = self.interceptorIMPbySelectorsByClass[classValue];\n\n    if (swizzledIMPBySelectorsForClass == nil) {\n        swizzledIMPBySelectorsForClass = [NSMutableDictionary dictionary];\n        self.interceptorIMPbySelectorsByClass[classValue] = swizzledIMPBySelectorsForClass;\n    }\n\n    swizzledIMPBySelectorsForClass[selectorValue] = IMP_VALUE(implementation);\n\n    ALWAYS([self interceptorImplementationForSelector:selector forClass:class] != nil, @\"Class should have been swizzled\");\n}\n\n-(IMP)interceptorImplementationForSelector:(SEL)selector forClass:(Class)class {\n    NSValue * __nonnull classValue = CLASS_VALUE(class);\n    NSValue * __nonnull selectorValue = SEL_VALUE(selector);\n\n    NSMutableDictionary *swizzledIMPBySelectorForClass = self.interceptorIMPbySelectorsByClass[classValue];\n\n    NSValue *impValue = swizzledIMPBySelectorForClass[selectorValue];\n    return impValue.pointerValue;\n}\n\n-(BOOL)ensureSwizzledSelector:(SEL __nonnull)selector\n                      ofClass:(Class __nonnull)class\n   newImplementationGenerator:(IMP(^)(void))newImplementationGenerator\nreplacementImplementationGenerator:(IMP (^)(IMP originalImplementation))replacementImplementationGenerator\n                        error:(NSErrorParam)error {\n    if ([self interceptorImplementationForSelector:selector forClass:class] != nil) {\n        DLOG(@\"Trying to register same intercept at least once, this sounds like a possible bug\");\n        return YES;\n    }\n\n#if TRACE_RESOURCES\n    atomic_fetch_add(&numberOInterceptedMethods, 1);\n#endif\n    \n    DLOG(@\"Rx is swizzling `%@` for `%@`\", NSStringFromSelector(selector), class);\n\n    Method existingMethod = class_getInstanceMethod(class, selector);\n    ALWAYS(existingMethod != nil, @\"Method doesn't exist\");\n\n    const char *encoding = method_getTypeEncoding(existingMethod);\n    ALWAYS(encoding != nil, @\"Encoding is nil\");\n\n    IMP newImplementation = newImplementationGenerator();\n\n    if (class_addMethod(class, selector, newImplementation, encoding)) {\n        // new method added, job done\n        [self registerInterceptedSelector:selector implementation:newImplementation forClass:class];\n\n        return YES;\n    }\n\n    imp_removeBlock(newImplementation);\n\n    // if add fails, that means that method already exists on targetClass\n    Method existingMethodOnTargetClass = existingMethod;\n\n    IMP originalImplementation = method_getImplementation(existingMethodOnTargetClass);\n    ALWAYS(originalImplementation != nil, @\"Method must exist.\");\n    IMP implementationReplacementIMP = replacementImplementationGenerator(originalImplementation);\n    ALWAYS(implementationReplacementIMP != nil, @\"Method must exist.\");\n    IMP originalImplementationAfterChange = method_setImplementation(existingMethodOnTargetClass, implementationReplacementIMP);\n    ALWAYS(originalImplementation != nil, @\"Method must exist.\");\n\n    // If method replacing failed, who knows what happened, better not trying again, otherwise program can get\n    // corrupted.\n    [self registerInterceptedSelector:selector implementation:implementationReplacementIMP forClass:class];\n\n    // ¯\\_(ツ)_/¯\n    if (originalImplementationAfterChange != originalImplementation) {\n        THREADING_HAZARD(class);\n        return NO;\n    }\n\n    return YES;\n}\n\n@end\n\n#if TRACE_RESOURCES\n\nNSInteger RX_number_of_dynamic_subclasses(void) {\n    __block NSInteger count = 0;\n    [[RXObjCRuntime instance] performLocked:^(RXObjCRuntime * __nonnull self) {\n        count = self.dynamicSubclassByRealClass.count;\n    }];\n\n    return count;\n}\n\nNSInteger RX_number_of_forwarding_enabled_classes(void) {\n    __block NSInteger count = 0;\n    [[RXObjCRuntime instance] performLocked:^(RXObjCRuntime * __nonnull self) {\n        count = self.classesThatSupportObservingByForwarding.count;\n    }];\n\n    return count;\n}\n\nNSInteger RX_number_of_intercepting_classes(void) {\n    __block NSInteger count = 0;\n    [[RXObjCRuntime instance] performLocked:^(RXObjCRuntime * __nonnull self) {\n        count = self.interceptorIMPbySelectorsByClass.count;\n    }];\n\n    return count;\n}\n\nNSInteger RX_number_of_forwarded_methods(void) {\n    return numberOfForwardedMethods;\n}\n\nNSInteger RX_number_of_swizzled_methods(void) {\n    return numberOInterceptedMethods;\n}\n\n#endif\n\n#endif\n"
  },
  {
    "path": "RxCocoa/Runtime/include/RxCocoaRuntime.h",
    "content": "//\n//  RxCocoaRuntime.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import \"_RX.h\"\n#import \"_RXDelegateProxy.h\"\n#import \"_RXKVOObserver.h\"\n#import \"_RXObjCRuntime.h\"\n\n//! Project version number for RxCocoa.\nFOUNDATION_EXPORT double RxCocoaVersionNumber;\n\n//! Project version string for RxCocoa.\nFOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];\n"
  },
  {
    "path": "RxCocoa/Runtime/include/_RX.h",
    "content": "//\n//  _RX.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <objc/runtime.h>\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n#if        TRACE_RESOURCES >= 2\n#   define DLOG(...)         NSLog(__VA_ARGS__)\n#else\n#   define DLOG(...)\n#endif\n\n#if        DEBUG\n#   define ABORT_IN_DEBUG    abort();\n#else\n#   define ABORT_IN_DEBUG\n#endif\n\n\n#define SEL_VALUE(x)      [NSValue valueWithPointer:(x)]\n#define CLASS_VALUE(x)    [NSValue valueWithNonretainedObject:(x)]\n#define IMP_VALUE(x)      [NSValue valueWithPointer:(x)]\n\n/**\n Checks that the local `error` instance exists before assigning it's value by reference.\n This macro exists to work around static analysis warnings — `NSError` is always assumed to be `nullable`, even though we explicitly define the method parameter as `nonnull`. See http://www.openradar.me/21766176 for more details.\n */\n#define RX_THROW_ERROR(errorValue, returnValue) if (error != nil) { *error = (errorValue); } return (returnValue);\n\n#define RX_CAT2(_1, _2) _RX_CAT2(_1, _2)\n#define _RX_CAT2(_1, _2) _1 ## _2\n\n#define RX_ELEMENT_AT(n, ...) RX_CAT2(_RX_ELEMENT_AT_, n)(__VA_ARGS__)\n#define _RX_ELEMENT_AT_0(x, ...) x\n#define _RX_ELEMENT_AT_1(_0, x, ...) x\n#define _RX_ELEMENT_AT_2(_0, _1, x, ...) x\n#define _RX_ELEMENT_AT_3(_0, _1, _2, x, ...) x\n#define _RX_ELEMENT_AT_4(_0, _1, _2, _3, x, ...) x\n#define _RX_ELEMENT_AT_5(_0, _1, _2, _3, _4, x, ...) x\n#define _RX_ELEMENT_AT_6(_0, _1, _2, _3, _4, _5, x, ...) x\n\n#define RX_COUNT(...) RX_ELEMENT_AT(6, ## __VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)\n#define RX_EMPTY(...) RX_ELEMENT_AT(6, ## __VA_ARGS__, 0, 0, 0, 0, 0, 0, 1)\n\n/**\n #define SUM(context, index, head, tail) head + tail\n #define MAP(context, index, element) (context)[index] * (element)\n\n RX_FOR(numbers, SUM, MAP, b0, b1, b2);\n\n (numbers)[0] * (b0) + (numbers)[1] * (b1) + (numbers[2]) * (b2)\n */\n\n#define RX_FOREACH(context, concat, map, ...) RX_FOR_MAX(RX_COUNT(__VA_ARGS__), _RX_FOREACH_CONCAT, _RX_FOREACH_MAP, context, concat, map, __VA_ARGS__)\n#define _RX_FOREACH_CONCAT(index, head, tail, context, concat, map, ...) concat(context, index, head, tail)\n#define _RX_FOREACH_MAP(index, context, concat, map, ...) map(context, index, RX_ELEMENT_AT(index, __VA_ARGS__))\n\n/**\n #define MAP(context, index, item) (context)[index] * (item)\n\n RX_FOR_COMMA(numbers, MAP, b0, b1);\n\n ,(numbers)[0] * b0, (numbers)[1] * b1\n */\n#define RX_FOREACH_COMMA(context, map, ...) RX_CAT2(_RX_FOREACH_COMMA_EMPTY_, RX_EMPTY(__VA_ARGS__))(context, map, ## __VA_ARGS__)\n#define _RX_FOREACH_COMMA_EMPTY_1(context, map, ...)\n#define _RX_FOREACH_COMMA_EMPTY_0(context, map, ...) , RX_FOR_MAX(RX_COUNT(__VA_ARGS__), _RX_FOREACH_COMMA_CONCAT, _RX_FOREACH_COMMA_MAP, context, map, __VA_ARGS__)\n#define _RX_FOREACH_COMMA_CONCAT(index, head, tail, context, map, ...) head, tail\n#define _RX_FOREACH_COMMA_MAP(index, context, map, ...) map(context, index, RX_ELEMENT_AT(index, __VA_ARGS__))\n\n// rx for\n\n#define RX_FOR_MAX(max, concat, map, ...) RX_CAT2(RX_FOR_, max)(concat, map, ## __VA_ARGS__)\n\n#define RX_FOR_0(concat, map, ...)\n#define RX_FOR_1(concat, map, ...) map(0, __VA_ARGS__)\n#define RX_FOR_2(concat, map, ...) concat(1, RX_FOR_1(concat, map, ## __VA_ARGS__), map(1, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_3(concat, map, ...) concat(2, RX_FOR_2(concat, map, ## __VA_ARGS__), map(2, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_4(concat, map, ...) concat(3, RX_FOR_3(concat, map, ## __VA_ARGS__), map(3, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_5(concat, map, ...) concat(4, RX_FOR_4(concat, map, ## __VA_ARGS__), map(4, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_6(concat, map, ...) concat(5, RX_FOR_5(concat, map, ## __VA_ARGS__), map(5, __VA_ARGS__), __VA_ARGS__)\n\n"
  },
  {
    "path": "RxCocoa/Runtime/include/_RXDelegateProxy.h",
    "content": "//\n//  _RXDelegateProxy.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface _RXDelegateProxy : NSObject\n\n@property (nonatomic, weak, readonly) id _forwardToDelegate;\n\n-(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ;\n\n-(BOOL)hasWiredImplementationForSelector:(SEL)selector;\n-(BOOL)voidDelegateMethodsContain:(SEL)selector;\n\n-(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments;\n-(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "RxCocoa/Runtime/include/_RXKVOObserver.h",
    "content": "//\n//  _RXKVOObserver.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n// Exists because if written in Swift, reading unowned is disabled during dealloc process\n@interface _RXKVOObserver : NSObject\n\n-(instancetype)initWithTarget:(id)target\n                 retainTarget:(BOOL)retainTarget\n                      keyPath:(NSString*)keyPath\n                      options:(NSKeyValueObservingOptions)options\n                     callback:(void (^)(id))callback;\n\n-(void)dispose;\n\n@end\n"
  },
  {
    "path": "RxCocoa/Runtime/include/_RXObjCRuntime.h",
    "content": "//\n//  _RXObjCRuntime.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n#if !DISABLE_SWIZZLING\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n/**\n This flag controls `RELEASE` configuration behavior in case race was detecting while modifying\n ObjC runtime.\n\n In case this value is set to `YES`, after runtime race is detected, `abort()` will be called.\n Otherwise, only error will be reported using normal error reporting mechanism.\n\n In `DEBUG` mode `abort` will be always called in case race is detected.\n \n Races can't happen in case this is the only library modifying ObjC runtime, but in case there are multiple libraries\n changing ObjC runtime, race conditions can occur because there is no way to synchronize multiple libraries unaware of\n each other.\n\n To help remedy this situation this library will use `synchronized` on target object and it's meta-class, but\n there aren't any guarantees of how other libraries will behave.\n\n Default value is `NO`.\n\n */\nextern BOOL RXAbortOnThreadingHazard;\n\n/// Error domain for RXObjCRuntime.\nextern NSString * __nonnull const RXObjCRuntimeErrorDomain;\n\n/// `userInfo` key with additional information is interceptor probably KVO.\nextern NSString * __nonnull const RXObjCRuntimeErrorIsKVOKey;\n\ntypedef NS_ENUM(NSInteger, RXObjCRuntimeError) {\n    RXObjCRuntimeErrorUnknown                                           = 1,\n    RXObjCRuntimeErrorObjectMessagesAlreadyBeingIntercepted             = 2,\n    RXObjCRuntimeErrorSelectorNotImplemented                            = 3,\n    RXObjCRuntimeErrorCantInterceptCoreFoundationTollFreeBridgedObjects = 4,\n    RXObjCRuntimeErrorThreadingCollisionWithOtherInterceptionMechanism  = 5,\n    RXObjCRuntimeErrorSavingOriginalForwardingMethodFailed              = 6,\n    RXObjCRuntimeErrorReplacingMethodWithForwardingImplementation       = 7,\n    RXObjCRuntimeErrorObservingPerformanceSensitiveMessages             = 8,\n    RXObjCRuntimeErrorObservingMessagesWithUnsupportedReturnType        = 9,\n};\n\n/// Transforms normal selector into a selector with RX prefix.\nSEL _Nonnull RX_selector(SEL _Nonnull selector);\n\n/// Transforms selector into a unique pointer (because of Swift conversion rules)\nvoid * __nonnull RX_reference_from_selector(SEL __nonnull selector);\n\n/// Protocol that interception observers must implement.\n@protocol RXMessageSentObserver\n\n/// In case the same selector is being intercepted for a pair of base/sub classes,\n/// this property will differentiate between interceptors that need to fire.\n@property (nonatomic, assign, readonly) IMP __nonnull targetImplementation;\n\n-(void)messageSentWithArguments:(NSArray* __nonnull)arguments;\n-(void)methodInvokedWithArguments:(NSArray* __nonnull)arguments;\n\n@end\n\n/// Protocol that deallocating observer must implement.\n@protocol RXDeallocatingObserver\n\n/// In case the same selector is being intercepted for a pair of base/sub classes,\n/// this property will differentiate between interceptors that need to fire.\n@property (nonatomic, assign, readonly) IMP __nonnull targetImplementation;\n\n-(void)deallocating;\n\n@end\n\n/// Ensures interceptor is installed on target object.\nIMP __nullable RX_ensure_observing(id __nonnull target, SEL __nonnull selector, NSError *__autoreleasing __nullable * __nullable error);\n\n#endif\n\n/// Extracts arguments for `invocation`.\nNSArray * __nonnull RX_extract_arguments(NSInvocation * __nonnull invocation);\n\n/// Returns `YES` in case method has `void` return type.\nBOOL RX_is_method_with_description_void(struct objc_method_description method);\n\n/// Returns `YES` in case methodSignature has `void` return type.\nBOOL RX_is_method_signature_void(NSMethodSignature * __nonnull methodSignature);\n\n/// Default value for `RXInterceptionObserver.targetImplementation`.\nIMP __nonnull RX_default_target_implementation(void);\n"
  },
  {
    "path": "RxCocoa/RxCocoa.h",
    "content": "//\n//  RxCocoa.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <RxCocoa/_RX.h>\n#import <RxCocoa/_RXDelegateProxy.h>\n#import <RxCocoa/_RXKVOObserver.h>\n#import <RxCocoa/_RXObjCRuntime.h>\n\n//! Project version number for RxCocoa.\nFOUNDATION_EXPORT double RxCocoaVersionNumber;\n\n//! Project version string for RxCocoa.\nFOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];\n"
  },
  {
    "path": "RxCocoa/RxCocoa.swift",
    "content": "//\n//  RxCocoa.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n// Importing RxCocoa also imports RxRelay\n@_exported import RxRelay\n\nimport RxSwift\n#if os(iOS)\nimport UIKit\n#endif\n\n/// RxCocoa errors.\npublic enum RxCocoaError:\n    Swift.Error,\n    CustomDebugStringConvertible\n{\n    /// Unknown error has occurred.\n    case unknown\n    /// Invalid operation was attempted.\n    case invalidOperation(object: Any)\n    /// Items are not yet bound to user interface but have been requested.\n    case itemsNotYetBound(object: Any)\n    /// Invalid KVO Path.\n    case invalidPropertyName(object: Any, propertyName: String)\n    /// Invalid object on key path.\n    case invalidObjectOnKeyPath(object: Any, sourceObject: AnyObject, propertyName: String)\n    /// Error during swizzling.\n    case errorDuringSwizzling\n    /// Casting error.\n    case castingError(object: Any, targetType: Any.Type)\n}\n\n// MARK: Debug descriptions\n\npublic extension RxCocoaError {\n    /// A textual representation of `self`, suitable for debugging.\n    var debugDescription: String {\n        switch self {\n        case .unknown:\n            \"Unknown error occurred.\"\n        case let .invalidOperation(object):\n            \"Invalid operation was attempted on `\\(object)`.\"\n        case let .itemsNotYetBound(object):\n            \"Data source is set, but items are not yet bound to user interface for `\\(object)`.\"\n        case let .invalidPropertyName(object, propertyName):\n            \"Object `\\(object)` doesn't have a property named `\\(propertyName)`.\"\n        case let .invalidObjectOnKeyPath(object, sourceObject, propertyName):\n            \"Unobservable object `\\(object)` was observed as `\\(propertyName)` of `\\(sourceObject)`.\"\n        case .errorDuringSwizzling:\n            \"Error during swizzling.\"\n        case let .castingError(object, targetType):\n            \"Error casting `\\(object)` to `\\(targetType)`\"\n        }\n    }\n}\n\n// MARK: Error binding policies\n\nfunc bindingError(_ error: Swift.Error) {\n    let error = \"Binding error: \\(error)\"\n    #if DEBUG\n    rxFatalError(error)\n    #else\n    print(error)\n    #endif\n}\n\n/// Swift does not implement abstract methods. This method is used as a runtime check to ensure that methods which intended to be abstract (i.e., they should be implemented in subclasses) are not called directly on the superclass.\nfunc rxAbstractMethod(message: String = \"Abstract method\", file: StaticString = #file, line: UInt = #line) -> Swift.Never {\n    rxFatalError(message, file: file, line: line)\n}\n\nfunc rxFatalError(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) -> Swift.Never {\n    // The temptation to comment this line is great, but please don't, it's for your own good. The choice is yours.\n    fatalError(lastMessage(), file: file, line: line)\n}\n\nfunc rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) {\n    #if DEBUG\n    fatalError(lastMessage(), file: file, line: line)\n    #else\n    print(\"\\(file):\\(line): \\(lastMessage())\")\n    #endif\n}\n\n// MARK: casts or fatal error\n\n// workaround for Swift compiler bug, cheers compiler team :)\nfunc castOptionalOrFatalError<T>(_ value: Any?) -> T? {\n    if value == nil {\n        return nil\n    }\n    let v: T = castOrFatalError(value)\n    return v\n}\n\nfunc castOrThrow<T>(_ resultType: T.Type, _ object: Any) throws -> T {\n    guard let returnValue = object as? T else {\n        throw RxCocoaError.castingError(object: object, targetType: resultType)\n    }\n\n    return returnValue\n}\n\nfunc castOptionalOrThrow<T>(_ resultType: T.Type, _ object: AnyObject) throws -> T? {\n    if NSNull().isEqual(object) {\n        return nil\n    }\n\n    guard let returnValue = object as? T else {\n        throw RxCocoaError.castingError(object: object, targetType: resultType)\n    }\n\n    return returnValue\n}\n\nfunc castOrFatalError<T>(_ value: AnyObject!, message: String) -> T {\n    let maybeResult: T? = value as? T\n    guard let result = maybeResult else {\n        rxFatalError(message)\n    }\n\n    return result\n}\n\nfunc castOrFatalError<T>(_ value: Any!) -> T {\n    let maybeResult: T? = value as? T\n    guard let result = maybeResult else {\n        rxFatalError(\"Failure converting from \\(String(describing: value)) to \\(T.self)\")\n    }\n\n    return result\n}\n\n// MARK: Error messages\n\nlet dataSourceNotSet = \"DataSource not set\"\nlet delegateNotSet = \"Delegate not set\"\n\n// MARK: Shared with RxSwift\n\nfunc rxFatalError(_ lastMessage: String) -> Never {\n    // The temptation to comment this line is great, but please don't, it's for your own good. The choice is yours.\n    fatalError(lastMessage)\n}\n"
  },
  {
    "path": "RxCocoa/Traits/ControlEvent.swift",
    "content": "//\n//  ControlEvent.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 8/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// A protocol that extends `ControlEvent`.\npublic protocol ControlEventType: ObservableType {\n    /// - returns: `ControlEvent` interface\n    func asControlEvent() -> ControlEvent<Element>\n}\n\n/**\n A trait for `Observable`/`ObservableType` that represents an event on a UI element.\n\n Properties:\n\n - it doesn’t send any initial value on subscription,\n - it `Complete`s the sequence when the control deallocates,\n - it never errors out\n - it delivers events on `MainScheduler.instance`.\n\n **The implementation of `ControlEvent` will ensure that sequence of events is being subscribed on main scheduler\n  (`subscribe(on: ConcurrentMainScheduler.instance)` behavior).**\n\n **It is the implementor’s responsibility to make sure that all other properties enumerated above are satisfied.**\n\n **If they aren’t, using this trait will communicate wrong properties, and could potentially break someone’s code.**\n\n **If the `events` observable sequence passed into the initializer doesn’t satisfy all enumerated\n  properties, don’t use this trait.**\n */\npublic struct ControlEvent<PropertyType>: ControlEventType {\n    public typealias Element = PropertyType\n\n    let events: Observable<PropertyType>\n\n    /// Initializes control event with a observable sequence that represents events.\n    ///\n    /// - parameter events: Observable sequence that represents events.\n    /// - returns: Control event created with a observable sequence of events.\n    public init<Ev: ObservableType>(events: Ev) where Ev.Element == Element {\n        self.events = events.subscribe(on: ConcurrentMainScheduler.instance)\n    }\n\n    /// Subscribes an observer to control events.\n    ///\n    /// - parameter observer: Observer to subscribe to events.\n    /// - returns: Disposable object that can be used to unsubscribe the observer from receiving control events.\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        events.subscribe(observer)\n    }\n\n    /// - returns: `Observable` interface.\n    public func asObservable() -> Observable<Element> {\n        events\n    }\n\n    /// - returns: `ControlEvent` interface.\n    public func asControlEvent() -> ControlEvent<Element> {\n        self\n    }\n\n    /// - returns: `Infallible` interface.\n    public func asInfallible() -> Infallible<Element> {\n        asInfallible(onErrorFallbackTo: .empty())\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/ControlProperty.swift",
    "content": "//\n//  ControlProperty.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 8/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// Protocol that enables extension of `ControlProperty`.\npublic protocol ControlPropertyType: ObservableType, ObserverType {\n    /// - returns: `ControlProperty` interface\n    func asControlProperty() -> ControlProperty<Element>\n}\n\n/**\n Trait for `Observable`/`ObservableType` that represents property of UI element.\n\n Sequence of values only represents initial control value and user initiated value changes.\n Programmatic value changes won't be reported.\n\n It's properties are:\n\n - `shareReplay(1)` behavior\n     - it's stateful, upon subscription (calling subscribe) last element is immediately replayed if it was produced\n - it will `Complete` sequence on control being deallocated\n - it never errors out\n - it delivers events on `MainScheduler.instance`\n\n **The implementation of `ControlProperty` will ensure that sequence of values is being subscribed on main scheduler\n (`subscribe(on: ConcurrentMainScheduler.instance)` behavior).**\n\n **It is implementor's responsibility to make sure that that all other properties enumerated above are satisfied.**\n\n **If they aren't, then using this trait communicates wrong properties and could potentially break someone's code.**\n\n **In case `values` observable sequence that is being passed into initializer doesn't satisfy all enumerated\n properties, please don't use this trait.**\n */\npublic struct ControlProperty<PropertyType>: ControlPropertyType {\n    public typealias Element = PropertyType\n\n    let values: Observable<PropertyType>\n    let valueSink: AnyObserver<PropertyType>\n\n    /// Initializes control property with a observable sequence that represents property values and observer that enables\n    /// binding values to property.\n    ///\n    /// - parameter values: Observable sequence that represents property values.\n    /// - parameter valueSink: Observer that enables binding values to control property.\n    /// - returns: Control property created with a observable sequence of values and an observer that enables binding values\n    /// to property.\n    public init<Values: ObservableType, Sink: ObserverType>(values: Values, valueSink: Sink) where Element == Values.Element, Element == Sink.Element {\n        self.values = values.subscribe(on: ConcurrentMainScheduler.instance)\n        self.valueSink = valueSink.asObserver()\n    }\n\n    /// Subscribes an observer to control property values.\n    ///\n    /// - parameter observer: Observer to subscribe to property values.\n    /// - returns: Disposable object that can be used to unsubscribe the observer from receiving control property values.\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        values.subscribe(observer)\n    }\n\n    /// `ControlEvent` of user initiated value changes. Every time user updates control value change event\n    /// will be emitted from `changed` event.\n    ///\n    /// Programmatic changes to control value won't be reported.\n    ///\n    /// It contains all control property values except for first one.\n    ///\n    /// The name only implies that sequence element will be generated once user changes a value and not that\n    /// adjacent sequence values need to be different (e.g. because of interaction between programmatic and user updates,\n    /// or for any other reason).\n    public var changed: ControlEvent<PropertyType> {\n        ControlEvent(events: values.skip(1))\n    }\n\n    /// - returns: `Observable` interface.\n    public func asObservable() -> Observable<Element> {\n        values\n    }\n\n    /// - returns: `ControlProperty` interface.\n    public func asControlProperty() -> ControlProperty<Element> {\n        self\n    }\n\n    /// Binds event to user interface.\n    ///\n    /// - In case next element is received, it is being set to control value.\n    /// - In case error is received, DEBUG builds raise fatal error, RELEASE builds log event to standard output.\n    /// - In case sequence completes, nothing happens.\n    public func on(_ event: Event<Element>) {\n        switch event {\n        case let .error(error):\n            bindingError(error)\n        case .next:\n            valueSink.on(event)\n        case .completed:\n            valueSink.on(event)\n        }\n    }\n}\n\npublic extension ControlPropertyType where Element == String? {\n    /// Transforms control property of type `String?` into control property of type `String`.\n    var orEmpty: ControlProperty<String> {\n        let original: ControlProperty<String?> = asControlProperty()\n\n        let values: Observable<String> = original.values.map { $0 ?? \"\" }\n        let valueSink: AnyObserver<String> = original.valueSink.mapObserver { $0 }\n        return ControlProperty<String>(values: values, valueSink: valueSink)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift",
    "content": "//\n//  BehaviorRelay+Driver.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 10/7/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\n\npublic extension BehaviorRelay {\n    /// Converts `BehaviorRelay` to `Driver`.\n    ///\n    /// - returns: Observable sequence.\n    func asDriver() -> Driver<Element> {\n        let source = asObservable()\n            .observe(on: DriverSharingStrategy.scheduler)\n        return SharedSequence(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/ControlEvent+Driver.swift",
    "content": "//\n//  ControlEvent+Driver.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ControlEvent {\n    /// Converts `ControlEvent` to `Driver` trait.\n    ///\n    /// `ControlEvent` already can't fail, so no special case needs to be handled.\n    func asDriver() -> Driver<Element> {\n        asDriver { _ -> Driver<Element> in\n            #if DEBUG\n            rxFatalError(\"Somehow driver received error from a source that shouldn't fail.\")\n            #else\n            return Driver.empty()\n            #endif\n        }\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/ControlProperty+Driver.swift",
    "content": "//\n//  ControlProperty+Driver.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ControlProperty {\n    /// Converts `ControlProperty` to `Driver` trait.\n    ///\n    /// `ControlProperty` already can't fail, so no special case needs to be handled.\n    func asDriver() -> Driver<Element> {\n        asDriver { _ -> Driver<Element> in\n            #if DEBUG\n            rxFatalError(\"Somehow driver received error from a source that shouldn't fail.\")\n            #else\n            return Driver.empty()\n            #endif\n        }\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/Driver+Subscription.swift",
    "content": "//\n//  Driver+Subscription.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\n\nprivate let errorMessage = \"`drive*` family of methods can be only called from `MainThread`.\\n\" +\n    \"This is required to ensure that the last replayed `Driver` element is delivered on `MainThread`.\\n\"\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == DriverSharingStrategy {\n    /**\n     Creates new subscription and sends elements to observer.\n     This method can be only called from `MainThread`.\n\n     In this form it's equivalent to `subscribe` method, but it communicates intent better.\n\n     - parameter observers: Observers that receives events.\n     - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n     */\n    func drive<Observer: ObserverType>(_ observers: Observer...) -> Disposable where Observer.Element == Element {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return asSharedSequence()\n            .asObservable()\n            .subscribe { e in\n                observers.forEach { $0.on(e) }\n            }\n    }\n\n    /**\n     Creates new subscription and sends elements to observer.\n     This method can be only called from `MainThread`.\n\n     In this form it's equivalent to `subscribe` method, but it communicates intent better.\n\n     - parameter observers: Observers that receives events.\n     - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n     */\n    func drive<Observer: ObserverType>(_ observers: Observer...) -> Disposable where Observer.Element == Element? {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return asSharedSequence()\n            .asObservable()\n            .map { $0 as Element? }\n            .subscribe { e in\n                observers.forEach { $0.on(e) }\n            }\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n     This method can be only called from `MainThread`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func drive(_ relays: BehaviorRelay<Element>...) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return drive(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n     This method can be only called from `MainThread`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func drive(_ relays: BehaviorRelay<Element?>...) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return drive(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n     This method can be only called from `MainThread`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func drive(_ relays: ReplayRelay<Element>...) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return drive(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n     This method can be only called from `MainThread`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func drive(_ relays: ReplayRelay<Element?>...) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return drive(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function.\n     This method can be only called from `MainThread`.\n\n     - parameter transformation: Function used to bind elements from `self`.\n     - returns: Object representing subscription.\n     */\n    func drive<Result>(_ transformation: (Observable<Element>) -> Result) -> Result {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return transformation(asObservable())\n    }\n\n    /**\n     Subscribes to observable sequence using custom binder function and final parameter passed to binder function\n     after `self` is passed.\n\n         public func drive<R1, R2>(with: Self -> R1 -> R2, curriedArgument: R1) -> R2 {\n             return with(self)(curriedArgument)\n         }\n\n     This method can be only called from `MainThread`.\n\n     - parameter with: Function used to bind elements from `self`.\n     - parameter curriedArgument: Final argument passed to `binder` to finish binding process.\n     - returns: Object representing subscription.\n     */\n    func drive<R1, R2>(_ with: (Observable<Element>) -> (R1) -> R2, curriedArgument: R1) -> R2 {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return with(asObservable())(curriedArgument)\n    }\n\n    /**\n     Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n     This method can be only called from `MainThread`.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     Error callback is not exposed because `Driver` can't error out.\n\n      - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func drive<Object: AnyObject>(\n        with object: Object,\n        onNext: ((Object, Element) -> Void)? = nil,\n        onCompleted: ((Object) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return asObservable().subscribe(with: object, onNext: onNext, onCompleted: onCompleted, onDisposed: onDisposed)\n    }\n\n    /**\n     Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n     This method can be only called from `MainThread`.\n\n     Error callback is not exposed because `Driver` can't error out.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func drive(\n        onNext: ((Element) -> Void)? = nil,\n        onCompleted: (() -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        MainScheduler.ensureRunningOnMainThread(errorMessage: errorMessage)\n        return asObservable().subscribe(onNext: onNext, onCompleted: onCompleted, onDisposed: onDisposed)\n    }\n\n    /**\n     Subscribes to this `Driver` with a no-op.\n     This method can be only called from `MainThread`.\n\n     - note: This is an alias of `drive(onNext: nil, onCompleted: nil, onDisposed: nil)` used to fix an ambiguity bug in Swift: https://bugs.swift.org/browse/SR-13657\n\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func drive() -> Disposable {\n        drive(onNext: nil, onCompleted: nil, onDisposed: nil)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/Driver.swift",
    "content": "//\n//  Driver.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/**\n Trait that represents observable sequence with following properties:\n\n - it never fails\n - it delivers events on `MainScheduler.instance`\n - `share(replay: 1, scope: .whileConnected)` sharing strategy\n\n Additional explanation:\n - all observers share sequence computation resources\n - it's stateful, upon subscription (calling subscribe) last element is immediately replayed if it was produced\n - computation of elements is reference counted with respect to the number of observers\n - if there are no subscribers, it will release sequence computation resources\n\n In case trait that models event bus is required, please check `Signal`.\n\n `Driver<Element>` can be considered a builder pattern for observable sequences that drive the application.\n\n If observable sequence has produced at least one element, after new subscription is made last produced element will be\n immediately replayed on the same thread on which the subscription was made.\n\n When using `drive*`, `subscribe*` and `bind*` family of methods, they should always be called from main thread.\n\n If `drive*`, `subscribe*` and `bind*` are called from background thread, it is possible that initial replay\n will happen on background thread, and subsequent events will arrive on main thread.\n\n To find out more about traits and how to use them, please visit `Documentation/Traits.md`.\n */\npublic typealias Driver<Element> = SharedSequence<DriverSharingStrategy, Element>\n\npublic struct DriverSharingStrategy: SharingStrategyProtocol {\n    public static var scheduler: SchedulerType { SharingScheduler.make() }\n    public static func share<Element>(_ source: Observable<Element>) -> Observable<Element> {\n        source.share(replay: 1, scope: .whileConnected)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == DriverSharingStrategy {\n    /// Adds `asDriver` to `SharingSequence` with `DriverSharingStrategy`.\n    func asDriver() -> Driver<Element> {\n        asSharedSequence()\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/Infallible+Driver.swift",
    "content": "//\n//  Infallible+Driver.swift\n//  RxCocoa\n//\n//  Created by Anton Siliuk on 14/02/2022.\n//  Copyright © 2022 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension InfallibleType {\n    /// Converts `InfallibleType` to `Driver`.\n    ///\n    /// - returns: Observable sequence.\n    func asDriver() -> Driver<Element> {\n        SharedSequence(asObservable().observe(on: DriverSharingStrategy.scheduler))\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Driver/ObservableConvertibleType+Driver.swift",
    "content": "//\n//  ObservableConvertibleType+Driver.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ObservableConvertibleType {\n    /**\n     Converts observable sequence to `Driver` trait.\n\n     - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.\n     - returns: Driver trait.\n     */\n    func asDriver(onErrorJustReturn: Element) -> Driver<Element> {\n        let source = asObservable()\n            .observe(on: DriverSharingStrategy.scheduler)\n            .catchAndReturn(onErrorJustReturn)\n        return Driver(source)\n    }\n\n    /**\n     Converts observable sequence to `Driver` trait.\n\n     - parameter onErrorDriveWith: Driver that continues to drive the sequence in case of error.\n     - returns: Driver trait.\n     */\n    func asDriver(onErrorDriveWith: Driver<Element>) -> Driver<Element> {\n        let source = asObservable()\n            .observe(on: DriverSharingStrategy.scheduler)\n            .catch { _ in\n                onErrorDriveWith.asObservable()\n            }\n        return Driver(source)\n    }\n\n    /**\n     Converts observable sequence to `Driver` trait.\n\n     - parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error.\n     - returns: Driver trait.\n     */\n    func asDriver(onErrorRecover: @escaping (_ error: Swift.Error) -> Driver<Element>) -> Driver<Element> {\n        let source = asObservable()\n            .observe(on: DriverSharingStrategy.scheduler)\n            .catch { error in\n                onErrorRecover(error).asObservable()\n            }\n        return Driver(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/ObservableConvertibleType+SharedSequence.swift",
    "content": "//\n//  ObservableConvertibleType+SharedSequence.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/1/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ObservableConvertibleType {\n    /**\n     Converts anything convertible to `Observable` to `SharedSequence` unit.\n\n     - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.\n     - returns: Driving observable sequence.\n     */\n    func asSharedSequence<S>(sharingStrategy _: S.Type = S.self, onErrorJustReturn: Element) -> SharedSequence<S, Element> {\n        let source = asObservable()\n            .observe(on: S.scheduler)\n            .catchAndReturn(onErrorJustReturn)\n        return SharedSequence(source)\n    }\n\n    /**\n     Converts anything convertible to `Observable` to `SharedSequence` unit.\n\n     - parameter onErrorDriveWith: SharedSequence that provides elements of the sequence in case of error.\n     - returns: Driving observable sequence.\n     */\n    func asSharedSequence<S>(sharingStrategy _: S.Type = S.self, onErrorDriveWith: SharedSequence<S, Element>) -> SharedSequence<S, Element> {\n        let source = asObservable()\n            .observe(on: S.scheduler)\n            .catch { _ in\n                onErrorDriveWith.asObservable()\n            }\n        return SharedSequence(source)\n    }\n\n    /**\n     Converts anything convertible to `Observable` to `SharedSequence` unit.\n\n     - parameter onErrorRecover: Calculates driver that continues to drive the sequence in case of error.\n     - returns: Driving observable sequence.\n     */\n    func asSharedSequence<S>(sharingStrategy _: S.Type = S.self, onErrorRecover: @escaping (_ error: Swift.Error) -> SharedSequence<S, Element>) -> SharedSequence<S, Element> {\n        let source = asObservable()\n            .observe(on: S.scheduler)\n            .catch { error in\n                onErrorRecover(error).asObservable()\n            }\n        return SharedSequence(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SchedulerType+SharedSequence.swift",
    "content": "//\n//  SchedulerType+SharedSequence.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 8/27/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic enum SharingScheduler {\n    /// Default scheduler used in SharedSequence based traits.\n    public private(set) static var make: () -> SchedulerType = { MainScheduler() }\n\n    /**\n      This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead\n      of main schedulers.\n\n      **This shouldn't be used in normal release builds.**\n     */\n    public static func mock(scheduler: SchedulerType, action: () throws -> Void) rethrows {\n        try mock(makeScheduler: { scheduler }, action: action)\n    }\n\n    /**\n     This method can be used in unit tests to ensure that built in shared sequences are using mock schedulers instead\n     of main schedulers.\n\n     **This shouldn't be used in normal release builds.**\n     */\n    public static func mock(makeScheduler: @escaping () -> SchedulerType, action: () throws -> Void) rethrows {\n        let originalMake = make\n        make = makeScheduler\n        defer {\n            make = originalMake\n        }\n\n        try action()\n\n        // If you remove this line , compiler buggy optimizations will change behavior of this code\n        _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(makeScheduler)\n        // Scary, I know\n    }\n}\n\n#if !canImport(Darwin)\nimport Glibc\n#else\nimport Foundation\n#endif\n\nfunc _forceCompilerToStopDoingInsaneOptimizationsThatBreakCode(_ scheduler: () -> SchedulerType) {\n    let a: Int32 = 1\n    #if !canImport(Darwin)\n    let b = 314 + Int32(Glibc.random() & 1)\n    #else\n    let b = 314 + Int32(arc4random() & 1)\n    #endif\n    if a == b {\n        print(scheduler())\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SharedSequence+Concurrency.swift",
    "content": "//\n//  SharedSequence+Concurrency.swift\n//  RxCocoa\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Foundation\n\n// MARK: - Shared Sequence\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension SharedSequence {\n    /// Allows iterating over the values of this Shared Sequence\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// for await value in driver.values {\n    ///     // Handle emitted values\n    /// }\n    /// ```\n    @MainActor var values: AsyncStream<Element> {\n        AsyncStream { continuation in\n            // It is safe to ignore the `onError` closure here since\n            // Shared Sequences (`Driver` and `Signal`) cannot fail\n            let disposable = self.asObservable()\n                .subscribe(\n                    onNext: { value in continuation.yield(value) },\n                    onCompleted: { continuation.finish() }\n                )\n            continuation.onTermination = { @Sendable termination in\n                if termination == .cancelled {\n                    disposable.dispose()\n                }\n            }\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  SharedSequence+Operators+arity.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 10/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n// 2\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, resultSelector: @escaping (O1.Element, O2.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, resultSelector: @escaping (O1.Element, O2.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element)>(source)\n    }\n}\n\n// 3\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.Element, O2.Element, O3.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.Element, O2.Element, O3.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element)>(source)\n    }\n}\n\n// 4\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element)>(source)\n    }\n}\n\n// 5\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)>(source)\n    }\n}\n\n// 6\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)>(source)\n    }\n}\n\n// 7\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)>(source)\n    }\n}\n\n// 8\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType, O8: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy,\n        SharingStrategy == O8.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(), source8.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType, O8: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8)\n        -> SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy,\n        SharingStrategy == O8.SharingStrategy\n    {\n        let source = Observable.zip(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(), source8.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)>(source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType, O8: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy,\n        SharingStrategy == O8.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(), source8.asSharedSequence().asObservable(),\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: SharedSequenceConvertibleType, O2: SharedSequenceConvertibleType, O3: SharedSequenceConvertibleType, O4: SharedSequenceConvertibleType, O5: SharedSequenceConvertibleType, O6: SharedSequenceConvertibleType, O7: SharedSequenceConvertibleType, O8: SharedSequenceConvertibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8)\n        -> SharedSequence<SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)> where SharingStrategy == O1.SharingStrategy,\n        SharingStrategy == O2.SharingStrategy,\n        SharingStrategy == O3.SharingStrategy,\n        SharingStrategy == O4.SharingStrategy,\n        SharingStrategy == O5.SharingStrategy,\n        SharingStrategy == O6.SharingStrategy,\n        SharingStrategy == O7.SharingStrategy,\n        SharingStrategy == O8.SharingStrategy\n    {\n        let source = Observable.combineLatest(\n            source1.asSharedSequence().asObservable(), source2.asSharedSequence().asObservable(), source3.asSharedSequence().asObservable(), source4.asSharedSequence().asObservable(), source5.asSharedSequence().asObservable(), source6.asSharedSequence().asObservable(), source7.asSharedSequence().asObservable(), source8.asSharedSequence().asObservable()\n        )\n\n        return SharedSequence<O1.SharingStrategy, (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)>(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SharedSequence+Operators+arity.tt",
    "content": "//\n//  SharedSequence+Operators+arity.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 10/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n<% for i in 2 ... 8 { %>\n\n// <%= i %>\n\nextension SharedSequence {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"O\\($0): SharedSequenceConvertibleType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>) throws -> Element)\n        -> SharedSequence<O1.SharingStrategy, Element> where <%= (Array(1...i).map { \"SharingStrategy == O\\($0).SharingStrategy\" }).joined(separator: \",\\n            \") %> {\n        let source = Observable.zip(\n            <%= (Array(1...i).map { \"source\\($0).asSharedSequence().asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: resultSelector\n        )\n\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\nextension SharedSequenceConvertibleType where Element == Any {\n    /**\n    Merges the specified observable sequences into one observable sequence of element tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - returns: An observable sequence containing the result of combining elements of the sources.\n    */\n    public static func zip<<%= (Array(1...i).map { \"O\\($0): SharedSequenceConvertibleType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>)\n        -> SharedSequence<O1.SharingStrategy, (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)> where <%= (Array(1...i).map { \"SharingStrategy == O\\($0).SharingStrategy\" }).joined(separator: \",\\n            \") %> {\n        let source = Observable.zip(\n            <%= (Array(1...i).map { \"source\\($0).asSharedSequence().asObservable()\" }).joined(separator: \", \") %>\n        )\n\n        return SharedSequence<SharingStrategy, (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)>(source)\n    }\n}\n\nextension SharedSequence {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n    - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func combineLatest<<%= (Array(1...i).map { \"O\\($0): SharedSequenceConvertibleType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>) throws -> Element)\n        -> SharedSequence<SharingStrategy, Element> where <%= (Array(1...i).map { \"SharingStrategy == O\\($0).SharingStrategy\" }).joined(separator: \",\\n            \") %> {\n        let source = Observable.combineLatest(\n                <%= (Array(1...i).map { \"source\\($0).asSharedSequence().asObservable()\" }).joined(separator: \", \") %>,\n                resultSelector: resultSelector\n            )\n\n        return SharedSequence<O1.SharingStrategy, Element>(source)\n    }\n}\n\nextension SharedSequenceConvertibleType where Element == Any {\n    /**\n    Merges the specified observable sequences into one observable sequence of element tuples whenever any of the observable sequences produces an element.\n\n    - returns: An observable sequence containing the result of combining elements of the sources.\n    */\n    public static func combineLatest<<%= (Array(1...i).map { \"O\\($0): SharedSequenceConvertibleType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>)\n        -> SharedSequence<SharingStrategy, (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)> where <%= (Array(1...i).map { \"SharingStrategy == O\\($0).SharingStrategy\" }).joined(separator: \",\\n            \") %> {\n        let source = Observable.combineLatest(\n                <%= (Array(1...i).map { \"source\\($0).asSharedSequence().asObservable()\" }).joined(separator: \", \") %>\n            )\n\n        return SharedSequence<O1.SharingStrategy, (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)>(source)\n    }\n}\n\n<% } %>\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SharedSequence+Operators.swift",
    "content": "//\n//  SharedSequence+Operators.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n// MARK: map\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Projects each element of an observable sequence into a new form.\n\n     - parameter selector: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.\n     */\n    func map<Result>(_ selector: @escaping (Element) -> Result) -> SharedSequence<SharingStrategy, Result> {\n        let source = asObservable()\n            .map(selector)\n        return SharedSequence<SharingStrategy, Result>(source)\n    }\n}\n\n// MARK: compactMap\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Projects each element of an observable sequence into an optional form and filters all optional results.\n\n     - parameter selector: A transform function to apply to each source element and which returns an element or nil.\n     - returns: An observable sequence whose elements are the result of filtering the transform function for each element of the source.\n\n     */\n    func compactMap<Result>(_ selector: @escaping (Element) -> Result?) -> SharedSequence<SharingStrategy, Result> {\n        let source = asObservable()\n            .compactMap(selector)\n        return SharedSequence<SharingStrategy, Result>(source)\n    }\n}\n\n// MARK: filter\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Filters the elements of an observable sequence based on a predicate.\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that contains elements from the input sequence that satisfy the condition.\n     */\n    func filter(_ predicate: @escaping (Element) -> Bool) -> SharedSequence<SharingStrategy, Element> {\n        let source = asObservable()\n            .filter(predicate)\n        return SharedSequence(source)\n    }\n}\n\n// MARK: switchLatest\n\npublic extension SharedSequenceConvertibleType where Element: SharedSequenceConvertibleType {\n    /**\n     Transforms an observable sequence of observable sequences into an observable sequence\n     producing values only from the most recent observable sequence.\n\n     Each time a new inner observable sequence is received, unsubscribe from the\n     previous inner observable sequence.\n\n     - returns: The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func switchLatest() -> SharedSequence<Element.SharingStrategy, Element.Element> {\n        let source: Observable<Element.Element> = asObservable()\n            .map { $0.asSharedSequence() }\n            .switchLatest()\n        return SharedSequence<Element.SharingStrategy, Element.Element>(source)\n    }\n}\n\n// MARK: flatMapLatest\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Projects each element of an observable sequence into a new sequence of observable sequences and then\n     transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.\n\n     It is a combination of `map` + `switchLatest` operator\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\n     Observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func flatMapLatest<Sharing, Result>(_ selector: @escaping (Element) -> SharedSequence<Sharing, Result>)\n        -> SharedSequence<Sharing, Result>\n    {\n        let source: Observable<Result> = asObservable()\n            .flatMapLatest(selector)\n        return SharedSequence<Sharing, Result>(source)\n    }\n}\n\n// MARK: flatMapFirst\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n     If element is received while there is some projected observable sequence being merged it will simply be ignored.\n\n     - parameter selector: A transform function to apply to element that was observed while no observable is executing in parallel.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.\n     */\n    func flatMapFirst<Sharing, Result>(_ selector: @escaping (Element) -> SharedSequence<Sharing, Result>)\n        -> SharedSequence<Sharing, Result>\n    {\n        let source: Observable<Result> = asObservable()\n            .flatMapFirst(selector)\n        return SharedSequence<Sharing, Result>(source)\n    }\n}\n\n// MARK: do\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter afterNext: Action to invoke for each element after the observable has passed an onNext event along to its downstream.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter afterCompleted: Action to invoke after graceful termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(onNext: ((Element) -> Void)? = nil, afterNext: ((Element) -> Void)? = nil, onCompleted: (() -> Void)? = nil, afterCompleted: (() -> Void)? = nil, onSubscribe: (() -> Void)? = nil, onSubscribed: (() -> Void)? = nil, onDispose: (() -> Void)? = nil)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .do(onNext: onNext, afterNext: afterNext, onCompleted: onCompleted, afterCompleted: afterCompleted, onSubscribe: onSubscribe, onSubscribed: onSubscribed, onDispose: onDispose)\n\n        return SharedSequence(source)\n    }\n}\n\n// MARK: debug\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Prints received events for all observers on standard output.\n\n     - parameter identifier: Identifier that is printed together with event description to standard output.\n     - returns: An observable sequence whose events are printed to standard output.\n     */\n    func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function) -> SharedSequence<SharingStrategy, Element> {\n        let source = asObservable()\n            .debug(identifier, trimOutput: trimOutput, file: file, line: line, function: function)\n        return SharedSequence(source)\n    }\n}\n\n// MARK: distinctUntilChanged\n\npublic extension SharedSequenceConvertibleType where Element: Equatable {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to equality operator.\n\n     - returns: An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.\n     */\n    func distinctUntilChanged()\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .distinctUntilChanged {\n                $0\n            } comparer: {\n                $0 == $1\n            }\n\n        return SharedSequence(source)\n    }\n}\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `keySelector`.\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.\n     */\n    func distinctUntilChanged(_ keySelector: @escaping (Element) -> some Equatable) -> SharedSequence<SharingStrategy, Element> {\n        let source = asObservable()\n            .distinctUntilChanged(keySelector, comparer: { $0 == $1 })\n        return SharedSequence(source)\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `comparer`.\n\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on `comparer`, from the source sequence.\n     */\n    func distinctUntilChanged(_ comparer: @escaping (Element, Element) -> Bool) -> SharedSequence<SharingStrategy, Element> {\n        let source = asObservable()\n            .distinctUntilChanged({ $0 }, comparer: comparer)\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.\n     */\n    func distinctUntilChanged<K>(_ keySelector: @escaping (Element) -> K, comparer: @escaping (K, K) -> Bool) -> SharedSequence<SharingStrategy, Element> {\n        let source = asObservable()\n            .distinctUntilChanged(keySelector, comparer: comparer)\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\n// MARK: flatMap\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMap<Sharing, Result>(_ selector: @escaping (Element) -> SharedSequence<Sharing, Result>) -> SharedSequence<Sharing, Result> {\n        let source = asObservable()\n            .flatMap(selector)\n\n        return SharedSequence(source)\n    }\n}\n\n// MARK: merge\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Merges elements from all observable sequences from collection into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge<Collection: Swift.Collection>(_ sources: Collection) -> SharedSequence<SharingStrategy, Element>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n\n    /**\n     Merges elements from all observable sequences from array into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Array of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge(_ sources: [SharedSequence<SharingStrategy, Element>]) -> SharedSequence<SharingStrategy, Element> {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n\n    /**\n     Merges elements from all observable sequences into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge(_ sources: SharedSequence<SharingStrategy, Element>...) -> SharedSequence<SharingStrategy, Element> {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\n// MARK: merge\n\npublic extension SharedSequenceConvertibleType where Element: SharedSequenceConvertibleType {\n    /**\n     Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence.\n\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    func merge() -> SharedSequence<Element.SharingStrategy, Element.Element> {\n        let source = asObservable()\n            .map { $0.asSharedSequence() }\n            .merge()\n        return SharedSequence<Element.SharingStrategy, Element.Element>(source)\n    }\n\n    /**\n     Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences.\n\n     - parameter maxConcurrent: Maximum number of inner observable sequences being subscribed to concurrently.\n     - returns: The observable sequence that merges the elements of the inner sequences.\n     */\n    func merge(maxConcurrent: Int)\n        -> SharedSequence<Element.SharingStrategy, Element.Element>\n    {\n        let source = asObservable()\n            .map { $0.asSharedSequence() }\n            .merge(maxConcurrent: maxConcurrent)\n        return SharedSequence<Element.SharingStrategy, Element.Element>(source)\n    }\n}\n\n// MARK: throttle\n\npublic extension SharedSequenceConvertibleType {\n    /**\n      Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.\n\n      This operator makes sure that no two elements are emitted in less then dueTime.\n\n      - seealso: [debounce operator on reactivex.io](http://reactivex.io/documentation/operators/debounce.html)\n\n      - parameter dueTime: Throttling duration for each element.\n      - parameter latest: Should latest element received in a dueTime wide time window since last element emission be emitted.\n      - returns: The throttled sequence.\n     */\n    func throttle(_ dueTime: RxTimeInterval, latest: Bool = true)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .throttle(dueTime, latest: latest, scheduler: SharingStrategy.scheduler)\n\n        return SharedSequence(source)\n    }\n\n    /**\n     Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.\n\n     - parameter dueTime: Throttling duration for each element.\n     - returns: The throttled sequence.\n     */\n    func debounce(_ dueTime: RxTimeInterval)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .debounce(dueTime, scheduler: SharingStrategy.scheduler)\n\n        return SharedSequence(source)\n    }\n}\n\n// MARK: scan\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.\n\n     For aggregation behavior with no intermediate results, see `reduce`.\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: An accumulator function to be invoked on each element.\n     - returns: An observable sequence containing the accumulated values.\n     */\n    func scan<A>(_ seed: A, accumulator: @escaping (A, Element) -> A)\n        -> SharedSequence<SharingStrategy, A>\n    {\n        let source = asObservable()\n            .scan(seed, accumulator: accumulator)\n        return SharedSequence<SharingStrategy, A>(source)\n    }\n}\n\n// MARK: concat\n\npublic extension SharedSequence {\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Sequence: Swift.Sequence>(_ sequence: Sequence) -> SharedSequence<SharingStrategy, Element>\n        where Sequence.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.concat(sequence.lazy.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Collection: Swift.Collection>(_ collection: Collection) -> SharedSequence<SharingStrategy, Element>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.concat(collection.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, Element>(source)\n    }\n}\n\n// MARK: zip\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<Collection: Swift.Collection, Result>(_ collection: Collection, resultSelector: @escaping ([Element]) throws -> Result) -> SharedSequence<SharingStrategy, Result>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.zip(collection.map { $0.asSharedSequence().asObservable() }, resultSelector: resultSelector)\n        return SharedSequence<SharingStrategy, Result>(source)\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<Collection: Swift.Collection>(_ collection: Collection) -> SharedSequence<SharingStrategy, [Element]>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.zip(collection.map { $0.asSharedSequence().asObservable() })\n        return SharedSequence<SharingStrategy, [Element]>(source)\n    }\n}\n\n// MARK: combineLatest\n\npublic extension SharedSequence {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<Collection: Swift.Collection, Result>(_ collection: Collection, resultSelector: @escaping ([Element]) throws -> Result) -> SharedSequence<SharingStrategy, Result>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.combineLatest(collection.map { $0.asObservable() }, resultSelector: resultSelector)\n        return SharedSequence<SharingStrategy, Result>(source)\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<Collection: Swift.Collection>(_ collection: Collection) -> SharedSequence<SharingStrategy, [Element]>\n        where Collection.Element == SharedSequence<SharingStrategy, Element>\n    {\n        let source = Observable.combineLatest(collection.map { $0.asObservable() })\n        return SharedSequence<SharingStrategy, [Element]>(source)\n    }\n}\n\n// MARK: - withUnretained\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == SignalSharingStrategy {\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - parameter resultSelector: A function to combine the unretained referenced on `obj` and the value of the observable sequence.\n     - returns: An observable sequence that contains the result of `resultSelector` being called with an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject, Out>(\n        _ obj: Object,\n        resultSelector: @escaping (Object, Element) -> Out\n    ) -> SharedSequence<SharingStrategy, Out> {\n        SharedSequence(asObservable().withUnretained(obj, resultSelector: resultSelector))\n    }\n\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - returns: An observable sequence of tuples that contains both an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject>(_ obj: Object) -> SharedSequence<SharingStrategy, (Object, Element)> {\n        withUnretained(obj) { ($0, $1) }\n    }\n}\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == DriverSharingStrategy {\n    @available(*, message: \"withUnretained has been deprecated for Driver. Consider using `drive(with:onNext:onCompleted:onDisposed:)`, instead\", unavailable)\n    func withUnretained<Object: AnyObject, Out>(\n        _ obj: Object,\n        resultSelector: @escaping (Object, Element) -> Out\n    ) -> SharedSequence<SharingStrategy, Out> {\n        SharedSequence(asObservable().withUnretained(obj, resultSelector: resultSelector))\n    }\n\n    @available(*, message: \"withUnretained has been deprecated for Driver. Consider using `drive(with:onNext:onCompleted:onDisposed:)`, instead\", unavailable)\n    func withUnretained<Object: AnyObject>(_ obj: Object) -> SharedSequence<SharingStrategy, (Object, Element)> {\n        SharedSequence(asObservable().withUnretained(obj) { ($0, $1) })\n    }\n}\n\n// MARK: withLatestFrom\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.\n\n     - parameter second: Second observable source.\n     - parameter resultSelector: Function to invoke for each element from the self combined with the latest element from the second source, if any.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<SecondO: SharedSequenceConvertibleType, ResultType>(_ second: SecondO, resultSelector: @escaping (Element, SecondO.Element) -> ResultType) -> SharedSequence<SharingStrategy, ResultType> where SecondO.SharingStrategy == SharingStrategy {\n        let source = asObservable()\n            .withLatestFrom(second.asSharedSequence(), resultSelector: resultSelector)\n\n        return SharedSequence<SharingStrategy, ResultType>(source)\n    }\n\n    /**\n     Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when `self` emits an element.\n\n     - parameter second: Second observable source.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<SecondO: SharedSequenceConvertibleType>(_ second: SecondO) -> SharedSequence<SharingStrategy, SecondO.Element> {\n        let source = asObservable()\n            .withLatestFrom(second.asSharedSequence())\n\n        return SharedSequence<SharingStrategy, SecondO.Element>(source)\n    }\n}\n\n// MARK: skip\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Bypasses a specified number of elements in an observable sequence and then returns the remaining elements.\n\n     - seealso: [skip operator on reactivex.io](http://reactivex.io/documentation/operators/skip.html)\n\n     - parameter count: The number of elements to skip before returning the remaining elements.\n     - returns: An observable sequence that contains the elements that occur after the specified index in the input sequence.\n     */\n    func skip(_ count: Int)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .skip(count)\n        return SharedSequence(source)\n    }\n}\n\n// MARK: startWith\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Prepends a value to an observable sequence.\n\n     - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html)\n\n     - parameter element: Element to prepend to the specified sequence.\n     - returns: The source sequence prepended with the specified values.\n     */\n    func startWith(_ element: Element)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .startWith(element)\n\n        return SharedSequence(source)\n    }\n}\n\n// MARK: delay\n\npublic extension SharedSequenceConvertibleType {\n    /**\n     Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.\n\n     - seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)\n\n     - parameter dueTime: Relative time shift of the source by.\n     - returns: the source Observable shifted in time by the specified delay.\n     */\n    func delay(_ dueTime: RxTimeInterval)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        let source = asObservable()\n            .delay(dueTime, scheduler: SharingStrategy.scheduler)\n\n        return SharedSequence(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/SharedSequence/SharedSequence.swift",
    "content": "//\n//  SharedSequence.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 8/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/**\n Trait that represents observable sequence that shares computation resources with following properties:\n\n - it never fails\n - it delivers events on `SharingStrategy.scheduler`\n - sharing strategy is customizable using `SharingStrategy.share` behavior\n\n `SharedSequence<Element>` can be considered a builder pattern for observable sequences that share computation resources.\n\n To find out more about units and how to use them, please visit `Documentation/Traits.md`.\n */\npublic struct SharedSequence<SharingStrategy: SharingStrategyProtocol, Element>: SharedSequenceConvertibleType, ObservableConvertibleType {\n    let source: Observable<Element>\n\n    init(_ source: Observable<Element>) {\n        self.source = SharingStrategy.share(source)\n    }\n\n    init(raw: Observable<Element>) {\n        source = raw\n    }\n\n    #if EXPANDABLE_SHARED_SEQUENCE\n    /**\n      This method is extension hook in case this unit needs to extended from outside the library.\n\n      By defining `EXPANDABLE_SHARED_SEQUENCE` one agrees that it's up to them to ensure shared sequence\n      properties are preserved after extension.\n     */\n    public static func createUnsafe<Source: ObservableType>(source: Source) -> SharedSequence<SharingStrategy, Source.Element> {\n        SharedSequence<SharingStrategy, Source.Element>(raw: source.asObservable())\n    }\n    #endif\n\n    /**\n     - returns: Built observable sequence.\n     */\n    public func asObservable() -> Observable<Element> {\n        source\n    }\n\n    /**\n     - returns: `self`\n     */\n    public func asSharedSequence() -> SharedSequence<SharingStrategy, Element> {\n        self\n    }\n\n    /// - returns: `Infallible` interface.\n    public func asInfallible() -> Infallible<Element> {\n        asInfallible(onErrorFallbackTo: .empty())\n    }\n}\n\n/**\n Different `SharedSequence` sharing strategies must conform to this protocol.\n */\npublic protocol SharingStrategyProtocol {\n    /**\n      Scheduled on which all sequence events will be delivered.\n     */\n    static var scheduler: SchedulerType { get }\n\n    /**\n      Computation resources sharing strategy for multiple sequence observers.\n\n      E.g. One can choose `share(replay:scope:)`\n      as sequence event sharing strategies, but also do something more exotic, like\n      implementing promises or lazy loading chains.\n     */\n    static func share<Element>(_ source: Observable<Element>) -> Observable<Element>\n}\n\n/**\n A type that can be converted to `SharedSequence`.\n */\npublic protocol SharedSequenceConvertibleType: ObservableConvertibleType {\n    associatedtype SharingStrategy: SharingStrategyProtocol\n\n    /**\n     Converts self to `SharedSequence`.\n     */\n    func asSharedSequence() -> SharedSequence<SharingStrategy, Element>\n}\n\npublic extension SharedSequenceConvertibleType {\n    func asObservable() -> Observable<Element> {\n        asSharedSequence().asObservable()\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.\n\n     - returns: An observable sequence with no elements.\n     */\n    static func empty() -> SharedSequence<SharingStrategy, Element> {\n        SharedSequence(raw: Observable.empty().subscribe(on: SharingStrategy.scheduler))\n    }\n\n    /**\n     Returns a non-terminating observable sequence, which can be used to denote an infinite duration.\n\n     - returns: An observable sequence whose observers will never get called.\n     */\n    static func never() -> SharedSequence<SharingStrategy, Element> {\n        SharedSequence(raw: Observable.never())\n    }\n\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - parameter element: Single element in the resulting observable sequence.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element) -> SharedSequence<SharingStrategy, Element> {\n        SharedSequence(raw: Observable.just(element).subscribe(on: SharingStrategy.scheduler))\n    }\n\n    /**\n     Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.\n\n     - parameter observableFactory: Observable factory function to invoke for each observer that subscribes to the resulting sequence.\n     - returns: An observable sequence whose observers trigger an invocation of the given observable factory function.\n     */\n    static func deferred(_ observableFactory: @escaping () -> SharedSequence<SharingStrategy, Element>)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        SharedSequence(Observable.deferred { observableFactory().asObservable() })\n    }\n\n    /**\n     This method creates a new Observable instance with a variable number of elements.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter elements: Elements to generate.\n     - returns: The observable sequence whose elements are pulled from the given arguments.\n     */\n    static func of(_ elements: Element ...) -> SharedSequence<SharingStrategy, Element> {\n        let source = Observable.from(elements, scheduler: SharingStrategy.scheduler)\n        return SharedSequence(raw: source)\n    }\n}\n\npublic extension SharedSequence {\n    /**\n     This method converts an array to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - returns: The observable sequence whose elements are pulled from the given enumerable sequence.\n      */\n    static func from(_ array: [Element]) -> SharedSequence<SharingStrategy, Element> {\n        let source = Observable.from(array, scheduler: SharingStrategy.scheduler)\n        return SharedSequence(raw: source)\n    }\n\n    /**\n      This method converts a sequence to an observable sequence.\n\n      - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n      - returns: The observable sequence whose elements are pulled from the given enumerable sequence.\n     */\n    static func from<Sequence: Swift.Sequence>(_ sequence: Sequence) -> SharedSequence<SharingStrategy, Element> where Sequence.Element == Element {\n        let source = Observable.from(sequence, scheduler: SharingStrategy.scheduler)\n        return SharedSequence(raw: source)\n    }\n\n    /**\n     This method converts a optional to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter optional: Optional element in the resulting observable sequence.\n\n     - returns: An observable sequence containing the wrapped value or not from given optional.\n     */\n    static func from(optional: Element?) -> SharedSequence<SharingStrategy, Element> {\n        let source = Observable.from(optional: optional, scheduler: SharingStrategy.scheduler)\n        return SharedSequence(raw: source)\n    }\n}\n\npublic extension SharedSequence where Element: RxAbstractInteger {\n    /**\n     Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages.\n\n     - seealso: [interval operator on reactivex.io](http://reactivex.io/documentation/operators/interval.html)\n\n     - parameter period: Period for producing the values in the resulting sequence.\n     - returns: An observable sequence that produces a value after each period.\n     */\n    static func interval(_ period: RxTimeInterval)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        SharedSequence(Observable.interval(period, scheduler: SharingStrategy.scheduler))\n    }\n}\n\n// MARK: timer\n\npublic extension SharedSequence where Element: RxAbstractInteger {\n    /**\n     Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.\n\n     - seealso: [timer operator on reactivex.io](http://reactivex.io/documentation/operators/timer.html)\n\n     - parameter dueTime: Relative time at which to produce the first value.\n     - parameter period: Period to produce subsequent values.\n     - returns: An observable sequence that produces a value after due time has elapsed and then each period.\n     */\n    static func timer(_ dueTime: RxTimeInterval, period: RxTimeInterval)\n        -> SharedSequence<SharingStrategy, Element>\n    {\n        SharedSequence(Observable.timer(dueTime, period: period, scheduler: SharingStrategy.scheduler))\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Signal/ControlEvent+Signal.swift",
    "content": "//\n//  ControlEvent+Signal.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 11/1/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ControlEvent {\n    /// Converts `ControlEvent` to `Signal` trait.\n    ///\n    /// `ControlEvent` already can't fail, so no special case needs to be handled.\n    func asSignal() -> Signal<Element> {\n        asSignal { _ -> Signal<Element> in\n            #if DEBUG\n            rxFatalError(\"Somehow signal received error from a source that shouldn't fail.\")\n            #else\n            return Signal.empty()\n            #endif\n        }\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Signal/ObservableConvertibleType+Signal.swift",
    "content": "//\n//  ObservableConvertibleType+Signal.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ObservableConvertibleType {\n    /**\n     Converts observable sequence to `Signal` trait.\n\n     - parameter onErrorJustReturn: Element to return in case of error and after that complete the sequence.\n     - returns: Signal trait.\n     */\n    func asSignal(onErrorJustReturn: Element) -> Signal<Element> {\n        let source = asObservable()\n            .observe(on: SignalSharingStrategy.scheduler)\n            .catchAndReturn(onErrorJustReturn)\n        return Signal(source)\n    }\n\n    /**\n     Converts observable sequence to `Signal` trait.\n\n     - parameter onErrorSignalWith: Signal that continues to emit the sequence in case of error.\n     - returns: Signal trait.\n     */\n    func asSignal(onErrorSignalWith: Signal<Element>) -> Signal<Element> {\n        let source = asObservable()\n            .observe(on: SignalSharingStrategy.scheduler)\n            .catch { _ in\n                onErrorSignalWith.asObservable()\n            }\n        return Signal(source)\n    }\n\n    /**\n     Converts observable sequence to `Signal` trait.\n\n     - parameter onErrorRecover: Calculates signal that continues to emit the sequence in case of error.\n     - returns: Signal trait.\n     */\n    func asSignal(onErrorRecover: @escaping (_ error: Swift.Error) -> Signal<Element>) -> Signal<Element> {\n        let source = asObservable()\n            .observe(on: SignalSharingStrategy.scheduler)\n            .catch { error in\n                onErrorRecover(error).asObservable()\n            }\n        return Signal(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Signal/PublishRelay+Signal.swift",
    "content": "//\n//  PublishRelay+Signal.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 12/28/15.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\n\npublic extension PublishRelay {\n    /// Converts `PublishRelay` to `Signal`.\n    ///\n    /// - returns: Observable sequence.\n    func asSignal() -> Signal<Element> {\n        let source = asObservable()\n            .observe(on: SignalSharingStrategy.scheduler)\n        return SharedSequence(source)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Signal/Signal+Subscription.swift",
    "content": "//\n//  Signal+Subscription.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == SignalSharingStrategy {\n    /**\n     Creates new subscription and sends elements to observer.\n\n     In this form it's equivalent to `subscribe` method, but it communicates intent better.\n\n     - parameter observers: Observers that receives events.\n     - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n     */\n    func emit<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element {\n        asSharedSequence()\n            .asObservable()\n            .subscribe { event in\n                observers.forEach { $0.on(event) }\n            }\n    }\n\n    /**\n     Creates new subscription and sends elements to observer.\n\n     In this form it's equivalent to `subscribe` method, but it communicates intent better.\n\n     - parameter observers: Observers that receives events.\n     - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n     */\n    func emit<Observer: ObserverType>(to observers: Observer...) -> Disposable where Observer.Element == Element? {\n        asSharedSequence()\n            .asObservable()\n            .map { $0 as Element? }\n            .subscribe { event in\n                observers.forEach { $0.on(event) }\n            }\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: BehaviorRelay<Element>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `BehaviorRelay`.\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: BehaviorRelay<Element?>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `PublishRelay`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: PublishRelay<Element>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `PublishRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: PublishRelay<Element?>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n\n     - parameter relays: Target relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: ReplayRelay<Element>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Creates new subscription and sends elements to `ReplayRelay`.\n\n     - parameter relays: Target relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer from the relay.\n     */\n    func emit(to relays: ReplayRelay<Element?>...) -> Disposable {\n        emit(onNext: { e in\n            relays.forEach { $0.accept(e) }\n        })\n    }\n\n    /**\n     Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     Error callback is not exposed because `Signal` can't error out.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func emit<Object: AnyObject>(\n        with object: Object,\n        onNext: ((Object, Element) -> Void)? = nil,\n        onCompleted: ((Object) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        asObservable().subscribe(\n            with: object,\n            onNext: onNext,\n            onCompleted: onCompleted,\n            onDisposed: onDisposed\n        )\n    }\n\n    /**\n     Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n\n     Error callback is not exposed because `Signal` can't error out.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func emit(\n        onNext: ((Element) -> Void)? = nil,\n        onCompleted: (() -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        asObservable().subscribe(onNext: onNext, onCompleted: onCompleted, onDisposed: onDisposed)\n    }\n\n    /**\n     Subscribes to this `Signal` with a no-op.\n     This method can be only called from `MainThread`.\n\n     - note: This is an alias of `emit(onNext: nil, onCompleted: nil, onDisposed: nil)` used to fix an ambiguity bug in Swift: https://bugs.swift.org/browse/SR-13657\n\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func emit() -> Disposable {\n        emit(onNext: nil, onCompleted: nil, onDisposed: nil)\n    }\n}\n"
  },
  {
    "path": "RxCocoa/Traits/Signal/Signal.swift",
    "content": "//\n//  Signal.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 9/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/**\n Trait that represents observable sequence with following properties:\n\n - it never fails\n - it delivers events on `MainScheduler.instance`\n - `share(scope: .whileConnected)` sharing strategy\n\n Additional explanation:\n - all observers share sequence computation resources\n - there is no replaying of sequence elements on new observer subscription\n - computation of elements is reference counted with respect to the number of observers\n - if there are no subscribers, it will release sequence computation resources\n\n In case trait that models state propagation is required, please check `Driver`.\n\n `Signal<Element>` can be considered a builder pattern for observable sequences that model imperative events part of the application.\n\n To find out more about units and how to use them, please visit `Documentation/Traits.md`.\n */\npublic typealias Signal<Element> = SharedSequence<SignalSharingStrategy, Element>\n\npublic struct SignalSharingStrategy: SharingStrategyProtocol {\n    public static var scheduler: SchedulerType { SharingScheduler.make() }\n\n    public static func share<Element>(_ source: Observable<Element>) -> Observable<Element> {\n        source.share(scope: .whileConnected)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where SharingStrategy == SignalSharingStrategy {\n    /// Adds `asPublisher` to `SharingSequence` with `PublishSharingStrategy`.\n    func asSignal() -> Signal<Element> {\n        asSharedSequence()\n    }\n}\n"
  },
  {
    "path": "RxCocoa/iOS/DataSources/RxCollectionViewReactiveArrayDataSource.swift",
    "content": "//\n//  RxCollectionViewReactiveArrayDataSource.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n// objc monkey business\nclass _RxCollectionViewReactiveArrayDataSource:\n    NSObject,\n    UICollectionViewDataSource\n{\n    @objc(numberOfSectionsInCollectionView:)\n    func numberOfSections(in _: UICollectionView) -> Int {\n        1\n    }\n\n    func _collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {\n        0\n    }\n\n    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        _collectionView(collectionView, numberOfItemsInSection: section)\n    }\n\n    fileprivate func _collectionView(_: UICollectionView, cellForItemAt _: IndexPath) -> UICollectionViewCell {\n        rxAbstractMethod()\n    }\n\n    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        _collectionView(collectionView, cellForItemAt: indexPath)\n    }\n}\n\nclass RxCollectionViewReactiveArrayDataSourceSequenceWrapper<Sequence: Swift.Sequence>:\n    RxCollectionViewReactiveArrayDataSource<Sequence.Element>,\n    RxCollectionViewDataSourceType\n{\n    typealias Element = Sequence\n\n    override init(cellFactory: @escaping CellFactory) {\n        super.init(cellFactory: cellFactory)\n    }\n\n    func collectionView(_ collectionView: UICollectionView, observedEvent: Event<Sequence>) {\n        Binder(self) { collectionViewDataSource, sectionModels in\n            let sections = Array(sectionModels)\n            collectionViewDataSource.collectionView(collectionView, observedElements: sections)\n        }.on(observedEvent)\n    }\n}\n\n// Please take a look at `DelegateProxyType.swift`\nclass RxCollectionViewReactiveArrayDataSource<Element>:\n    _RxCollectionViewReactiveArrayDataSource,\n    SectionedViewDataSourceType\n{\n    typealias CellFactory = (UICollectionView, Int, Element) -> UICollectionViewCell\n\n    var itemModels: [Element]?\n\n    func modelAtIndex(_ index: Int) -> Element? {\n        itemModels?[index]\n    }\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        precondition(indexPath.section == 0)\n        guard let item = itemModels?[indexPath.item] else {\n            throw RxCocoaError.itemsNotYetBound(object: self)\n        }\n        return item\n    }\n\n    var cellFactory: CellFactory\n\n    init(cellFactory: @escaping CellFactory) {\n        self.cellFactory = cellFactory\n    }\n\n    // data source\n\n    override func _collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {\n        itemModels?.count ?? 0\n    }\n\n    override func _collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        cellFactory(collectionView, indexPath.item, itemModels![indexPath.item])\n    }\n\n    // reactive\n\n    func collectionView(_ collectionView: UICollectionView, observedElements: [Element]) {\n        itemModels = observedElements\n\n        collectionView.reloadData()\n\n        // workaround for http://stackoverflow.com/questions/39867325/ios-10-bug-uicollectionview-received-layout-attributes-for-a-cell-with-an-index\n        collectionView.collectionViewLayout.invalidateLayout()\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/DataSources/RxPickerViewAdapter.swift",
    "content": "//\n//  RxPickerViewAdapter.swift\n//  RxCocoa\n//\n//  Created by Sergey Shulga on 12/07/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nclass RxPickerViewArrayDataSource<T>: NSObject, UIPickerViewDataSource, SectionedViewDataSourceType {\n    fileprivate var items: [T] = []\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        guard items.indices ~= indexPath.row else {\n            throw RxCocoaError.itemsNotYetBound(object: self)\n        }\n        return items[indexPath.row]\n    }\n\n    func numberOfComponents(in _: UIPickerView) -> Int {\n        1\n    }\n\n    func pickerView(_: UIPickerView, numberOfRowsInComponent _: Int) -> Int {\n        items.count\n    }\n}\n\nclass RxPickerViewSequenceDataSource<Sequence: Swift.Sequence>:\n    RxPickerViewArrayDataSource<Sequence.Element>,\n    RxPickerViewDataSourceType\n{\n    typealias Element = Sequence\n\n    func pickerView(_ pickerView: UIPickerView, observedEvent: Event<Sequence>) {\n        Binder(self) { dataSource, items in\n            dataSource.items = items\n            pickerView.reloadAllComponents()\n        }\n        .on(observedEvent.map(Array.init))\n    }\n}\n\nfinal class RxStringPickerViewAdapter<Sequence: Swift.Sequence>:\n    RxPickerViewSequenceDataSource<Sequence>,\n    UIPickerViewDelegate\n{\n    typealias TitleForRow = (Int, Sequence.Element) -> String?\n    private let titleForRow: TitleForRow\n\n    init(titleForRow: @escaping TitleForRow) {\n        self.titleForRow = titleForRow\n        super.init()\n    }\n\n    func pickerView(_: UIPickerView, titleForRow row: Int, forComponent _: Int) -> String? {\n        titleForRow(row, items[row])\n    }\n}\n\nfinal class RxAttributedStringPickerViewAdapter<Sequence: Swift.Sequence>: RxPickerViewSequenceDataSource<Sequence>, UIPickerViewDelegate {\n    typealias AttributedTitleForRow = (Int, Sequence.Element) -> NSAttributedString?\n    private let attributedTitleForRow: AttributedTitleForRow\n\n    init(attributedTitleForRow: @escaping AttributedTitleForRow) {\n        self.attributedTitleForRow = attributedTitleForRow\n        super.init()\n    }\n\n    func pickerView(_: UIPickerView, attributedTitleForRow row: Int, forComponent _: Int) -> NSAttributedString? {\n        attributedTitleForRow(row, items[row])\n    }\n}\n\nfinal class RxPickerViewAdapter<Sequence: Swift.Sequence>: RxPickerViewSequenceDataSource<Sequence>, UIPickerViewDelegate {\n    typealias ViewForRow = (Int, Sequence.Element, UIView?) -> UIView\n    private let viewForRow: ViewForRow\n\n    init(viewForRow: @escaping ViewForRow) {\n        self.viewForRow = viewForRow\n        super.init()\n    }\n\n    func pickerView(_: UIPickerView, viewForRow row: Int, forComponent _: Int, reusing view: UIView?) -> UIView {\n        viewForRow(row, items[row], view)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/DataSources/RxTableViewReactiveArrayDataSource.swift",
    "content": "//\n//  RxTableViewReactiveArrayDataSource.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/26/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n// objc monkey business\nclass _RxTableViewReactiveArrayDataSource:\n    NSObject,\n    UITableViewDataSource\n{\n    func numberOfSections(in _: UITableView) -> Int {\n        1\n    }\n\n    func _tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        0\n    }\n\n    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        _tableView(tableView, numberOfRowsInSection: section)\n    }\n\n    fileprivate func _tableView(_: UITableView, cellForRowAt _: IndexPath) -> UITableViewCell {\n        rxAbstractMethod()\n    }\n\n    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        _tableView(tableView, cellForRowAt: indexPath)\n    }\n}\n\nclass RxTableViewReactiveArrayDataSourceSequenceWrapper<Sequence: Swift.Sequence>:\n    RxTableViewReactiveArrayDataSource<Sequence.Element>,\n    RxTableViewDataSourceType\n{\n    typealias Element = Sequence\n\n    override init(cellFactory: @escaping CellFactory) {\n        super.init(cellFactory: cellFactory)\n    }\n\n    func tableView(_ tableView: UITableView, observedEvent: Event<Sequence>) {\n        Binder(self) { tableViewDataSource, sectionModels in\n            let sections = Array(sectionModels)\n            tableViewDataSource.tableView(tableView, observedElements: sections)\n        }.on(observedEvent)\n    }\n}\n\n// Please take a look at `DelegateProxyType.swift`\nclass RxTableViewReactiveArrayDataSource<Element>:\n    _RxTableViewReactiveArrayDataSource,\n    SectionedViewDataSourceType\n{\n    typealias CellFactory = (UITableView, Int, Element) -> UITableViewCell\n\n    var itemModels: [Element]?\n\n    func modelAtIndex(_ index: Int) -> Element? {\n        itemModels?[index]\n    }\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        precondition(indexPath.section == 0)\n        guard let item = itemModels?[indexPath.item] else {\n            throw RxCocoaError.itemsNotYetBound(object: self)\n        }\n        return item\n    }\n\n    let cellFactory: CellFactory\n\n    init(cellFactory: @escaping CellFactory) {\n        self.cellFactory = cellFactory\n    }\n\n    override func _tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        itemModels?.count ?? 0\n    }\n\n    override func _tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        cellFactory(tableView, indexPath.item, itemModels![indexPath.row])\n    }\n\n    // reactive\n\n    func tableView(_ tableView: UITableView, observedElements: [Element]) {\n        itemModels = observedElements\n\n        tableView.reloadData()\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Events/ItemEvents.swift",
    "content": "//\n//  ItemEvents.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/20/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport UIKit\n\npublic typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath)\npublic typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath)\npublic typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath)\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/NSTextStorage+Rx.swift",
    "content": "//\n//  NSTextStorage+Rx.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 12/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: NSTextStorage {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<NSTextStorage, NSTextStorageDelegate> {\n        RxTextStorageDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didProcessEditingRangeChangeInLength: Observable<(editedMask: NSTextStorage.EditActions, editedRange: NSRange, delta: Int)> {\n        delegate\n            .methodInvoked(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:)))\n            .map { a in\n                let editedMask = try NSTextStorage.EditActions(rawValue: castOrThrow(UInt.self, a[1]))\n                let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue\n                let delta = try castOrThrow(Int.self, a[3])\n\n                return (editedMask, editedRange, delta)\n            }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift",
    "content": "//\n//  RxCollectionViewDataSourceType.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods.\npublic protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource */ {\n    /// Type of elements that can be bound to collection view.\n    associatedtype Element\n\n    /// New observable sequence event observed.\n    ///\n    /// - parameter collectionView: Bound collection view.\n    /// - parameter observedEvent: Event\n    func collectionView(_ collectionView: UICollectionView, observedEvent: Event<Element>)\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift",
    "content": "//\n//  RxPickerViewDataSourceType.swift\n//  RxCocoa\n//\n//  Created by Sergey Shulga on 05/07/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods.\npublic protocol RxPickerViewDataSourceType {\n    /// Type of elements that can be bound to picker view.\n    associatedtype Element\n\n    /// New observable sequence event observed.\n    ///\n    /// - parameter pickerView: Bound picker view.\n    /// - parameter observedEvent: Event\n    func pickerView(_ pickerView: UIPickerView, observedEvent: Event<Element>)\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift",
    "content": "//\n//  RxTableViewDataSourceType.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/26/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods.\npublic protocol RxTableViewDataSourceType /*: UITableViewDataSource */ {\n    /// Type of elements that can be bound to table view.\n    associatedtype Element\n\n    /// New observable sequence event observed.\n    ///\n    /// - parameter tableView: Bound table view.\n    /// - parameter observedEvent: Event\n    func tableView(_ tableView: UITableView, observedEvent: Event<Element>)\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxCollectionViewDataSourcePrefetchingProxy.swift",
    "content": "//\n//  RxCollectionViewDataSourcePrefetchingProxy.swift\n//  RxCocoa\n//\n//  Created by Rowan Livingstone on 2/15/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n@available(iOS 10.0, tvOS 10.0, *)\nextension UICollectionView: HasPrefetchDataSource {\n    public typealias PrefetchDataSource = UICollectionViewDataSourcePrefetching\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nprivate let collectionViewPrefetchDataSourceNotSet = CollectionViewPrefetchDataSourceNotSet()\n\n@available(iOS 10.0, tvOS 10.0, *)\nprivate final class CollectionViewPrefetchDataSourceNotSet:\n    NSObject,\n    UICollectionViewDataSourcePrefetching\n{\n    func collectionView(_: UICollectionView, prefetchItemsAt _: [IndexPath]) {}\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nopen class RxCollectionViewDataSourcePrefetchingProxy:\n    DelegateProxy<UICollectionView, UICollectionViewDataSourcePrefetching>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var collectionView: UICollectionView?\n\n    /// - parameter collectionView: Parent object for delegate proxy.\n    public init(collectionView: ParentObject) {\n        self.collectionView = collectionView\n        super.init(parentObject: collectionView, delegateProxy: RxCollectionViewDataSourcePrefetchingProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxCollectionViewDataSourcePrefetchingProxy(collectionView: $0) }\n    }\n\n    private var _prefetchItemsPublishSubject: PublishSubject<[IndexPath]>?\n\n    /// Optimized version used for observing prefetch items callbacks.\n    var prefetchItemsPublishSubject: PublishSubject<[IndexPath]> {\n        if let subject = _prefetchItemsPublishSubject {\n            return subject\n        }\n\n        let subject = PublishSubject<[IndexPath]>()\n        _prefetchItemsPublishSubject = subject\n\n        return subject\n    }\n\n    private weak var _requiredMethodsPrefetchDataSource: UICollectionViewDataSourcePrefetching? = collectionViewPrefetchDataSourceNotSet\n\n    /// For more information take a look at `DelegateProxyType`.\n    override open func setForwardToDelegate(_ forwardToDelegate: UICollectionViewDataSourcePrefetching?, retainDelegate: Bool) {\n        _requiredMethodsPrefetchDataSource = forwardToDelegate ?? collectionViewPrefetchDataSourceNotSet\n        super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)\n    }\n\n    deinit {\n        if let subject = _prefetchItemsPublishSubject {\n            subject.on(.completed)\n        }\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nextension RxCollectionViewDataSourcePrefetchingProxy: UICollectionViewDataSourcePrefetching {\n    /// Required delegate method implementation.\n    public func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath]) {\n        if let subject = _prefetchItemsPublishSubject {\n            subject.on(.next(indexPaths))\n        }\n\n        (_requiredMethodsPrefetchDataSource ?? collectionViewPrefetchDataSourceNotSet).collectionView(collectionView, prefetchItemsAt: indexPaths)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxCollectionViewDataSourceProxy.swift",
    "content": "//\n//  RxCollectionViewDataSourceProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UICollectionView: HasDataSource {\n    public typealias DataSource = UICollectionViewDataSource\n}\n\nprivate let collectionViewDataSourceNotSet = CollectionViewDataSourceNotSet()\n\nprivate final class CollectionViewDataSourceNotSet:\n    NSObject,\n    UICollectionViewDataSource\n{\n    func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {\n        0\n    }\n\n    // The cell that is returned must be retrieved from a call to -dequeueReusableCellWithReuseIdentifier:forIndexPath:\n    func collectionView(_: UICollectionView, cellForItemAt _: IndexPath) -> UICollectionViewCell {\n        rxAbstractMethod(message: dataSourceNotSet)\n    }\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxCollectionViewDataSourceProxy:\n    DelegateProxy<UICollectionView, UICollectionViewDataSource>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var collectionView: UICollectionView?\n\n    /// - parameter collectionView: Parent object for delegate proxy.\n    public init(collectionView: ParentObject) {\n        self.collectionView = collectionView\n        super.init(parentObject: collectionView, delegateProxy: RxCollectionViewDataSourceProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxCollectionViewDataSourceProxy(collectionView: $0) }\n    }\n\n    private weak var _requiredMethodsDataSource: UICollectionViewDataSource? = collectionViewDataSourceNotSet\n\n    /// For more information take a look at `DelegateProxyType`.\n    override open func setForwardToDelegate(_ forwardToDelegate: UICollectionViewDataSource?, retainDelegate: Bool) {\n        _requiredMethodsDataSource = forwardToDelegate ?? collectionViewDataSourceNotSet\n        super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)\n    }\n}\n\nextension RxCollectionViewDataSourceProxy: UICollectionViewDataSource {\n    /// Required delegate method implementation.\n    public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        (_requiredMethodsDataSource ?? collectionViewDataSourceNotSet).collectionView(collectionView, numberOfItemsInSection: section)\n    }\n\n    /// Required delegate method implementation.\n    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        (_requiredMethodsDataSource ?? collectionViewDataSourceNotSet).collectionView(collectionView, cellForItemAt: indexPath)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift",
    "content": "//\n//  RxCollectionViewDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxCollectionViewDelegateProxy:\n    RxScrollViewDelegateProxy\n{\n    /// Typed parent object.\n    public private(set) weak var collectionView: UICollectionView?\n\n    /// Initializes `RxCollectionViewDelegateProxy`\n    ///\n    /// - parameter collectionView: Parent object for delegate proxy.\n    public init(collectionView: UICollectionView) {\n        self.collectionView = collectionView\n        super.init(scrollView: collectionView)\n    }\n}\n\nextension RxCollectionViewDelegateProxy: UICollectionViewDelegateFlowLayout {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift",
    "content": "//\n//  RxNavigationControllerDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Diogo on 13/04/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UINavigationController: HasDelegate {\n    public typealias Delegate = UINavigationControllerDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxNavigationControllerDelegateProxy:\n    DelegateProxy<UINavigationController, UINavigationControllerDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var navigationController: UINavigationController?\n\n    /// - parameter navigationController: Parent object for delegate proxy.\n    public init(navigationController: ParentObject) {\n        self.navigationController = navigationController\n        super.init(parentObject: navigationController, delegateProxy: RxNavigationControllerDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxNavigationControllerDelegateProxy(navigationController: $0) }\n    }\n}\n\nextension RxNavigationControllerDelegateProxy: UINavigationControllerDelegate {}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxPickerViewDataSourceProxy.swift",
    "content": "//\n//  RxPickerViewDataSourceProxy.swift\n//  RxCocoa\n//\n//  Created by Sergey Shulga on 05/07/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UIPickerView: HasDataSource {\n    public typealias DataSource = UIPickerViewDataSource\n}\n\nprivate let pickerViewDataSourceNotSet = PickerViewDataSourceNotSet()\n\nprivate final class PickerViewDataSourceNotSet: NSObject, UIPickerViewDataSource {\n    func numberOfComponents(in _: UIPickerView) -> Int {\n        0\n    }\n\n    func pickerView(_: UIPickerView, numberOfRowsInComponent _: Int) -> Int {\n        0\n    }\n}\n\n/// For more information take a look at `DelegateProxyType`.\npublic class RxPickerViewDataSourceProxy:\n    DelegateProxy<UIPickerView, UIPickerViewDataSource>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var pickerView: UIPickerView?\n\n    /// - parameter pickerView: Parent object for delegate proxy.\n    public init(pickerView: ParentObject) {\n        self.pickerView = pickerView\n        super.init(parentObject: pickerView, delegateProxy: RxPickerViewDataSourceProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxPickerViewDataSourceProxy(pickerView: $0) }\n    }\n\n    private weak var _requiredMethodsDataSource: UIPickerViewDataSource? = pickerViewDataSourceNotSet\n\n    /// For more information take a look at `DelegateProxyType`.\n    override public func setForwardToDelegate(_ forwardToDelegate: UIPickerViewDataSource?, retainDelegate: Bool) {\n        _requiredMethodsDataSource = forwardToDelegate ?? pickerViewDataSourceNotSet\n        super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)\n    }\n}\n\n// MARK: UIPickerViewDataSource\n\nextension RxPickerViewDataSourceProxy: UIPickerViewDataSource {\n    /// Required delegate method implementation.\n    public func numberOfComponents(in pickerView: UIPickerView) -> Int {\n        (_requiredMethodsDataSource ?? pickerViewDataSourceNotSet).numberOfComponents(in: pickerView)\n    }\n\n    /// Required delegate method implementation.\n    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {\n        (_requiredMethodsDataSource ?? pickerViewDataSourceNotSet).pickerView(pickerView, numberOfRowsInComponent: component)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift",
    "content": "//\n//  RxPickerViewDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 5/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UIPickerView: HasDelegate {\n    public typealias Delegate = UIPickerViewDelegate\n}\n\nopen class RxPickerViewDelegateProxy:\n    DelegateProxy<UIPickerView, UIPickerViewDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var pickerView: UIPickerView?\n\n    /// - parameter pickerView: Parent object for delegate proxy.\n    public init(pickerView: ParentObject) {\n        self.pickerView = pickerView\n        super.init(parentObject: pickerView, delegateProxy: RxPickerViewDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxPickerViewDelegateProxy(pickerView: $0) }\n    }\n}\n\nextension RxPickerViewDelegateProxy: UIPickerViewDelegate {}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxScrollViewDelegateProxy.swift",
    "content": "//\n//  RxScrollViewDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UIScrollView: HasDelegate {\n    public typealias Delegate = UIScrollViewDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxScrollViewDelegateProxy:\n    DelegateProxy<UIScrollView, UIScrollViewDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var scrollView: UIScrollView?\n\n    /// - parameter scrollView: Parent object for delegate proxy.\n    public init(scrollView: ParentObject) {\n        self.scrollView = scrollView\n        super.init(parentObject: scrollView, delegateProxy: RxScrollViewDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxScrollViewDelegateProxy(scrollView: $0) }\n        register { RxTableViewDelegateProxy(tableView: $0) }\n        register { RxCollectionViewDelegateProxy(collectionView: $0) }\n        register { RxTextViewDelegateProxy(textView: $0) }\n    }\n\n    private var _contentOffsetBehaviorSubject: BehaviorSubject<CGPoint>?\n    private var _contentOffsetPublishSubject: PublishSubject<Void>?\n\n    /// Optimized version used for observing content offset changes.\n    var contentOffsetBehaviorSubject: BehaviorSubject<CGPoint> {\n        if let subject = _contentOffsetBehaviorSubject {\n            return subject\n        }\n\n        let subject = BehaviorSubject<CGPoint>(value: scrollView?.contentOffset ?? CGPoint.zero)\n        _contentOffsetBehaviorSubject = subject\n\n        return subject\n    }\n\n    /// Optimized version used for observing content offset changes.\n    var contentOffsetPublishSubject: PublishSubject<Void> {\n        if let subject = _contentOffsetPublishSubject {\n            return subject\n        }\n\n        let subject = PublishSubject<Void>()\n        _contentOffsetPublishSubject = subject\n\n        return subject\n    }\n\n    deinit {\n        if let subject = _contentOffsetBehaviorSubject {\n            subject.on(.completed)\n        }\n\n        if let subject = _contentOffsetPublishSubject {\n            subject.on(.completed)\n        }\n    }\n}\n\nextension RxScrollViewDelegateProxy: UIScrollViewDelegate {\n    /// For more information take a look at `DelegateProxyType`.\n    public func scrollViewDidScroll(_ scrollView: UIScrollView) {\n        if let subject = _contentOffsetBehaviorSubject {\n            subject.on(.next(scrollView.contentOffset))\n        }\n        if let subject = _contentOffsetPublishSubject {\n            subject.on(.next(()))\n        }\n        _forwardToDelegate?.scrollViewDidScroll?(scrollView)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift",
    "content": "//\n//  RxSearchBarDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UISearchBar: HasDelegate {\n    public typealias Delegate = UISearchBarDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxSearchBarDelegateProxy:\n    DelegateProxy<UISearchBar, UISearchBarDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var searchBar: UISearchBar?\n\n    /// - parameter searchBar: Parent object for delegate proxy.\n    public init(searchBar: ParentObject) {\n        self.searchBar = searchBar\n        super.init(parentObject: searchBar, delegateProxy: RxSearchBarDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxSearchBarDelegateProxy(searchBar: $0) }\n    }\n}\n\nextension RxSearchBarDelegateProxy: UISearchBarDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift",
    "content": "//\n//  RxSearchControllerDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 3/17/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UISearchController: HasDelegate {\n    public typealias Delegate = UISearchControllerDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxSearchControllerDelegateProxy:\n    DelegateProxy<UISearchController, UISearchControllerDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var searchController: UISearchController?\n\n    /// - parameter searchController: Parent object for delegate proxy.\n    public init(searchController: UISearchController) {\n        self.searchController = searchController\n        super.init(parentObject: searchController, delegateProxy: RxSearchControllerDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxSearchControllerDelegateProxy(searchController: $0) }\n    }\n}\n\nextension RxSearchControllerDelegateProxy: UISearchControllerDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift",
    "content": "//\n//  RxTabBarControllerDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Yusuke Kita on 2016/12/07.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxSwift\nimport UIKit\n\nextension UITabBarController: HasDelegate {\n    public typealias Delegate = UITabBarControllerDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTabBarControllerDelegateProxy:\n    DelegateProxy<UITabBarController, UITabBarControllerDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var tabBar: UITabBarController?\n\n    /// - parameter tabBar: Parent object for delegate proxy.\n    public init(tabBar: ParentObject) {\n        self.tabBar = tabBar\n        super.init(parentObject: tabBar, delegateProxy: RxTabBarControllerDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxTabBarControllerDelegateProxy(tabBar: $0) }\n    }\n}\n\nextension RxTabBarControllerDelegateProxy: UITabBarControllerDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift",
    "content": "//\n//  RxTabBarDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Jesse Farless on 5/14/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxSwift\nimport UIKit\n\nextension UITabBar: HasDelegate {\n    public typealias Delegate = UITabBarDelegate\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTabBarDelegateProxy:\n    DelegateProxy<UITabBar, UITabBarDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var tabBar: UITabBar?\n\n    /// - parameter tabBar: Parent object for delegate proxy.\n    public init(tabBar: ParentObject) {\n        self.tabBar = tabBar\n        super.init(parentObject: tabBar, delegateProxy: RxTabBarDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxTabBarDelegateProxy(tabBar: $0) }\n    }\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func currentDelegate(for object: ParentObject) -> UITabBarDelegate? {\n        object.delegate\n    }\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func setCurrentDelegate(_ delegate: UITabBarDelegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n}\n\nextension RxTabBarDelegateProxy: UITabBarDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTableViewDataSourcePrefetchingProxy.swift",
    "content": "//\n//  RxTableViewDataSourcePrefetchingProxy.swift\n//  RxCocoa\n//\n//  Created by Rowan Livingstone on 2/15/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n@available(iOS 10.0, tvOS 10.0, *)\nextension UITableView: HasPrefetchDataSource {\n    public typealias PrefetchDataSource = UITableViewDataSourcePrefetching\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nprivate let tableViewPrefetchDataSourceNotSet = TableViewPrefetchDataSourceNotSet()\n\n@available(iOS 10.0, tvOS 10.0, *)\nprivate final class TableViewPrefetchDataSourceNotSet:\n    NSObject,\n    UITableViewDataSourcePrefetching\n{\n    func tableView(_: UITableView, prefetchRowsAt _: [IndexPath]) {}\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nopen class RxTableViewDataSourcePrefetchingProxy:\n    DelegateProxy<UITableView, UITableViewDataSourcePrefetching>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var tableView: UITableView?\n\n    /// - parameter tableView: Parent object for delegate proxy.\n    public init(tableView: ParentObject) {\n        self.tableView = tableView\n        super.init(parentObject: tableView, delegateProxy: RxTableViewDataSourcePrefetchingProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxTableViewDataSourcePrefetchingProxy(tableView: $0) }\n    }\n\n    private var _prefetchRowsPublishSubject: PublishSubject<[IndexPath]>?\n\n    /// Optimized version used for observing prefetch rows callbacks.\n    var prefetchRowsPublishSubject: PublishSubject<[IndexPath]> {\n        if let subject = _prefetchRowsPublishSubject {\n            return subject\n        }\n\n        let subject = PublishSubject<[IndexPath]>()\n        _prefetchRowsPublishSubject = subject\n\n        return subject\n    }\n\n    private weak var _requiredMethodsPrefetchDataSource: UITableViewDataSourcePrefetching? = tableViewPrefetchDataSourceNotSet\n\n    /// For more information take a look at `DelegateProxyType`.\n    override open func setForwardToDelegate(_ forwardToDelegate: UITableViewDataSourcePrefetching?, retainDelegate: Bool) {\n        _requiredMethodsPrefetchDataSource = forwardToDelegate ?? tableViewPrefetchDataSourceNotSet\n        super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)\n    }\n\n    deinit {\n        if let subject = _prefetchRowsPublishSubject {\n            subject.on(.completed)\n        }\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nextension RxTableViewDataSourcePrefetchingProxy: UITableViewDataSourcePrefetching {\n    /// Required delegate method implementation.\n    public func tableView(_ tableView: UITableView, prefetchRowsAt indexPaths: [IndexPath]) {\n        if let subject = _prefetchRowsPublishSubject {\n            subject.on(.next(indexPaths))\n        }\n\n        (_requiredMethodsPrefetchDataSource ?? tableViewPrefetchDataSourceNotSet).tableView(tableView, prefetchRowsAt: indexPaths)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTableViewDataSourceProxy.swift",
    "content": "//\n//  RxTableViewDataSourceProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension UITableView: HasDataSource {\n    public typealias DataSource = UITableViewDataSource\n}\n\nprivate let tableViewDataSourceNotSet = TableViewDataSourceNotSet()\n\nprivate final class TableViewDataSourceNotSet:\n    NSObject,\n    UITableViewDataSource\n{\n    func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        0\n    }\n\n    func tableView(_: UITableView, cellForRowAt _: IndexPath) -> UITableViewCell {\n        rxAbstractMethod(message: dataSourceNotSet)\n    }\n}\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTableViewDataSourceProxy:\n    DelegateProxy<UITableView, UITableViewDataSource>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var tableView: UITableView?\n\n    /// - parameter tableView: Parent object for delegate proxy.\n    public init(tableView: UITableView) {\n        self.tableView = tableView\n        super.init(parentObject: tableView, delegateProxy: RxTableViewDataSourceProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxTableViewDataSourceProxy(tableView: $0) }\n    }\n\n    private weak var _requiredMethodsDataSource: UITableViewDataSource? = tableViewDataSourceNotSet\n\n    /// For more information take a look at `DelegateProxyType`.\n    override open func setForwardToDelegate(_ forwardToDelegate: UITableViewDataSource?, retainDelegate: Bool) {\n        _requiredMethodsDataSource = forwardToDelegate ?? tableViewDataSourceNotSet\n        super.setForwardToDelegate(forwardToDelegate, retainDelegate: retainDelegate)\n    }\n}\n\nextension RxTableViewDataSourceProxy: UITableViewDataSource {\n    /// Required delegate method implementation.\n    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {\n        (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, numberOfRowsInSection: section)\n    }\n\n    /// Required delegate method implementation.\n    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        (_requiredMethodsDataSource ?? tableViewDataSourceNotSet).tableView(tableView, cellForRowAt: indexPath)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift",
    "content": "//\n//  RxTableViewDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 6/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTableViewDelegateProxy:\n    RxScrollViewDelegateProxy\n{\n    /// Typed parent object.\n    public private(set) weak var tableView: UITableView?\n\n    /// - parameter tableView: Parent object for delegate proxy.\n    public init(tableView: UITableView) {\n        self.tableView = tableView\n        super.init(scrollView: tableView)\n    }\n}\n\nextension RxTableViewDelegateProxy: UITableViewDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift",
    "content": "//\n//  RxTextStorageDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 12/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nextension NSTextStorage: HasDelegate {\n    public typealias Delegate = NSTextStorageDelegate\n}\n\nopen class RxTextStorageDelegateProxy:\n    DelegateProxy<NSTextStorage, NSTextStorageDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var textStorage: NSTextStorage?\n\n    /// - parameter textStorage: Parent object for delegate proxy.\n    public init(textStorage: NSTextStorage) {\n        self.textStorage = textStorage\n        super.init(parentObject: textStorage, delegateProxy: RxTextStorageDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxTextStorageDelegateProxy(textStorage: $0) }\n    }\n}\n\nextension RxTextStorageDelegateProxy: NSTextStorageDelegate {}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift",
    "content": "//\n//  RxTextViewDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Yuta ToKoRo on 7/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTextViewDelegateProxy:\n    RxScrollViewDelegateProxy\n{\n    /// Typed parent object.\n    public private(set) weak var textView: UITextView?\n\n    /// - parameter textview: Parent object for delegate proxy.\n    public init(textView: UITextView) {\n        self.textView = textView\n        super.init(scrollView: textView)\n    }\n}\n\nextension RxTextViewDelegateProxy: UITextViewDelegate {\n    /// For more information take a look at `DelegateProxyType`.\n    @objc open func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {\n        /**\n          We've had some issues with observing text changes. This is here just in case we need the same hack in future and that\n          we wouldn't need to change the public interface.\n         */\n        let forwardToDelegate = forwardToDelegate() as? UITextViewDelegate\n        return forwardToDelegate?.textView?(\n            textView,\n            shouldChangeTextIn: range,\n            replacementText: text\n        ) ?? true\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift",
    "content": "//\n//  RxWKNavigationDelegateProxy.swift\n//  RxCocoa\n//\n//  Created by Giuseppe Lanza on 14/02/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(macOS)\n\nimport RxSwift\nimport WebKit\n\n@available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *)\nopen class RxWKNavigationDelegateProxy:\n    DelegateProxy<WKWebView, WKNavigationDelegate>,\n    DelegateProxyType\n{\n    /// Typed parent object.\n    public private(set) weak var webView: WKWebView?\n\n    /// - parameter webView: Parent object for delegate proxy.\n    public init(webView: ParentObject) {\n        self.webView = webView\n        super.init(parentObject: webView, delegateProxy: RxWKNavigationDelegateProxy.self)\n    }\n\n    // Register known implementations\n    public static func registerKnownImplementations() {\n        register { RxWKNavigationDelegateProxy(webView: $0) }\n    }\n\n    public static func currentDelegate(for object: WKWebView) -> WKNavigationDelegate? {\n        object.navigationDelegate\n    }\n\n    public static func setCurrentDelegate(_ delegate: WKNavigationDelegate?, to object: WKWebView) {\n        object.navigationDelegate = delegate\n    }\n}\n\n@available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *)\nextension RxWKNavigationDelegateProxy: WKNavigationDelegate {}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIActivityIndicatorView+Rx.swift",
    "content": "//\n//  UIActivityIndicatorView+Rx.swift\n//  RxCocoa\n//\n//  Created by Ivan Persidskiy on 02/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIActivityIndicatorView {\n    /// Bindable sink for `startAnimating()`, `stopAnimating()` methods.\n    var isAnimating: Binder<Bool> {\n        Binder(base) { activityIndicator, active in\n            if active {\n                activityIndicator.startAnimating()\n            } else {\n                activityIndicator.stopAnimating()\n            }\n        }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIApplication+Rx.swift",
    "content": "//\n//  UIApplication+Rx.swift\n//  RxCocoa\n//\n//  Created by Mads Bøgeskov on 18/01/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n#endif\n\n#if os(iOS)\npublic extension Reactive where Base: UIApplication {\n    /// Bindable sink for `isNetworkActivityIndicatorVisible`.\n    var isNetworkActivityIndicatorVisible: Binder<Bool> {\n        Binder(base) { application, active in\n            application.isNetworkActivityIndicatorVisible = active\n        }\n    }\n}\n#endif\n\n#if os(iOS) || os(visionOS)\npublic extension Reactive where Base: UIApplication {\n    /// Reactive wrapper for `UIApplication.didEnterBackgroundNotification`\n    static var didEnterBackground: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.didEnterBackgroundNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.willEnterForegroundNotification`\n    static var willEnterForeground: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.willEnterForegroundNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.didFinishLaunchingNotification`\n    static var didFinishLaunching: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.didFinishLaunchingNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.didBecomeActiveNotification`\n    static var didBecomeActive: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.didBecomeActiveNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.willResignActiveNotification`\n    static var willResignActive: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.willResignActiveNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.didReceiveMemoryWarningNotification`\n    static var didReceiveMemoryWarning: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.didReceiveMemoryWarningNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.willTerminateNotification`\n    static var willTerminate: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.willTerminateNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.significantTimeChangeNotification`\n    static var significantTimeChange: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.significantTimeChangeNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.backgroundRefreshStatusDidChangeNotification`\n    static var backgroundRefreshStatusDidChange: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.backgroundRefreshStatusDidChangeNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.protectedDataWillBecomeUnavailableNotification`\n    static var protectedDataWillBecomeUnavailable: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.protectedDataWillBecomeUnavailableNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.protectedDataDidBecomeAvailableNotification`\n    static var protectedDataDidBecomeAvailable: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.protectedDataDidBecomeAvailableNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `UIApplication.userDidTakeScreenshotNotification`\n    static var userDidTakeScreenshot: ControlEvent<Void> {\n        let source = NotificationCenter.default.rx.notification(UIApplication.userDidTakeScreenshotNotification).map { _ in }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIBarButtonItem+Rx.swift",
    "content": "//\n//  UIBarButtonItem+Rx.swift\n//  RxCocoa\n//\n//  Created by Daniel Tartaglia on 5/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\nprivate var rx_tap_key: UInt8 = 0\n\npublic extension Reactive where Base: UIBarButtonItem {\n    /// Reactive wrapper for target action pattern on `self`.\n    var tap: ControlEvent<Void> {\n        let source = lazyInstanceObservable(&rx_tap_key) { () -> Observable<Void> in\n            Observable.create { [weak control = self.base] observer in\n                guard let control else {\n                    observer.on(.completed)\n                    return Disposables.create()\n                }\n                let target = BarButtonItemTarget(barButtonItem: control) {\n                    observer.on(.next(()))\n                }\n                return target\n            }\n            .take(until: self.deallocated)\n            .share()\n        }\n\n        return ControlEvent(events: source)\n    }\n}\n\n@objc\nfinal class BarButtonItemTarget: RxTarget {\n    typealias Callback = () -> Void\n\n    weak var barButtonItem: UIBarButtonItem?\n    var callback: Callback!\n\n    init(barButtonItem: UIBarButtonItem, callback: @escaping () -> Void) {\n        self.barButtonItem = barButtonItem\n        self.callback = callback\n        super.init()\n        barButtonItem.target = self\n        barButtonItem.action = #selector(BarButtonItemTarget.action(_:))\n    }\n\n    override func dispose() {\n        super.dispose()\n        #if DEBUG\n        MainScheduler.ensureRunningOnMainThread()\n        #endif\n\n        barButtonItem?.target = nil\n        barButtonItem?.action = nil\n\n        callback = nil\n    }\n\n    @objc func action(_: AnyObject) {\n        callback()\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIButton+Rx.swift",
    "content": "//\n//  UIButton+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIButton {\n    /// Reactive wrapper for `TouchUpInside` control event.\n    var tap: ControlEvent<Void> {\n        controlEvent(.touchUpInside)\n    }\n}\n\n#endif\n\n#if os(tvOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIButton {\n    /// Reactive wrapper for `PrimaryActionTriggered` control event.\n    var primaryAction: ControlEvent<Void> {\n        controlEvent(.primaryActionTriggered)\n    }\n}\n\n#endif\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIButton {\n    /// Reactive wrapper for `setTitle(_:for:)`\n    func title(for controlState: UIControl.State = []) -> Binder<String?> {\n        Binder(base) { button, title in\n            button.setTitle(title, for: controlState)\n        }\n    }\n\n    /// Reactive wrapper for `setImage(_:for:)`\n    func image(for controlState: UIControl.State = []) -> Binder<UIImage?> {\n        Binder(base) { button, image in\n            button.setImage(image, for: controlState)\n        }\n    }\n\n    /// Reactive wrapper for `setBackgroundImage(_:for:)`\n    func backgroundImage(for controlState: UIControl.State = []) -> Binder<UIImage?> {\n        Binder(base) { button, image in\n            button.setBackgroundImage(image, for: controlState)\n        }\n    }\n}\n#endif\n\n#if os(iOS) || os(tvOS) || os(visionOS)\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIButton {\n    /// Reactive wrapper for `setAttributedTitle(_:controlState:)`\n    func attributedTitle(for controlState: UIControl.State = []) -> Binder<NSAttributedString?> {\n        Binder(base) { button, attributedTitle in\n            button.setAttributedTitle(attributedTitle, for: controlState)\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UICollectionView+Rx.swift",
    "content": "//\n//  UICollectionView+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 4/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n// Items\n\npublic extension Reactive where Base: UICollectionView {\n    /**\n     Binds sequences of elements to collection view items.\n\n     - parameter source: Observable sequence of items.\n     - parameter cellFactory: Transform between sequence elements and view cells.\n     - returns: Disposable object that can be used to unbind.\n\n      Example\n\n          let items = Observable.just([\n              1,\n              2,\n              3\n          ])\n\n          items\n          .bind(to: collectionView.rx.items) { (collectionView, row, element) in\n             let indexPath = IndexPath(row: row, section: 0)\n             let cell = collectionView.dequeueReusableCell(withReuseIdentifier: \"Cell\", for: indexPath) as! NumberCell\n              cell.value?.text = \"\\(element) @ \\(row)\"\n              return cell\n          }\n          .disposed(by: disposeBag)\n     */\n    func items<Sequence: Swift.Sequence, Source: ObservableType>\n    (_ source: Source)\n        -> (_ cellFactory: @escaping (UICollectionView, Int, Sequence.Element) -> UICollectionViewCell)\n        -> Disposable where Source.Element == Sequence\n    {\n        { cellFactory in\n            let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<Sequence>(cellFactory: cellFactory)\n            return self.items(dataSource: dataSource)(source)\n        }\n    }\n\n    /**\n     Binds sequences of elements to collection view items.\n\n     - parameter cellIdentifier: Identifier used to dequeue cells.\n     - parameter source: Observable sequence of items.\n     - parameter configureCell: Transform between sequence elements and view cells.\n     - parameter cellType: Type of collection view cell.\n     - returns: Disposable object that can be used to unbind.\n\n      Example\n\n          let items = Observable.just([\n              1,\n              2,\n              3\n          ])\n\n          items\n              .bind(to: collectionView.rx.items(cellIdentifier: \"Cell\", cellType: NumberCell.self)) { (row, element, cell) in\n                 cell.value?.text = \"\\(element) @ \\(row)\"\n              }\n              .disposed(by: disposeBag)\n     */\n    func items<Sequence: Swift.Sequence, Cell: UICollectionViewCell, Source: ObservableType>\n    (cellIdentifier: String, cellType _: Cell.Type = Cell.self)\n        -> (_ source: Source)\n        -> (_ configureCell: @escaping (Int, Sequence.Element, Cell) -> Void)\n        -> Disposable where Source.Element == Sequence\n    {\n        { source in\n            { configureCell in\n                let dataSource = RxCollectionViewReactiveArrayDataSourceSequenceWrapper<Sequence> { cv, i, item in\n                    let indexPath = IndexPath(item: i, section: 0)\n                    let cell = cv.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! Cell\n                    configureCell(i, item, cell)\n                    return cell\n                }\n\n                return self.items(dataSource: dataSource)(source)\n            }\n        }\n    }\n\n    /**\n     Binds sequences of elements to collection view items using a custom reactive data used to perform the transformation.\n\n     - parameter dataSource: Data source used to transform elements to view cells.\n     - parameter source: Observable sequence of items.\n     - returns: Disposable object that can be used to unbind.\n\n      Example\n\n          let dataSource = RxCollectionViewSectionedReloadDataSource<SectionModel<String, Double>>()\n\n          let items = Observable.just([\n              SectionModel(model: \"First section\", items: [\n                  1.0,\n                  2.0,\n                  3.0\n              ]),\n              SectionModel(model: \"Second section\", items: [\n                  1.0,\n                  2.0,\n                  3.0\n              ]),\n              SectionModel(model: \"Third section\", items: [\n                  1.0,\n                  2.0,\n                  3.0\n              ])\n          ])\n\n          dataSource.configureCell = { (dataSource, cv, indexPath, element) in\n              let cell = cv.dequeueReusableCell(withReuseIdentifier: \"Cell\", for: indexPath) as! NumberCell\n              cell.value?.text = \"\\(element) @ row \\(indexPath.row)\"\n              return cell\n          }\n\n          items\n             .bind(to: collectionView.rx.items(dataSource: dataSource))\n             .disposed(by: disposeBag)\n     */\n    func items<\n        DataSource: RxCollectionViewDataSourceType & UICollectionViewDataSource,\n        Source: ObservableType\n    >\n    (dataSource: DataSource)\n        -> (_ source: Source)\n        -> Disposable where DataSource.Element == Source.Element\n    {\n        { source in\n            // This is called for side effects only, and to make sure delegate proxy is in place when\n            // data source is being bound.\n            // This is needed because theoretically the data source subscription itself might\n            // call `self.rx.delegate`. If that happens, it might cause weird side effects since\n            // setting data source will set delegate, and UICollectionView might get into a weird state.\n            // Therefore it's better to set delegate proxy first, just to be sure.\n            _ = self.delegate\n            // Strong reference is needed because data source is in use until result subscription is disposed\n            return source.subscribeProxyDataSource(ofObject: self.base, dataSource: dataSource, retainDataSource: true) { [weak collectionView = self.base] (_: RxCollectionViewDataSourceProxy, event) in\n                guard let collectionView else {\n                    return\n                }\n                dataSource.collectionView(collectionView, observedEvent: event)\n            }\n        }\n    }\n}\n\npublic extension Reactive where Base: UICollectionView {\n    typealias DisplayCollectionViewCellEvent = (cell: UICollectionViewCell, at: IndexPath)\n    typealias DisplayCollectionViewSupplementaryViewEvent = (supplementaryView: UICollectionReusableView, elementKind: String, at: IndexPath)\n\n    /// Reactive wrapper for `dataSource`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var dataSource: DelegateProxy<UICollectionView, UICollectionViewDataSource> {\n        RxCollectionViewDataSourceProxy.proxy(for: base)\n    }\n\n    /// Installs data source as forwarding delegate on `rx.dataSource`.\n    /// Data source won't be retained.\n    ///\n    /// It enables using normal delegate mechanism with reactive delegate mechanism.\n    ///\n    /// - parameter dataSource: Data source object.\n    /// - returns: Disposable object that can be used to unbind the data source.\n    func setDataSource(_ dataSource: UICollectionViewDataSource)\n        -> Disposable\n    {\n        RxCollectionViewDataSourceProxy.installForwardDelegate(dataSource, retainDelegate: false, onProxyForObject: base)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didSelectItemAtIndexPath:)`.\n    var itemSelected: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didSelectItemAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didDeselectItemAtIndexPath:)`.\n    var itemDeselected: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didDeselectItemAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didHighlightItemAt:)`.\n    var itemHighlighted: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didHighlightItemAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didUnhighlightItemAt:)`.\n    var itemUnhighlighted: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didUnhighlightItemAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView:willDisplay:forItemAt:`.\n    var willDisplayCell: ControlEvent<DisplayCollectionViewCellEvent> {\n        let source: Observable<DisplayCollectionViewCellEvent> = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:willDisplay:forItemAt:)))\n            .map { a in\n                try (castOrThrow(UICollectionViewCell.self, a[1]), castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:willDisplaySupplementaryView:forElementKind:at:)`.\n    var willDisplaySupplementaryView: ControlEvent<DisplayCollectionViewSupplementaryViewEvent> {\n        let source: Observable<DisplayCollectionViewSupplementaryViewEvent> = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:willDisplaySupplementaryView:forElementKind:at:)))\n            .map { a in\n                try (\n                    castOrThrow(UICollectionReusableView.self, a[1]),\n                    castOrThrow(String.self, a[2]),\n                    castOrThrow(IndexPath.self, a[3])\n                )\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView:didEndDisplaying:forItemAt:`.\n    var didEndDisplayingCell: ControlEvent<DisplayCollectionViewCellEvent> {\n        let source: Observable<DisplayCollectionViewCellEvent> = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didEndDisplaying:forItemAt:)))\n            .map { a in\n                try (castOrThrow(UICollectionViewCell.self, a[1]), castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didEndDisplayingSupplementaryView:forElementOfKind:at:)`.\n    var didEndDisplayingSupplementaryView: ControlEvent<DisplayCollectionViewSupplementaryViewEvent> {\n        let source: Observable<DisplayCollectionViewSupplementaryViewEvent> = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didEndDisplayingSupplementaryView:forElementOfKind:at:)))\n            .map { a in\n                try (\n                    castOrThrow(UICollectionReusableView.self, a[1]),\n                    castOrThrow(String.self, a[2]),\n                    castOrThrow(IndexPath.self, a[3])\n                )\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didSelectItemAtIndexPath:)`.\n    ///\n    /// It can be only used when one of the `rx.itemsWith*` methods is used to bind observable sequence,\n    /// or any other data source conforming to `SectionedViewDataSourceType` protocol.\n    ///\n    /// ```\n    ///     collectionView.rx.modelSelected(MyModel.self)\n    ///        .map { ...\n    /// ```\n    func modelSelected<T>(_: T.Type) -> ControlEvent<T> {\n        let source: Observable<T> = itemSelected.flatMap { [weak view = self.base as UICollectionView] indexPath -> Observable<T> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            return try Observable.just(view.rx.model(at: indexPath))\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `collectionView(_:didSelectItemAtIndexPath:)`.\n    ///\n    /// It can be only used when one of the `rx.itemsWith*` methods is used to bind observable sequence,\n    /// or any other data source conforming to `SectionedViewDataSourceType` protocol.\n    ///\n    /// ```\n    ///     collectionView.rx.modelDeselected(MyModel.self)\n    ///        .map { ...\n    /// ```\n    func modelDeselected<T>(_: T.Type) -> ControlEvent<T> {\n        let source: Observable<T> = itemDeselected.flatMap { [weak view = self.base as UICollectionView] indexPath -> Observable<T> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            return try Observable.just(view.rx.model(at: indexPath))\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Synchronous helper method for retrieving a model at indexPath through a reactive data source\n    func model<T>(at indexPath: IndexPath) throws -> T {\n        let dataSource: SectionedViewDataSourceType = castOrFatalError(dataSource.forwardToDelegate(), message: \"This method only works in case one of the `rx.itemsWith*` methods was used.\")\n\n        let element = try dataSource.model(at: indexPath)\n\n        return try castOrThrow(T.self, element)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\npublic extension Reactive where Base: UICollectionView {\n    /// Reactive wrapper for `prefetchDataSource`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var prefetchDataSource: DelegateProxy<UICollectionView, UICollectionViewDataSourcePrefetching> {\n        RxCollectionViewDataSourcePrefetchingProxy.proxy(for: base)\n    }\n\n    /**\n     Installs prefetch data source as forwarding delegate on `rx.prefetchDataSource`.\n     Prefetch data source won't be retained.\n\n     It enables using normal delegate mechanism with reactive delegate mechanism.\n\n     - parameter prefetchDataSource: Prefetch data source object.\n     - returns: Disposable object that can be used to unbind the data source.\n     */\n    func setPrefetchDataSource(_ prefetchDataSource: UICollectionViewDataSourcePrefetching)\n        -> Disposable\n    {\n        RxCollectionViewDataSourcePrefetchingProxy.installForwardDelegate(prefetchDataSource, retainDelegate: false, onProxyForObject: base)\n    }\n\n    /// Reactive wrapper for `prefetchDataSource` message `collectionView(_:prefetchItemsAt:)`.\n    var prefetchItems: ControlEvent<[IndexPath]> {\n        let source = RxCollectionViewDataSourcePrefetchingProxy.proxy(for: base).prefetchItemsPublishSubject\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `prefetchDataSource` message `collectionView(_:cancelPrefetchingForItemsAt:)`.\n    var cancelPrefetchingForItems: ControlEvent<[IndexPath]> {\n        let source = prefetchDataSource.methodInvoked(#selector(UICollectionViewDataSourcePrefetching.collectionView(_:cancelPrefetchingForItemsAt:)))\n            .map { a in\n                try castOrThrow([IndexPath].self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n\n#if os(tvOS)\n\npublic extension Reactive where Base: UICollectionView {\n    /// Reactive wrapper for `delegate` message `collectionView(_:didUpdateFocusInContext:withAnimationCoordinator:)`.\n    var didUpdateFocusInContextWithAnimationCoordinator: ControlEvent<(context: UICollectionViewFocusUpdateContext, animationCoordinator: UIFocusAnimationCoordinator)> {\n        let source = delegate.methodInvoked(#selector(UICollectionViewDelegate.collectionView(_:didUpdateFocusIn:with:)))\n            .map { a -> (context: UICollectionViewFocusUpdateContext, animationCoordinator: UIFocusAnimationCoordinator) in\n                let context = try castOrThrow(UICollectionViewFocusUpdateContext.self, a[1])\n                let animationCoordinator = try castOrThrow(UIFocusAnimationCoordinator.self, a[2])\n                return (context: context, animationCoordinator: animationCoordinator)\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIControl+Rx.swift",
    "content": "//\n//  UIControl+Rx.swift\n//  RxCocoa\n//\n//  Created by Daniel Tartaglia on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIControl {\n    /// Reactive wrapper for target action pattern.\n    ///\n    /// - parameter controlEvents: Filter for observed event types.\n    func controlEvent(_ controlEvents: UIControl.Event) -> ControlEvent<Void> {\n        let source: Observable<Void> = Observable.create { [weak control = self.base] observer in\n            MainScheduler.ensureRunningOnMainThread()\n\n            guard let control else {\n                observer.on(.completed)\n                return Disposables.create()\n            }\n\n            let controlTarget = ControlTarget(control: control, controlEvents: controlEvents) { _ in\n                observer.on(.next(()))\n            }\n\n            return Disposables.create(with: controlTarget.dispose)\n        }\n        .take(until: deallocated)\n\n        return ControlEvent(events: source)\n    }\n\n    /// Creates a `ControlProperty` that is triggered by target/action pattern value updates.\n    ///\n    /// - parameter controlEvents: Events that trigger value update sequence elements.\n    /// - parameter getter: Property value getter.\n    /// - parameter setter: Property value setter.\n    func controlProperty<T>(\n        editingEvents: UIControl.Event,\n        getter: @escaping (Base) -> T,\n        setter: @escaping (Base, T) -> Void\n    ) -> ControlProperty<T> {\n        let source: Observable<T> = Observable.create { [weak weakControl = base] observer in\n            guard let control = weakControl else {\n                observer.on(.completed)\n                return Disposables.create()\n            }\n\n            observer.on(.next(getter(control)))\n\n            let controlTarget = ControlTarget(control: control, controlEvents: editingEvents) { _ in\n                if let control = weakControl {\n                    observer.on(.next(getter(control)))\n                }\n            }\n\n            return Disposables.create(with: controlTarget.dispose)\n        }\n        .take(until: deallocated)\n\n        let bindingObserver = Binder(base, binding: setter)\n\n        return ControlProperty<T>(values: source, valueSink: bindingObserver)\n    }\n\n    /// This is a separate method to better communicate to public consumers that\n    /// an `editingEvent` needs to fire for control property to be updated.\n    internal func controlPropertyWithDefaultEvents<T>(\n        editingEvents: UIControl.Event = [.allEditingEvents, .valueChanged],\n        getter: @escaping (Base) -> T,\n        setter: @escaping (Base, T) -> Void\n    ) -> ControlProperty<T> {\n        controlProperty(\n            editingEvents: editingEvents,\n            getter: getter,\n            setter: setter\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIDatePicker+Rx.swift",
    "content": "//\n//  UIDatePicker+Rx.swift\n//  RxCocoa\n//\n//  Created by Daniel Tartaglia on 5/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIDatePicker {\n    /// Reactive wrapper for `date` property.\n    var date: ControlProperty<Date> {\n        value\n    }\n\n    /// Reactive wrapper for `date` property.\n    var value: ControlProperty<Date> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { datePicker in\n                datePicker.date\n            }, setter: { datePicker, value in\n                datePicker.date = value\n            }\n        )\n    }\n\n    /// Reactive wrapper for `countDownDuration` property.\n    var countDownDuration: ControlProperty<TimeInterval> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { datePicker in\n                datePicker.countDownDuration\n            }, setter: { datePicker, value in\n                datePicker.countDownDuration = value\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIGestureRecognizer+Rx.swift",
    "content": "//\n//  UIGestureRecognizer+Rx.swift\n//  RxCocoa\n//\n//  Created by Carlos García on 10/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n// This should be only used from `MainScheduler`\nfinal class GestureTarget<Recognizer: UIGestureRecognizer>: RxTarget {\n    typealias Callback = (Recognizer) -> Void\n\n    let selector = #selector(GestureTarget.eventHandler(_:))\n\n    weak var gestureRecognizer: Recognizer?\n    var callback: Callback?\n\n    init(_ gestureRecognizer: Recognizer, callback: @escaping Callback) {\n        self.gestureRecognizer = gestureRecognizer\n        self.callback = callback\n\n        super.init()\n\n        gestureRecognizer.addTarget(self, action: selector)\n\n        let method = method(for: selector)\n        if method == nil {\n            fatalError(\"Can't find method\")\n        }\n    }\n\n    @objc func eventHandler(_: UIGestureRecognizer) {\n        if let callback, let gestureRecognizer {\n            callback(gestureRecognizer)\n        }\n    }\n\n    override func dispose() {\n        super.dispose()\n\n        gestureRecognizer?.removeTarget(self, action: selector)\n        callback = nil\n    }\n}\n\npublic extension Reactive where Base: UIGestureRecognizer {\n    /// Reactive wrapper for gesture recognizer events.\n    var event: ControlEvent<Base> {\n        let source: Observable<Base> = Observable.create { [weak control = self.base] observer in\n            MainScheduler.ensureRunningOnMainThread()\n\n            guard let control else {\n                observer.on(.completed)\n                return Disposables.create()\n            }\n\n            let observer = GestureTarget(control) { control in\n                observer.on(.next(control))\n            }\n\n            return observer\n        }.take(until: deallocated)\n\n        return ControlEvent(events: source)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UINavigationController+Rx.swift",
    "content": "//\n//  UINavigationController+Rx.swift\n//  RxCocoa\n//\n//  Created by Diogo on 13/04/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UINavigationController {\n    typealias ShowEvent = (viewController: UIViewController, animated: Bool)\n\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UINavigationController, UINavigationControllerDelegate> {\n        RxNavigationControllerDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for delegate method `navigationController(:willShow:animated:)`.\n    var willShow: ControlEvent<ShowEvent> {\n        let source: Observable<ShowEvent> = delegate\n            .methodInvoked(#selector(UINavigationControllerDelegate.navigationController(_:willShow:animated:)))\n            .map { arg in\n                let viewController = try castOrThrow(UIViewController.self, arg[1])\n                let animated = try castOrThrow(Bool.self, arg[2])\n                return (viewController, animated)\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `navigationController(:didShow:animated:)`.\n    var didShow: ControlEvent<ShowEvent> {\n        let source: Observable<ShowEvent> = delegate\n            .methodInvoked(#selector(UINavigationControllerDelegate.navigationController(_:didShow:animated:)))\n            .map { arg in\n                let viewController = try castOrThrow(UIViewController.self, arg[1])\n                let animated = try castOrThrow(Bool.self, arg[2])\n                return (viewController, animated)\n            }\n        return ControlEvent(events: source)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIPickerView+Rx.swift",
    "content": "//\n//  UIPickerView+Rx.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 5/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIPickerView {\n    /// Reactive wrapper for `delegate`.\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UIPickerView, UIPickerViewDelegate> {\n        RxPickerViewDelegateProxy.proxy(for: base)\n    }\n\n    /// Installs delegate as forwarding delegate on `delegate`.\n    /// Delegate won't be retained.\n    ///\n    /// It enables using normal delegate mechanism with reactive delegate mechanism.\n    ///\n    /// - parameter delegate: Delegate object.\n    /// - returns: Disposable object that can be used to unbind the delegate.\n    func setDelegate(_ delegate: UIPickerViewDelegate)\n        -> Disposable\n    {\n        RxPickerViewDelegateProxy.installForwardDelegate(delegate, retainDelegate: false, onProxyForObject: base)\n    }\n\n    /**\n     Reactive wrapper for `dataSource`.\n\n     For more information take a look at `DelegateProxyType` protocol documentation.\n     */\n    var dataSource: DelegateProxy<UIPickerView, UIPickerViewDataSource> {\n        RxPickerViewDataSourceProxy.proxy(for: base)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `pickerView:didSelectRow:inComponent:`.\n     */\n    var itemSelected: ControlEvent<(row: Int, component: Int)> {\n        let source = delegate\n            .methodInvoked(#selector(UIPickerViewDelegate.pickerView(_:didSelectRow:inComponent:)))\n            .map {\n                try (row: castOrThrow(Int.self, $0[1]), component: castOrThrow(Int.self, $0[2]))\n            }\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `pickerView:didSelectRow:inComponent:`.\n\n     It can be only used when one of the `rx.itemTitles, rx.itemAttributedTitles, items(_ source: O)` methods is used to bind observable sequence,\n     or any other data source conforming to a `ViewDataSourceType` protocol.\n\n     ```\n     pickerView.rx.modelSelected(MyModel.self)\n     .map { ...\n     ```\n     - parameter modelType: Type of a Model which bound to the dataSource\n     */\n    func modelSelected<T>(_: T.Type) -> ControlEvent<[T]> {\n        let source = itemSelected.flatMap { [weak view = self.base as UIPickerView] _, component -> Observable<[T]> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            let model: [T] = try (0 ..< view.numberOfComponents).map { component in\n                let row = view.selectedRow(inComponent: component)\n                return try view.rx.model(at: IndexPath(row: row, section: component))\n            }\n\n            return Observable.just(model)\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Binds sequences of elements to picker view rows.\n\n     - parameter source: Observable sequence of items.\n     - parameter titleForRow: Transform between sequence elements and row titles.\n     - returns: Disposable object that can be used to unbind.\n\n     Example:\n\n        let items = Observable.just([\n                \"First Item\",\n                \"Second Item\",\n                \"Third Item\"\n            ])\n\n        items\n            .bind(to: pickerView.rx.itemTitles) { (row, element) in\n                return element\n            }\n            .disposed(by: disposeBag)\n\n     */\n\n    func itemTitles<Sequence: Swift.Sequence, Source: ObservableType>\n    (_ source: Source)\n        -> (_ titleForRow: @escaping (Int, Sequence.Element) -> String?)\n        -> Disposable where Source.Element == Sequence\n    {\n        { titleForRow in\n            let adapter = RxStringPickerViewAdapter<Sequence>(titleForRow: titleForRow)\n            return self.items(adapter: adapter)(source)\n        }\n    }\n\n    /**\n     Binds sequences of elements to picker view rows.\n\n     - parameter source: Observable sequence of items.\n     - parameter attributedTitleForRow: Transform between sequence elements and row attributed titles.\n     - returns: Disposable object that can be used to unbind.\n\n     Example:\n\n     let items = Observable.just([\n            \"First Item\",\n            \"Second Item\",\n            \"Third Item\"\n        ])\n\n     items\n        .bind(to: pickerView.rx.itemAttributedTitles) { (row, element) in\n            return NSAttributedString(string: element)\n        }\n        .disposed(by: disposeBag)\n\n     */\n\n    func itemAttributedTitles<Sequence: Swift.Sequence, Source: ObservableType>\n    (_ source: Source)\n        -> (_ attributedTitleForRow: @escaping (Int, Sequence.Element) -> NSAttributedString?)\n        -> Disposable where Source.Element == Sequence\n    {\n        { attributedTitleForRow in\n            let adapter = RxAttributedStringPickerViewAdapter<Sequence>(attributedTitleForRow: attributedTitleForRow)\n            return self.items(adapter: adapter)(source)\n        }\n    }\n\n    /**\n     Binds sequences of elements to picker view rows.\n\n     - parameter source: Observable sequence of items.\n     - parameter viewForRow: Transform between sequence elements and row views.\n     - returns: Disposable object that can be used to unbind.\n\n     Example:\n\n     let items = Observable.just([\n            \"First Item\",\n            \"Second Item\",\n            \"Third Item\"\n        ])\n\n     items\n        .bind(to: pickerView.rx.items) { (row, element, view) in\n            guard let myView = view as? MyView else {\n                let view = MyView()\n                view.configure(with: element)\n                return view\n            }\n            myView.configure(with: element)\n            return myView\n        }\n        .disposed(by: disposeBag)\n\n     */\n\n    func items<Sequence: Swift.Sequence, Source: ObservableType>\n    (_ source: Source)\n        -> (_ viewForRow: @escaping (Int, Sequence.Element, UIView?) -> UIView)\n        -> Disposable where Source.Element == Sequence\n    {\n        { viewForRow in\n            let adapter = RxPickerViewAdapter<Sequence>(viewForRow: viewForRow)\n            return self.items(adapter: adapter)(source)\n        }\n    }\n\n    /**\n     Binds sequences of elements to picker view rows using a custom reactive adapter used to perform the transformation.\n     This method will retain the adapter for as long as the subscription isn't disposed (result `Disposable`\n     being disposed).\n     In case `source` observable sequence terminates successfully, the adapter will present latest element\n     until the subscription isn't disposed.\n\n     - parameter adapter: Adapter used to transform elements to picker components.\n     - parameter source: Observable sequence of items.\n     - returns: Disposable object that can be used to unbind.\n     */\n    func items<\n        Source: ObservableType,\n        Adapter: RxPickerViewDataSourceType & UIPickerViewDataSource & UIPickerViewDelegate\n    >(adapter: Adapter)\n        -> (_ source: Source)\n        -> Disposable where Source.Element == Adapter.Element\n    {\n        { source in\n            let delegateSubscription = self.setDelegate(adapter)\n            let dataSourceSubscription = source.subscribeProxyDataSource(ofObject: self.base, dataSource: adapter, retainDataSource: true, binding: { [weak pickerView = self.base] (_: RxPickerViewDataSourceProxy, event) in\n                guard let pickerView else { return }\n                adapter.pickerView(pickerView, observedEvent: event)\n            })\n            return Disposables.create(delegateSubscription, dataSourceSubscription)\n        }\n    }\n\n    /**\n     Synchronous helper method for retrieving a model at indexPath through a reactive data source.\n     */\n    func model<T>(at indexPath: IndexPath) throws -> T {\n        let dataSource: SectionedViewDataSourceType = castOrFatalError(dataSource.forwardToDelegate(), message: \"This method only works in case one of the `rx.itemTitles, rx.itemAttributedTitles, items(_ source: O)` methods was used.\")\n\n        return try castOrFatalError(dataSource.model(at: indexPath))\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIRefreshControl+Rx.swift",
    "content": "//\n//  UIRefreshControl+Rx.swift\n//  RxCocoa\n//\n//  Created by Yosuke Ishikawa on 1/31/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIRefreshControl {\n    /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.\n    var isRefreshing: Binder<Bool> {\n        Binder(base) { refreshControl, refresh in\n            if refresh {\n                refreshControl.beginRefreshing()\n            } else {\n                refreshControl.endRefreshing()\n            }\n        }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIScrollView+Rx.swift",
    "content": "//\n//  UIScrollView+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 4/3/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIScrollView {\n    typealias EndZoomEvent = (view: UIView?, scale: CGFloat)\n    typealias WillEndDraggingEvent = (velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)\n\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UIScrollView, UIScrollViewDelegate> {\n        RxScrollViewDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `contentOffset`.\n    var contentOffset: ControlProperty<CGPoint> {\n        let proxy = RxScrollViewDelegateProxy.proxy(for: base)\n\n        let bindingObserver = Binder(base) { scrollView, contentOffset in\n            scrollView.contentOffset = contentOffset\n        }\n\n        return ControlProperty(values: proxy.contentOffsetBehaviorSubject, valueSink: bindingObserver)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidScroll`\n    var didScroll: ControlEvent<Void> {\n        let source = RxScrollViewDelegateProxy.proxy(for: base).contentOffsetPublishSubject\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewWillBeginDecelerating`\n    var willBeginDecelerating: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewWillBeginDecelerating(_:))).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidEndDecelerating`\n    var didEndDecelerating: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndDecelerating(_:))).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewWillBeginDragging`\n    var willBeginDragging: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewWillBeginDragging(_:))).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewWillEndDragging(_:withVelocity:targetContentOffset:)`\n    var willEndDragging: ControlEvent<WillEndDraggingEvent> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewWillEndDragging(_:withVelocity:targetContentOffset:)))\n            .map { value -> WillEndDraggingEvent in\n                let velocity = try castOrThrow(CGPoint.self, value[1])\n                let targetContentOffsetValue = try castOrThrow(NSValue.self, value[2])\n\n                guard let rawPointer = targetContentOffsetValue.pointerValue else { throw RxCocoaError.unknown }\n                let typedPointer = rawPointer.bindMemory(to: CGPoint.self, capacity: MemoryLayout<CGPoint>.size)\n\n                return (velocity, typedPointer)\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidEndDragging(_:willDecelerate:)`\n    var didEndDragging: ControlEvent<Bool> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndDragging(_:willDecelerate:))).map { value -> Bool in\n            return try castOrThrow(Bool.self, value[1])\n        }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidZoom`\n    var didZoom: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidZoom)).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidScrollToTop`\n    var didScrollToTop: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidScrollToTop(_:))).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidEndScrollingAnimation`\n    var didEndScrollingAnimation: ControlEvent<Void> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndScrollingAnimation(_:))).map { _ in }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewWillBeginZooming(_:with:)`\n    var willBeginZooming: ControlEvent<UIView?> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewWillBeginZooming(_:with:))).map { value -> UIView? in\n            return try castOptionalOrThrow(UIView.self, value[1] as AnyObject)\n        }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `scrollViewDidEndZooming(_:with:atScale:)`\n    var didEndZooming: ControlEvent<EndZoomEvent> {\n        let source = delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewDidEndZooming(_:with:atScale:))).map { value -> EndZoomEvent in\n            return try (castOptionalOrThrow(UIView.self, value[1] as AnyObject), castOrThrow(CGFloat.self, value[2]))\n        }\n        return ControlEvent(events: source)\n    }\n\n    /// Installs delegate as forwarding delegate on `delegate`.\n    /// Delegate won't be retained.\n    ///\n    /// It enables using normal delegate mechanism with reactive delegate mechanism.\n    ///\n    /// - parameter delegate: Delegate object.\n    /// - returns: Disposable object that can be used to unbind the delegate.\n    func setDelegate(_ delegate: UIScrollViewDelegate)\n        -> Disposable\n    {\n        RxScrollViewDelegateProxy.installForwardDelegate(delegate, retainDelegate: false, onProxyForObject: base)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UISearchBar+Rx.swift",
    "content": "//\n//  UISearchBar+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UISearchBar {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UISearchBar, UISearchBarDelegate> {\n        RxSearchBarDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `text` property.\n    var text: ControlProperty<String?> {\n        value\n    }\n\n    /// Reactive wrapper for `text` property.\n    var value: ControlProperty<String?> {\n        let source: Observable<String?> = Observable.deferred { [weak searchBar = self.base as UISearchBar] () -> Observable<String?> in\n            let text = searchBar?.text\n\n            let textDidChange = (searchBar?.rx.delegate.methodInvoked(#selector(UISearchBarDelegate.searchBar(_:textDidChange:))) ?? Observable.empty())\n            let didEndEditing = (searchBar?.rx.delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarTextDidEndEditing(_:))) ?? Observable.empty())\n\n            return Observable.merge(textDidChange, didEndEditing)\n                .map { _ in searchBar?.text ?? \"\" }\n                .startWith(text)\n        }\n\n        let bindingObserver = Binder(base) { (searchBar, text: String?) in\n            searchBar.text = text\n        }\n\n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n\n    /// Reactive wrapper for `selectedScopeButtonIndex` property.\n    var selectedScopeButtonIndex: ControlProperty<Int> {\n        let source: Observable<Int> = Observable.deferred { [weak source = self.base as UISearchBar] () -> Observable<Int> in\n            let index = source?.selectedScopeButtonIndex ?? 0\n\n            return (source?.rx.delegate.methodInvoked(#selector(UISearchBarDelegate.searchBar(_:selectedScopeButtonIndexDidChange:))) ?? Observable.empty())\n                .map { a in\n                    try castOrThrow(Int.self, a[1])\n                }\n                .startWith(index)\n        }\n\n        let bindingObserver = Binder(base) { (searchBar, index: Int) in\n            searchBar.selectedScopeButtonIndex = index\n        }\n\n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n\n    #if os(iOS) || os(visionOS)\n    /// Reactive wrapper for delegate method `searchBarCancelButtonClicked`.\n    var cancelButtonClicked: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarCancelButtonClicked(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `searchBarBookmarkButtonClicked`.\n    var bookmarkButtonClicked: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarBookmarkButtonClicked(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `searchBarResultsListButtonClicked`.\n    var resultsListButtonClicked: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarResultsListButtonClicked(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n    #endif\n\n    /// Reactive wrapper for delegate method `searchBarSearchButtonClicked`.\n    var searchButtonClicked: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarSearchButtonClicked(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `searchBarTextDidBeginEditing`.\n    var textDidBeginEditing: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarTextDidBeginEditing(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for delegate method `searchBarTextDidEndEditing`.\n    var textDidEndEditing: ControlEvent<Void> {\n        let source: Observable<Void> = delegate.methodInvoked(#selector(UISearchBarDelegate.searchBarTextDidEndEditing(_:)))\n            .map { _ in\n                ()\n            }\n        return ControlEvent(events: source)\n    }\n\n    /// Installs delegate as forwarding delegate on `delegate`.\n    /// Delegate won't be retained.\n    ///\n    /// It enables using normal delegate mechanism with reactive delegate mechanism.\n    ///\n    /// - parameter delegate: Delegate object.\n    /// - returns: Disposable object that can be used to unbind the delegate.\n    func setDelegate(_ delegate: UISearchBarDelegate)\n        -> Disposable\n    {\n        RxSearchBarDelegateProxy.installForwardDelegate(delegate, retainDelegate: false, onProxyForObject: base)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UISearchController+Rx.swift",
    "content": "//\n//  UISearchController+Rx.swift\n//  RxCocoa\n//\n//  Created by Segii Shulga on 3/17/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UISearchController {\n    /// Reactive wrapper for `delegate`.\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UISearchController, UISearchControllerDelegate> {\n        RxSearchControllerDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didDismiss: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UISearchControllerDelegate.didDismissSearchController(_:)))\n            .map { _ in }\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didPresent: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UISearchControllerDelegate.didPresentSearchController(_:)))\n            .map { _ in }\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var present: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UISearchControllerDelegate.presentSearchController(_:)))\n            .map { _ in }\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var willDismiss: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UISearchControllerDelegate.willDismissSearchController(_:)))\n            .map { _ in }\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var willPresent: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UISearchControllerDelegate.willPresentSearchController(_:)))\n            .map { _ in }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UISegmentedControl+Rx.swift",
    "content": "//\n//  UISegmentedControl+Rx.swift\n//  RxCocoa\n//\n//  Created by Carlos García on 8/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UISegmentedControl {\n    /// Reactive wrapper for `selectedSegmentIndex` property.\n    var selectedSegmentIndex: ControlProperty<Int> {\n        value\n    }\n\n    /// Reactive wrapper for `selectedSegmentIndex` property.\n    var value: ControlProperty<Int> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { segmentedControl in\n                segmentedControl.selectedSegmentIndex\n            }, setter: { segmentedControl, value in\n                segmentedControl.selectedSegmentIndex = value\n            }\n        )\n    }\n\n    /// Reactive wrapper for `setEnabled(_:forSegmentAt:)`\n    func enabledForSegment(at index: Int) -> Binder<Bool> {\n        Binder(base) { segmentedControl, segmentEnabled in\n            segmentedControl.setEnabled(segmentEnabled, forSegmentAt: index)\n        }\n    }\n\n    /// Reactive wrapper for `setTitle(_:forSegmentAt:)`\n    func titleForSegment(at index: Int) -> Binder<String?> {\n        Binder(base) { segmentedControl, title in\n            segmentedControl.setTitle(title, forSegmentAt: index)\n        }\n    }\n\n    /// Reactive wrapper for `setImage(_:forSegmentAt:)`\n    func imageForSegment(at index: Int) -> Binder<UIImage?> {\n        Binder(base) { segmentedControl, image in\n            segmentedControl.setImage(image, forSegmentAt: index)\n        }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UISlider+Rx.swift",
    "content": "//\n//  UISlider+Rx.swift\n//  RxCocoa\n//\n//  Created by Alexander van der Werff on 28/05/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UISlider {\n    /// Reactive wrapper for `value` property.\n    var value: ControlProperty<Float> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { slider in\n                slider.value\n            }, setter: { slider, value in\n                slider.value = value\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UIStepper+Rx.swift",
    "content": "//\n//  UIStepper+Rx.swift\n//  RxCocoa\n//\n//  Created by Yuta ToKoRo on 9/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIStepper {\n    /// Reactive wrapper for `value` property.\n    var value: ControlProperty<Double> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { stepper in\n                stepper.value\n            }, setter: { stepper, value in\n                stepper.value = value\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UISwitch+Rx.swift",
    "content": "//\n//  UISwitch+Rx.swift\n//  RxCocoa\n//\n//  Created by Carlos García on 8/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UISwitch {\n    /// Reactive wrapper for `isOn` property.\n    var isOn: ControlProperty<Bool> {\n        value\n    }\n\n    /// Reactive wrapper for `isOn` property.\n    ///\n    /// ⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`'s, so on those versions\n    /// underlying observable sequence won't complete when nothing holds a strong reference\n    /// to `UISwitch`.\n    var value: ControlProperty<Bool> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { uiSwitch in\n                uiSwitch.isOn\n            }, setter: { uiSwitch, value in\n                uiSwitch.isOn = value\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UITabBar+Rx.swift",
    "content": "//\n//  UITabBar+Rx.swift\n//  RxCocoa\n//\n//  Created by Jesse Farless on 5/13/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxSwift\nimport UIKit\n\n/**\n iOS only\n */\n#if os(iOS)\npublic extension Reactive where Base: UITabBar {\n    /// Reactive wrapper for `delegate` message `tabBar(_:willBeginCustomizing:)`.\n    var willBeginCustomizing: ControlEvent<[UITabBarItem]> {\n        let source = delegate.methodInvoked(#selector(UITabBarDelegate.tabBar(_:willBeginCustomizing:)))\n            .map { a in\n                try castOrThrow([UITabBarItem].self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBar(_:didBeginCustomizing:)`.\n    var didBeginCustomizing: ControlEvent<[UITabBarItem]> {\n        let source = delegate.methodInvoked(#selector(UITabBarDelegate.tabBar(_:didBeginCustomizing:)))\n            .map { a in\n                try castOrThrow([UITabBarItem].self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBar(_:willEndCustomizing:changed:)`.\n    var willEndCustomizing: ControlEvent<([UITabBarItem], Bool)> {\n        let source = delegate.methodInvoked(#selector(UITabBarDelegate.tabBar(_:willEndCustomizing:changed:)))\n            .map { (a: [Any]) -> (([UITabBarItem], Bool)) in\n                let items = try castOrThrow([UITabBarItem].self, a[1])\n                let changed = try castOrThrow(Bool.self, a[2])\n                return (items, changed)\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBar(_:didEndCustomizing:changed:)`.\n    var didEndCustomizing: ControlEvent<([UITabBarItem], Bool)> {\n        let source = delegate.methodInvoked(#selector(UITabBarDelegate.tabBar(_:didEndCustomizing:changed:)))\n            .map { (a: [Any]) -> (([UITabBarItem], Bool)) in\n                let items = try castOrThrow([UITabBarItem].self, a[1])\n                let changed = try castOrThrow(Bool.self, a[2])\n                return (items, changed)\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n\n/**\n iOS and tvOS\n */\n\npublic extension Reactive where Base: UITabBar {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UITabBar, UITabBarDelegate> {\n        RxTabBarDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBar(_:didSelect:)`.\n    var didSelectItem: ControlEvent<UITabBarItem> {\n        let source = delegate.methodInvoked(#selector(UITabBarDelegate.tabBar(_:didSelect:)))\n            .map { a in\n                try castOrThrow(UITabBarItem.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UITabBarController+Rx.swift",
    "content": "//\n//  UITabBarController+Rx.swift\n//  RxCocoa\n//\n//  Created by Yusuke Kita on 2016/12/07.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxSwift\nimport UIKit\n\n/**\n iOS only\n */\n#if os(iOS)\npublic extension Reactive where Base: UITabBarController {\n    /// Reactive wrapper for `delegate` message `tabBarController:willBeginCustomizing:`.\n    var willBeginCustomizing: ControlEvent<[UIViewController]> {\n        let source = delegate.methodInvoked(#selector(UITabBarControllerDelegate.tabBarController(_:willBeginCustomizing:)))\n            .map { a in\n                try castOrThrow([UIViewController].self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBarController:willEndCustomizing:changed:`.\n    var willEndCustomizing: ControlEvent<(viewControllers: [UIViewController], changed: Bool)> {\n        let source = delegate.methodInvoked(#selector(UITabBarControllerDelegate.tabBarController(_:willEndCustomizing:changed:)))\n            .map { (a: [Any]) -> (viewControllers: [UIViewController], changed: Bool) in\n                let viewControllers = try castOrThrow([UIViewController].self, a[1])\n                let changed = try castOrThrow(Bool.self, a[2])\n                return (viewControllers, changed)\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBarController:didEndCustomizing:changed:`.\n    var didEndCustomizing: ControlEvent<(viewControllers: [UIViewController], changed: Bool)> {\n        let source = delegate.methodInvoked(#selector(UITabBarControllerDelegate.tabBarController(_:didEndCustomizing:changed:)))\n            .map { (a: [Any]) -> (viewControllers: [UIViewController], changed: Bool) in\n                let viewControllers = try castOrThrow([UIViewController].self, a[1])\n                let changed = try castOrThrow(Bool.self, a[2])\n                return (viewControllers, changed)\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n\n/**\n iOS and tvOS\n */\n\npublic extension Reactive where Base: UITabBarController {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<UITabBarController, UITabBarControllerDelegate> {\n        RxTabBarControllerDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `delegate` message `tabBarController:didSelect:`.\n    var didSelect: ControlEvent<UIViewController> {\n        let source = delegate.methodInvoked(#selector(UITabBarControllerDelegate.tabBarController(_:didSelect:)))\n            .map { a in\n                try castOrThrow(UIViewController.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UITableView+Rx.swift",
    "content": "//\n//  UITableView+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 4/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\n// Items\n\npublic extension Reactive where Base: UITableView {\n    /**\n     Binds sequences of elements to table view rows.\n\n     - parameter source: Observable sequence of items.\n     - parameter cellFactory: Transform between sequence elements and view cells.\n     - returns: Disposable object that can be used to unbind.\n\n      Example:\n\n          let items = Observable.just([\n              \"First Item\",\n              \"Second Item\",\n              \"Third Item\"\n          ])\n\n          items\n          .bind(to: tableView.rx.items) { (tableView, row, element) in\n              let cell = tableView.dequeueReusableCell(withIdentifier: \"Cell\")!\n              cell.textLabel?.text = \"\\(element) @ row \\(row)\"\n              return cell\n          }\n          .disposed(by: disposeBag)\n\n      */\n    func items<Sequence: Swift.Sequence, Source: ObservableType>\n    (_ source: Source)\n        -> (_ cellFactory: @escaping (UITableView, Int, Sequence.Element) -> UITableViewCell)\n        -> Disposable\n        where Source.Element == Sequence\n    {\n        { cellFactory in\n            let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper<Sequence>(cellFactory: cellFactory)\n            return self.items(dataSource: dataSource)(source)\n        }\n    }\n\n    /**\n     Binds sequences of elements to table view rows.\n\n     - parameter cellIdentifier: Identifier used to dequeue cells.\n     - parameter source: Observable sequence of items.\n     - parameter configureCell: Transform between sequence elements and view cells.\n     - parameter cellType: Type of table view cell.\n     - returns: Disposable object that can be used to unbind.\n\n      Example:\n\n          let items = Observable.just([\n              \"First Item\",\n              \"Second Item\",\n              \"Third Item\"\n          ])\n\n          items\n              .bind(to: tableView.rx.items(cellIdentifier: \"Cell\", cellType: UITableViewCell.self)) { (row, element, cell) in\n                 cell.textLabel?.text = \"\\(element) @ row \\(row)\"\n              }\n              .disposed(by: disposeBag)\n     */\n    func items<Sequence: Swift.Sequence, Cell: UITableViewCell, Source: ObservableType>\n    (cellIdentifier: String, cellType _: Cell.Type = Cell.self)\n        -> (_ source: Source)\n        -> (_ configureCell: @escaping (Int, Sequence.Element, Cell) -> Void)\n        -> Disposable\n        where Source.Element == Sequence\n    {\n        { source in\n            { configureCell in\n                let dataSource = RxTableViewReactiveArrayDataSourceSequenceWrapper<Sequence> { tv, i, item in\n                    let indexPath = IndexPath(item: i, section: 0)\n                    let cell = tv.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! Cell\n                    configureCell(i, item, cell)\n                    return cell\n                }\n                return self.items(dataSource: dataSource)(source)\n            }\n        }\n    }\n\n    /**\n     Binds sequences of elements to table view rows using a custom reactive data used to perform the transformation.\n     This method will retain the data source for as long as the subscription isn't disposed (result `Disposable`\n     being disposed).\n     In case `source` observable sequence terminates successfully, the data source will present latest element\n     until the subscription isn't disposed.\n\n     - parameter dataSource: Data source used to transform elements to view cells.\n     - parameter source: Observable sequence of items.\n     - returns: Disposable object that can be used to unbind.\n     */\n    func items<\n        DataSource: RxTableViewDataSourceType & UITableViewDataSource,\n        Source: ObservableType\n    >\n    (dataSource: DataSource)\n        -> (_ source: Source)\n        -> Disposable\n        where DataSource.Element == Source.Element\n    {\n        { source in\n            // This is called for side effects only, and to make sure delegate proxy is in place when\n            // data source is being bound.\n            // This is needed because theoretically the data source subscription itself might\n            // call `self.rx.delegate`. If that happens, it might cause weird side effects since\n            // setting data source will set delegate, and UITableView might get into a weird state.\n            // Therefore it's better to set delegate proxy first, just to be sure.\n            _ = self.delegate\n            // Strong reference is needed because data source is in use until result subscription is disposed\n            return source.subscribeProxyDataSource(ofObject: self.base, dataSource: dataSource as UITableViewDataSource, retainDataSource: true) { [weak tableView = self.base] (_: RxTableViewDataSourceProxy, event) in\n                guard let tableView else {\n                    return\n                }\n                dataSource.tableView(tableView, observedEvent: event)\n            }\n        }\n    }\n}\n\npublic extension Reactive where Base: UITableView {\n    /**\n     Reactive wrapper for `dataSource`.\n\n     For more information take a look at `DelegateProxyType` protocol documentation.\n     */\n    var dataSource: DelegateProxy<UITableView, UITableViewDataSource> {\n        RxTableViewDataSourceProxy.proxy(for: base)\n    }\n\n    /**\n     Installs data source as forwarding delegate on `rx.dataSource`.\n     Data source won't be retained.\n\n     It enables using normal delegate mechanism with reactive delegate mechanism.\n\n     - parameter dataSource: Data source object.\n     - returns: Disposable object that can be used to unbind the data source.\n     */\n    func setDataSource(_ dataSource: UITableViewDataSource)\n        -> Disposable\n    {\n        RxTableViewDataSourceProxy.installForwardDelegate(dataSource, retainDelegate: false, onProxyForObject: base)\n    }\n\n    // events\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didSelectRowAtIndexPath:`.\n     */\n    var itemSelected: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didSelectRowAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didDeselectRowAtIndexPath:`.\n     */\n    var itemDeselected: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didDeselectRowAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didHighlightRowAt:`.\n     */\n    var itemHighlighted: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didHighlightRowAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didUnhighlightRowAt:`.\n     */\n    var itemUnhighlighted: ControlEvent<IndexPath> {\n        let source = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didUnhighlightRowAt:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:accessoryButtonTappedForRowWithIndexPath:`.\n     */\n    var itemAccessoryButtonTapped: ControlEvent<IndexPath> {\n        let source: Observable<IndexPath> = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:accessoryButtonTappedForRowWith:)))\n            .map { a in\n                try castOrThrow(IndexPath.self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:commitEditingStyle:forRowAtIndexPath:`.\n     */\n    var itemInserted: ControlEvent<IndexPath> {\n        let source = dataSource.methodInvoked(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))\n            .filter { a in\n                try UITableViewCell.EditingStyle(rawValue: castOrThrow(NSNumber.self, a[1]).intValue) == .insert\n            }\n            .map { a in\n                try (castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:commitEditingStyle:forRowAtIndexPath:`.\n     */\n    var itemDeleted: ControlEvent<IndexPath> {\n        let source = dataSource.methodInvoked(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))\n            .filter { a in\n                try UITableViewCell.EditingStyle(rawValue: castOrThrow(NSNumber.self, a[1]).intValue) == .delete\n            }\n            .map { a in\n                try castOrThrow(IndexPath.self, a[2])\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:moveRowAtIndexPath:toIndexPath:`.\n     */\n    var itemMoved: ControlEvent<ItemMovedEvent> {\n        let source: Observable<ItemMovedEvent> = dataSource.methodInvoked(#selector(UITableViewDataSource.tableView(_:moveRowAt:to:)))\n            .map { a in\n                try (castOrThrow(IndexPath.self, a[1]), castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:willDisplayCell:forRowAtIndexPath:`.\n     */\n    var willDisplayCell: ControlEvent<WillDisplayCellEvent> {\n        let source: Observable<WillDisplayCellEvent> = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:willDisplay:forRowAt:)))\n            .map { a in\n                try (castOrThrow(UITableViewCell.self, a[1]), castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didEndDisplayingCell:forRowAtIndexPath:`.\n     */\n    var didEndDisplayingCell: ControlEvent<DidEndDisplayingCellEvent> {\n        let source: Observable<DidEndDisplayingCellEvent> = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didEndDisplaying:forRowAt:)))\n            .map { a in\n                try (castOrThrow(UITableViewCell.self, a[1]), castOrThrow(IndexPath.self, a[2]))\n            }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didSelectRowAtIndexPath:`.\n\n     It can be only used when one of the `rx.itemsWith*` methods is used to bind observable sequence,\n     or any other data source conforming to `SectionedViewDataSourceType` protocol.\n\n      ```\n         tableView.rx.modelSelected(MyModel.self)\n             .map { ...\n      ```\n     */\n    func modelSelected<T>(_: T.Type) -> ControlEvent<T> {\n        let source: Observable<T> = itemSelected.flatMap { [weak view = self.base as UITableView] indexPath -> Observable<T> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            return try Observable.just(view.rx.model(at: indexPath))\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:didDeselectRowAtIndexPath:`.\n\n     It can be only used when one of the `rx.itemsWith*` methods is used to bind observable sequence,\n     or any other data source conforming to `SectionedViewDataSourceType` protocol.\n\n     ```\n        tableView.rx.modelDeselected(MyModel.self)\n            .map { ...\n     ```\n     */\n    func modelDeselected<T>(_: T.Type) -> ControlEvent<T> {\n        let source: Observable<T> = itemDeselected.flatMap { [weak view = self.base as UITableView] indexPath -> Observable<T> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            return try Observable.just(view.rx.model(at: indexPath))\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Reactive wrapper for `delegate` message `tableView:commitEditingStyle:forRowAtIndexPath:`.\n\n     It can be only used when one of the `rx.itemsWith*` methods is used to bind observable sequence,\n     or any other data source conforming to `SectionedViewDataSourceType` protocol.\n\n     ```\n        tableView.rx.modelDeleted(MyModel.self)\n            .map { ...\n     ```\n     */\n    func modelDeleted<T>(_: T.Type) -> ControlEvent<T> {\n        let source: Observable<T> = itemDeleted.flatMap { [weak view = self.base as UITableView] indexPath -> Observable<T> in\n            guard let view else {\n                return Observable.empty()\n            }\n\n            return try Observable.just(view.rx.model(at: indexPath))\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /**\n     Synchronous helper method for retrieving a model at indexPath through a reactive data source.\n     */\n    func model<T>(at indexPath: IndexPath) throws -> T {\n        let dataSource: SectionedViewDataSourceType = castOrFatalError(dataSource.forwardToDelegate(), message: \"This method only works in case one of the `rx.items*` methods was used.\")\n\n        let element = try dataSource.model(at: indexPath)\n\n        return castOrFatalError(element)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\npublic extension Reactive where Base: UITableView {\n    /// Reactive wrapper for `prefetchDataSource`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var prefetchDataSource: DelegateProxy<UITableView, UITableViewDataSourcePrefetching> {\n        RxTableViewDataSourcePrefetchingProxy.proxy(for: base)\n    }\n\n    /**\n     Installs prefetch data source as forwarding delegate on `rx.prefetchDataSource`.\n     Prefetch data source won't be retained.\n\n     It enables using normal delegate mechanism with reactive delegate mechanism.\n\n     - parameter prefetchDataSource: Prefetch data source object.\n     - returns: Disposable object that can be used to unbind the data source.\n     */\n    func setPrefetchDataSource(_ prefetchDataSource: UITableViewDataSourcePrefetching)\n        -> Disposable\n    {\n        RxTableViewDataSourcePrefetchingProxy.installForwardDelegate(prefetchDataSource, retainDelegate: false, onProxyForObject: base)\n    }\n\n    /// Reactive wrapper for `prefetchDataSource` message `tableView(_:prefetchRowsAt:)`.\n    var prefetchRows: ControlEvent<[IndexPath]> {\n        let source = RxTableViewDataSourcePrefetchingProxy.proxy(for: base).prefetchRowsPublishSubject\n        return ControlEvent(events: source)\n    }\n\n    /// Reactive wrapper for `prefetchDataSource` message `tableView(_:cancelPrefetchingForRowsAt:)`.\n    var cancelPrefetchingForRows: ControlEvent<[IndexPath]> {\n        let source = prefetchDataSource.methodInvoked(#selector(UITableViewDataSourcePrefetching.tableView(_:cancelPrefetchingForRowsAt:)))\n            .map { a in\n                try castOrThrow([IndexPath].self, a[1])\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n\n#if os(tvOS)\n\npublic extension Reactive where Base: UITableView {\n    /**\n     Reactive wrapper for `delegate` message `tableView:didUpdateFocusInContext:withAnimationCoordinator:`.\n     */\n    var didUpdateFocusInContextWithAnimationCoordinator: ControlEvent<(context: UITableViewFocusUpdateContext, animationCoordinator: UIFocusAnimationCoordinator)> {\n        let source = delegate.methodInvoked(#selector(UITableViewDelegate.tableView(_:didUpdateFocusIn:with:)))\n            .map { a -> (context: UITableViewFocusUpdateContext, animationCoordinator: UIFocusAnimationCoordinator) in\n                let context = try castOrThrow(UITableViewFocusUpdateContext.self, a[1])\n                let animationCoordinator = try castOrThrow(UIFocusAnimationCoordinator.self, a[2])\n                return (context: context, animationCoordinator: animationCoordinator)\n            }\n\n        return ControlEvent(events: source)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UITextField+Rx.swift",
    "content": "//\n//  UITextField+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UITextField {\n    /// Reactive wrapper for `text` property.\n    var text: ControlProperty<String?> {\n        value\n    }\n\n    /// Reactive wrapper for `text` property.\n    var value: ControlProperty<String?> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { textField in\n                textField.text\n            },\n            setter: { textField, value in\n                // This check is important because setting text value always clears control state\n                // including marked text selection which is important for proper input\n                // when IME input method is used.\n                if textField.text != value {\n                    textField.text = value\n                }\n            }\n        )\n    }\n\n    /// Bindable sink for `attributedText` property.\n    var attributedText: ControlProperty<NSAttributedString?> {\n        base.rx.controlPropertyWithDefaultEvents(\n            getter: { textField in\n                textField.attributedText\n            },\n            setter: { textField, value in\n                // This check is important because setting text value always clears control state\n                // including marked text selection which is important for proper input\n                // when IME input method is used.\n                if textField.attributedText != value {\n                    textField.attributedText = value\n                }\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/UITextView+Rx.swift",
    "content": "//\n//  UITextView+Rx.swift\n//  RxCocoa\n//\n//  Created by Yuta ToKoRo on 7/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS) || os(visionOS)\n\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UITextView {\n    /// Reactive wrapper for `text` property\n    var text: ControlProperty<String?> {\n        value\n    }\n\n    /// Reactive wrapper for `text` property.\n    var value: ControlProperty<String?> {\n        let source: Observable<String?> = Observable.deferred { [weak textView = self.base] in\n            let text = textView?.text\n\n            let textChanged = textView?.textStorage\n                // This project uses text storage notifications because\n                // that's the only way to catch autocorrect changes\n                // in all cases. Other suggestions are welcome.\n                .rx.didProcessEditingRangeChangeInLength\n                // This observe on is here because text storage\n                // will emit event while process is not completely done,\n                // so rebinding a value will cause an exception to be thrown.\n                .observe(on: MainScheduler.asyncInstance)\n                .map { _ in\n                    textView?.textStorage.string\n                }\n                ?? Observable.empty()\n\n            return textChanged\n                .startWith(text)\n        }\n\n        let bindingObserver = Binder(base) { (textView, text: String?) in\n            // This check is important because setting text value always clears control state\n            // including marked text selection which is important for proper input\n            // when IME input method is used.\n            if textView.text != text {\n                textView.text = text\n            }\n        }\n\n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n\n    /// Reactive wrapper for `attributedText` property.\n    var attributedText: ControlProperty<NSAttributedString?> {\n        let source: Observable<NSAttributedString?> = Observable.deferred { [weak textView = self.base] in\n            let attributedText = textView?.attributedText\n\n            let textChanged: Observable<NSAttributedString?> = textView?.textStorage\n                // This project uses text storage notifications because\n                // that's the only way to catch autocorrect changes\n                // in all cases. Other suggestions are welcome.\n                .rx.didProcessEditingRangeChangeInLength\n                // This observe on is here because attributedText storage\n                // will emit event while process is not completely done,\n                // so rebinding a value will cause an exception to be thrown.\n                .observe(on: MainScheduler.asyncInstance)\n                .map { _ in\n                    textView?.attributedText\n                }\n                ?? Observable.empty()\n\n            return textChanged\n                .startWith(attributedText)\n        }\n\n        let bindingObserver = Binder(base) { (textView, attributedText: NSAttributedString?) in\n            // This check is important because setting text value always clears control state\n            // including marked text selection which is important for proper input\n            // when IME input method is used.\n            if textView.attributedText != attributedText {\n                textView.attributedText = attributedText\n            }\n        }\n\n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didBeginEditing: ControlEvent<Void> {\n        ControlEvent<Void>(events: delegate.methodInvoked(#selector(UITextViewDelegate.textViewDidBeginEditing(_:)))\n            .map { _ in\n                ()\n            })\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didEndEditing: ControlEvent<Void> {\n        ControlEvent<Void>(events: delegate.methodInvoked(#selector(UITextViewDelegate.textViewDidEndEditing(_:)))\n            .map { _ in\n                ()\n            })\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didChange: ControlEvent<Void> {\n        ControlEvent<Void>(events: delegate.methodInvoked(#selector(UITextViewDelegate.textViewDidChange(_:)))\n            .map { _ in\n                ()\n            })\n    }\n\n    /// Reactive wrapper for `delegate` message.\n    var didChangeSelection: ControlEvent<Void> {\n        ControlEvent<Void>(events: delegate.methodInvoked(#selector(UITextViewDelegate.textViewDidChangeSelection(_:)))\n            .map { _ in\n                ()\n            })\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/iOS/WKWebView+Rx.swift",
    "content": "//\n//  WKWebView+Rx.swift\n//  RxCocoa\n//\n//  Created by Giuseppe Lanza on 14/02/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(macOS)\n\nimport RxSwift\nimport WebKit\n\n@available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *)\npublic extension Reactive where Base: WKWebView {\n    /// Reactive wrapper for `navigationDelegate`.\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var navigationDelegate: DelegateProxy<WKWebView, WKNavigationDelegate> {\n        RxWKNavigationDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `navigationDelegate` message.\n    var didCommit: Observable<WKNavigation> {\n        navigationDelegate\n            .methodInvoked(#selector(WKNavigationDelegate.webView(_:didCommit:)))\n            .map { a in try castOrThrow(WKNavigation.self, a[1]) }\n    }\n\n    /// Reactive wrapper for `navigationDelegate` message.\n    var didStartLoad: Observable<WKNavigation> {\n        navigationDelegate\n            .methodInvoked(#selector(WKNavigationDelegate.webView(_:didStartProvisionalNavigation:)))\n            .map { a in try castOrThrow(WKNavigation.self, a[1]) }\n    }\n\n    /// Reactive wrapper for `navigationDelegate` message.\n    var didFinishLoad: Observable<WKNavigation> {\n        navigationDelegate\n            .methodInvoked(#selector(WKNavigationDelegate.webView(_:didFinish:)))\n            .map { a in try castOrThrow(WKNavigation.self, a[1]) }\n    }\n\n    /// Reactive wrapper for `navigationDelegate` message.\n    var didFailLoad: Observable<(WKNavigation, Error)> {\n        navigationDelegate\n            .methodInvoked(#selector(WKNavigationDelegate.webView(_:didFail:withError:)))\n            .map { a in\n                try (\n                    castOrThrow(WKNavigation.self, a[1]),\n                    castOrThrow(Error.self, a[2])\n                )\n            }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSButton+Rx.swift",
    "content": "//\n//  NSButton+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 5/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\n\nimport Cocoa\nimport RxSwift\n\npublic extension Reactive where Base: NSButton {\n    /// Reactive wrapper for control event.\n    var tap: ControlEvent<Void> {\n        controlEvent\n    }\n\n    /// Reactive wrapper for `state` property`.\n    var state: ControlProperty<NSControl.StateValue> {\n        base.rx.controlProperty(\n            getter: { control in\n                control.state\n            }, setter: { (control: NSButton, state: NSControl.StateValue) in\n                control.state = state\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSControl+Rx.swift",
    "content": "//\n//  NSControl+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 5/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\n\nimport Cocoa\nimport RxSwift\n\nprivate var rx_value_key: UInt8 = 0\nprivate var rx_control_events_key: UInt8 = 0\n\npublic extension Reactive where Base: NSControl {\n    /// Reactive wrapper for control event.\n    var controlEvent: ControlEvent<Void> {\n        MainScheduler.ensureRunningOnMainThread()\n\n        let source = lazyInstanceObservable(&rx_control_events_key) { () -> Observable<Void> in\n            Observable.create { [weak control = self.base] observer in\n                MainScheduler.ensureRunningOnMainThread()\n\n                guard let control else {\n                    observer.on(.completed)\n                    return Disposables.create()\n                }\n\n                let observer = ControlTarget(control: control) { _ in\n                    observer.on(.next(()))\n                }\n\n                return observer\n            }\n            .take(until: self.deallocated)\n            .share()\n        }\n\n        return ControlEvent(events: source)\n    }\n\n    /// Creates a `ControlProperty` that is triggered by target/action pattern value updates.\n    ///\n    /// - parameter getter: Property value getter.\n    /// - parameter setter: Property value setter.\n    func controlProperty<T>(\n        getter: @escaping (Base) -> T,\n        setter: @escaping (Base, T) -> Void\n    ) -> ControlProperty<T> {\n        MainScheduler.ensureRunningOnMainThread()\n\n        let source = base.rx.lazyInstanceObservable(&rx_value_key) { () -> Observable<Void> in\n            return Observable.create { [weak weakControl = self.base] (observer: AnyObserver<Void>) in\n                guard let control = weakControl else {\n                    observer.on(.completed)\n                    return Disposables.create()\n                }\n\n                observer.on(.next(()))\n\n                let observer = ControlTarget(control: control) { _ in\n                    if weakControl != nil {\n                        observer.on(.next(()))\n                    }\n                }\n\n                return observer\n            }\n            .take(until: self.deallocated)\n            .share(replay: 1, scope: .whileConnected)\n        }\n        .flatMap { [weak base] _ -> Observable<T> in\n            guard let control = base else { return Observable.empty() }\n            return Observable.just(getter(control))\n        }\n\n        let bindingObserver = Binder(base, binding: setter)\n\n        return ControlProperty(values: source, valueSink: bindingObserver)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSSlider+Rx.swift",
    "content": "//\n//  NSSlider+Rx.swift\n//  RxCocoa\n//\n//  Created by Junior B. on 24/05/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\n\nimport Cocoa\nimport RxSwift\n\npublic extension Reactive where Base: NSSlider {\n    /// Reactive wrapper for `value` property.\n    var value: ControlProperty<Double> {\n        base.rx.controlProperty(\n            getter: { control -> Double in\n                return control.doubleValue\n            },\n            setter: { control, value in\n                control.doubleValue = value\n            }\n        )\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSTextField+Rx.swift",
    "content": "//\n//  NSTextField+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 5/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\n\nimport Cocoa\nimport RxSwift\n\n/// Delegate proxy for `NSTextField`.\n///\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTextFieldDelegateProxy:\n    DelegateProxy<NSTextField, NSTextFieldDelegate>,\n    DelegateProxyType,\n    NSTextFieldDelegate\n{\n    /// Typed parent object.\n    public private(set) weak var textField: NSTextField?\n\n    /// Initializes `RxTextFieldDelegateProxy`\n    ///\n    /// - parameter textField: Parent object for delegate proxy.\n    init(textField: NSTextField) {\n        self.textField = textField\n        super.init(parentObject: textField, delegateProxy: RxTextFieldDelegateProxy.self)\n    }\n\n    public static func registerKnownImplementations() {\n        register { RxTextFieldDelegateProxy(textField: $0) }\n    }\n\n    fileprivate let textSubject = PublishSubject<String?>()\n\n    // MARK: Delegate methods\n\n    open func controlTextDidChange(_ notification: Notification) {\n        let textField: NSTextField = castOrFatalError(notification.object)\n        let nextValue = textField.stringValue\n        textSubject.on(.next(nextValue))\n        _forwardToDelegate?.controlTextDidChange?(notification)\n    }\n\n    // MARK: Delegate proxy methods\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func currentDelegate(for object: ParentObject) -> NSTextFieldDelegate? {\n        object.delegate\n    }\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func setCurrentDelegate(_ delegate: NSTextFieldDelegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n}\n\npublic extension Reactive where Base: NSTextField {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<NSTextField, NSTextFieldDelegate> {\n        RxTextFieldDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `text` property.\n    var text: ControlProperty<String?> {\n        let delegate = RxTextFieldDelegateProxy.proxy(for: base)\n\n        let source = Observable.deferred { [weak textField = self.base] in\n            delegate.textSubject.startWith(textField?.stringValue)\n        }.take(until: deallocated)\n\n        let observer = Binder(base) { (control, value: String?) in\n            control.stringValue = value ?? \"\"\n        }\n\n        return ControlProperty(values: source, valueSink: observer.asObserver())\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSTextView+Rx.swift",
    "content": "//\n//  NSTextView+Rx.swift\n//  RxCocoa\n//\n//  Created by Cee on 8/5/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\n\nimport Cocoa\nimport RxSwift\n\n/// Delegate proxy for `NSTextView`.\n///\n/// For more information take a look at `DelegateProxyType`.\nopen class RxTextViewDelegateProxy: DelegateProxy<NSTextView, NSTextViewDelegate>, DelegateProxyType, NSTextViewDelegate {\n    #if compiler(>=5.2)\n    /// Typed parent object.\n    ///\n    /// - note: Since Swift 5.2 and Xcode 11.4, Apple have suddenly\n    ///         disallowed using `weak` for NSTextView. For more details\n    ///         see this GitHub Issue: https://git.io/JvSRn\n    public private(set) var textView: NSTextView?\n    #else\n    /// Typed parent object.\n    public private(set) weak var textView: NSTextView?\n    #endif\n\n    /// Initializes `RxTextViewDelegateProxy`\n    ///\n    /// - parameter textView: Parent object for delegate proxy.\n    init(textView: NSTextView) {\n        self.textView = textView\n        super.init(parentObject: textView, delegateProxy: RxTextViewDelegateProxy.self)\n    }\n\n    public static func registerKnownImplementations() {\n        register { RxTextViewDelegateProxy(textView: $0) }\n    }\n\n    fileprivate let textSubject = PublishSubject<String>()\n\n    // MARK: Delegate methods\n\n    open func textDidChange(_ notification: Notification) {\n        let textView: NSTextView = castOrFatalError(notification.object)\n        let nextValue = textView.string\n        textSubject.on(.next(nextValue))\n        _forwardToDelegate?.textDidChange?(notification)\n    }\n\n    // MARK: Delegate proxy methods\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func currentDelegate(for object: ParentObject) -> NSTextViewDelegate? {\n        object.delegate\n    }\n\n    /// For more information take a look at `DelegateProxyType`.\n    open class func setCurrentDelegate(_ delegate: NSTextViewDelegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n}\n\npublic extension Reactive where Base: NSTextView {\n    /// Reactive wrapper for `delegate`.\n    ///\n    /// For more information take a look at `DelegateProxyType` protocol documentation.\n    var delegate: DelegateProxy<NSTextView, NSTextViewDelegate> {\n        RxTextViewDelegateProxy.proxy(for: base)\n    }\n\n    /// Reactive wrapper for `string` property.\n    var string: ControlProperty<String> {\n        let delegate = RxTextViewDelegateProxy.proxy(for: base)\n\n        let source = Observable.deferred { [weak textView = self.base] in\n            delegate.textSubject.startWith(textView?.string ?? \"\")\n        }.take(until: deallocated)\n\n        let observer = Binder(base) { control, value in\n            control.string = value\n        }\n\n        return ControlProperty(values: source, valueSink: observer.asObserver())\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxCocoa/macOS/NSView+Rx.swift",
    "content": "//\n//  NSView+Rx.swift\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(macOS)\nimport Cocoa\nimport RxSwift\n\npublic extension Reactive where Base: NSView {\n    /// Bindable sink for `alphaValue` property.\n    var alpha: Binder<CGFloat> {\n        Binder(base) { view, value in\n            view.alphaValue = value\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/Extensions/CLLocationManager+Rx.swift",
    "content": "//\n//  CLLocationManager+Rx.swift\n//  RxExample\n//\n//  Created by Carlos García on 8/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxSwift\n\npublic extension Reactive where Base: CLLocationManager {\n    /**\n     Reactive wrapper for `delegate`.\n\n     For more information take a look at `DelegateProxyType` protocol documentation.\n     */\n    var delegate: DelegateProxy<CLLocationManager, CLLocationManagerDelegate> {\n        RxCLLocationManagerDelegateProxy.proxy(for: base)\n    }\n\n    // MARK: Responding to Location Events\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didUpdateLocations: Observable<[CLLocation]> {\n        RxCLLocationManagerDelegateProxy.proxy(for: base).didUpdateLocationsSubject.asObservable()\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didFailWithError: Observable<Error> {\n        RxCLLocationManagerDelegateProxy.proxy(for: base).didFailWithErrorSubject.asObservable()\n    }\n\n    #if os(iOS) || os(macOS)\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didFinishDeferredUpdatesWithError: Observable<Error?> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didFinishDeferredUpdatesWithError:)))\n            .map { a in\n                try castOptionalOrThrow(Error.self, a[1])\n            }\n    }\n    #endif\n\n    #if os(iOS)\n\n    // MARK: Pausing Location Updates\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didPauseLocationUpdates: Observable<Void> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManagerDidPauseLocationUpdates(_:)))\n            .map { _ in\n                ()\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didResumeLocationUpdates: Observable<Void> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManagerDidResumeLocationUpdates(_:)))\n            .map { _ in\n                ()\n            }\n    }\n\n    // MARK: Responding to Heading Events\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didUpdateHeading: Observable<CLHeading> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didUpdateHeading:)))\n            .map { a in\n                try castOrThrow(CLHeading.self, a[1])\n            }\n    }\n\n    // MARK: Responding to Region Events\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didEnterRegion: Observable<CLRegion> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didEnterRegion:)))\n            .map { a in\n                try castOrThrow(CLRegion.self, a[1])\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didExitRegion: Observable<CLRegion> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didExitRegion:)))\n            .map { a in\n                try castOrThrow(CLRegion.self, a[1])\n            }\n    }\n\n    #endif\n\n    #if os(iOS) || os(macOS)\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    @available(macOS 10.10, *)\n    var didDetermineStateForRegion: Observable<(state: CLRegionState, region: CLRegion)> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didDetermineState:for:)))\n            .map { a in\n                let stateNumber = try castOrThrow(NSNumber.self, a[1])\n                let state = CLRegionState(rawValue: stateNumber.intValue) ?? CLRegionState.unknown\n                let region = try castOrThrow(CLRegion.self, a[2])\n                return (state: state, region: region)\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var monitoringDidFailForRegionWithError: Observable<(region: CLRegion?, error: Error)> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:monitoringDidFailFor:withError:)))\n            .map { a in\n                let region = try castOptionalOrThrow(CLRegion.self, a[1])\n                let error = try castOrThrow(Error.self, a[2])\n                return (region: region, error: error)\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didStartMonitoringForRegion: Observable<CLRegion> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didStartMonitoringFor:)))\n            .map { a in\n                try castOrThrow(CLRegion.self, a[1])\n            }\n    }\n\n    #endif\n\n    #if os(iOS)\n\n    // MARK: Responding to Ranging Events\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didRangeBeaconsInRegion: Observable<(beacons: [CLBeacon], region: CLBeaconRegion)> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didRangeBeacons:in:)))\n            .map { a in\n                let beacons = try castOrThrow([CLBeacon].self, a[1])\n                let region = try castOrThrow(CLBeaconRegion.self, a[2])\n                return (beacons: beacons, region: region)\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var rangingBeaconsDidFailForRegionWithError: Observable<(region: CLBeaconRegion, error: Error)> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:rangingBeaconsDidFailFor:withError:)))\n            .map { a in\n                let region = try castOrThrow(CLBeaconRegion.self, a[1])\n                let error = try castOrThrow(Error.self, a[2])\n                return (region: region, error: error)\n            }\n    }\n\n    // MARK: Responding to Visit Events\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    @available(iOS 8.0, *)\n    var didVisit: Observable<CLVisit> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didVisit:)))\n            .map { a in\n                try castOrThrow(CLVisit.self, a[1])\n            }\n    }\n\n    #endif\n\n    // MARK: Responding to Authorization Changes\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didChangeAuthorizationStatus: Observable<CLAuthorizationStatus> {\n        delegate.methodInvoked(#selector(CLLocationManagerDelegate.locationManager(_:didChangeAuthorization:)))\n            .map { a in\n                let number = try castOrThrow(NSNumber.self, a[1])\n                return CLAuthorizationStatus(rawValue: Int32(number.intValue)) ?? .notDetermined\n            }\n    }\n}\n\nprivate func castOrThrow<T>(_ resultType: T.Type, _ object: Any) throws -> T {\n    guard let returnValue = object as? T else {\n        throw RxCocoaError.castingError(object: object, targetType: resultType)\n    }\n\n    return returnValue\n}\n\nprivate func castOptionalOrThrow<T>(_ resultType: T.Type, _ object: Any) throws -> T? {\n    if NSNull().isEqual(object) {\n        return nil\n    }\n\n    guard let returnValue = object as? T else {\n        throw RxCocoaError.castingError(object: object, targetType: resultType)\n    }\n\n    return returnValue\n}\n"
  },
  {
    "path": "RxExample/Extensions/RxCLLocationManagerDelegateProxy.swift",
    "content": "//\n//  RxCLLocationManagerDelegateProxy.swift\n//  RxExample\n//\n//  Created by Carlos García on 8/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxSwift\n\nextension CLLocationManager: @retroactive HasDelegate {\n    public typealias Delegate = CLLocationManagerDelegate\n}\n\npublic class RxCLLocationManagerDelegateProxy:\n    DelegateProxy<CLLocationManager, CLLocationManagerDelegate>,\n    DelegateProxyType,\n    CLLocationManagerDelegate\n{\n    public init(locationManager: CLLocationManager) {\n        super.init(parentObject: locationManager, delegateProxy: RxCLLocationManagerDelegateProxy.self)\n    }\n\n    public static func registerKnownImplementations() {\n        register { RxCLLocationManagerDelegateProxy(locationManager: $0) }\n    }\n\n    lazy var didUpdateLocationsSubject = PublishSubject<[CLLocation]>()\n    lazy var didFailWithErrorSubject = PublishSubject<Error>()\n\n    public func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {\n        _forwardToDelegate?.locationManager?(manager, didUpdateLocations: locations)\n        didUpdateLocationsSubject.onNext(locations)\n    }\n\n    public func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {\n        _forwardToDelegate?.locationManager?(manager, didFailWithError: error)\n        didFailWithErrorSubject.onNext(error)\n    }\n\n    deinit {\n        self.didUpdateLocationsSubject.on(.completed)\n        self.didFailWithErrorSubject.on(.completed)\n    }\n}\n"
  },
  {
    "path": "RxExample/Extensions/RxImagePickerDelegateProxy.swift",
    "content": "//\n//  RxImagePickerDelegateProxy.swift\n//  RxExample\n//\n//  Created by Segii Shulga on 1/4/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nopen class RxImagePickerDelegateProxy:\n    RxNavigationControllerDelegateProxy, UIImagePickerControllerDelegate\n{\n    public init(imagePicker: UIImagePickerController) {\n        super.init(navigationController: imagePicker)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxExample/Extensions/UIImagePickerController+Rx.swift",
    "content": "//\n//  UIImagePickerController+Rx.swift\n//  RxExample\n//\n//  Created by Segii Shulga on 1/4/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\npublic extension Reactive where Base: UIImagePickerController {\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didFinishPickingMediaWithInfo: Observable<[UIImagePickerController.InfoKey: AnyObject]> {\n        delegate\n            .methodInvoked(#selector(UIImagePickerControllerDelegate.imagePickerController(_:didFinishPickingMediaWithInfo:)))\n            .map { a in\n                try castOrThrow([UIImagePickerController.InfoKey: AnyObject].self, a[1])\n            }\n    }\n\n    /**\n     Reactive wrapper for `delegate` message.\n     */\n    var didCancel: Observable<Void> {\n        delegate\n            .methodInvoked(#selector(UIImagePickerControllerDelegate.imagePickerControllerDidCancel(_:)))\n            .map { _ in () }\n    }\n}\n\n#endif\n\nprivate func castOrThrow<T>(_ resultType: T.Type, _ object: Any) throws -> T {\n    guard let returnValue = object as? T else {\n        throw RxCocoaError.castingError(object: object, targetType: resultType)\n    }\n\n    return returnValue\n}\n"
  },
  {
    "path": "RxExample/Playgrounds/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSHumanReadableCopyright</key>\n\t<string>Copyright © 2019 Krunoslav Zaher. All rights reserved.</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/Playgrounds/RxPlaygrounds.swift",
    "content": "//\n//  RxPlaygrounds.swift\n//  RxExample\n//\n//  Created by Shai Mishali on 20/04/2019.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\n@_exported import RxSwift\n\n// @_exported import RxCocoa // Also imports RxRelay\n// @_exported import RxTest\n// @_exported import RxBlocking\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/AnimatableSectionModel.swift",
    "content": "//\n//  AnimatableSectionModel.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/10/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic struct AnimatableSectionModel<Section: IdentifiableType, ItemType: IdentifiableType & Equatable> {\n    public var model: Section\n    public var items: [Item]\n\n    public init(model: Section, items: [ItemType]) {\n        self.model = model\n        self.items = items\n    }\n}\n\nextension AnimatableSectionModel:\n    AnimatableSectionModelType\n{\n    public typealias Item = ItemType\n    public typealias Identity = Section.Identity\n\n    public var identity: Section.Identity {\n        model.identity\n    }\n\n    public init(original: AnimatableSectionModel, items: [Item]) {\n        model = original.model\n        self.items = items\n    }\n\n    public var hashValue: Int {\n        model.identity.hashValue\n    }\n}\n\nextension AnimatableSectionModel:\n    CustomStringConvertible\n{\n    public var description: String {\n        \"HashableSectionModel(model: \\\"\\(model)\\\", items: \\(items))\"\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/AnimatableSectionModelType+ItemPath.swift",
    "content": "//\n//  AnimatableSectionModelType+ItemPath.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/9/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension Array where Element: AnimatableSectionModelType {\n    subscript(index: ItemPath) -> Element.Item {\n        self[index.sectionIndex].items[index.itemIndex]\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/AnimatableSectionModelType.swift",
    "content": "//\n//  AnimatableSectionModelType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/6/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol AnimatableSectionModelType:\n    SectionModelType,\n    IdentifiableType where Item: IdentifiableType, Item: Equatable {}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Changeset.swift",
    "content": "//\n//  Changeset.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 5/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic struct Changeset<Section: SectionModelType> {\n    public typealias Item = Section.Item\n\n    public let reloadData: Bool\n\n    public let originalSections: [Section]\n    public let finalSections: [Section]\n\n    public let insertedSections: [Int]\n    public let deletedSections: [Int]\n    public let movedSections: [(from: Int, to: Int)]\n    public let updatedSections: [Int]\n\n    public let insertedItems: [ItemPath]\n    public let deletedItems: [ItemPath]\n    public let movedItems: [(from: ItemPath, to: ItemPath)]\n    public let updatedItems: [ItemPath]\n\n    init(\n        reloadData: Bool = false,\n        originalSections: [Section] = [],\n        finalSections: [Section] = [],\n        insertedSections: [Int] = [],\n        deletedSections: [Int] = [],\n        movedSections: [(from: Int, to: Int)] = [],\n        updatedSections: [Int] = [],\n\n        insertedItems: [ItemPath] = [],\n        deletedItems: [ItemPath] = [],\n        movedItems: [(from: ItemPath, to: ItemPath)] = [],\n        updatedItems: [ItemPath] = []\n    ) {\n        self.reloadData = reloadData\n\n        self.originalSections = originalSections\n        self.finalSections = finalSections\n\n        self.insertedSections = insertedSections\n        self.deletedSections = deletedSections\n        self.movedSections = movedSections\n        self.updatedSections = updatedSections\n\n        self.insertedItems = insertedItems\n        self.deletedItems = deletedItems\n        self.movedItems = movedItems\n        self.updatedItems = updatedItems\n    }\n\n    public static func initialValue(_ sections: [Section]) -> Changeset<Section> {\n        Changeset<Section>(\n            reloadData: true,\n            finalSections: sections,\n            insertedSections: Array(0 ..< sections.count) as [Int]\n        )\n    }\n}\n\nextension ItemPath:\n    CustomDebugStringConvertible\n{\n    public var debugDescription: String {\n        \"(\\(sectionIndex), \\(itemIndex))\"\n    }\n}\n\nextension Changeset:\n    CustomDebugStringConvertible\n{\n    public var debugDescription: String {\n        let serializedSections = \"[\\n\" + finalSections.map { \"\\($0)\" }.joined(separator: \",\\n\") + \"\\n]\\n\"\n        return \" >> Final sections\"\n            + \"   \\n\\(serializedSections)\"\n            + (insertedSections.count > 0 || deletedSections.count > 0 || movedSections.count > 0 || updatedSections.count > 0 ? \"\\nSections:\" : \"\")\n            + (insertedSections.count > 0 ? \"\\ninsertedSections:\\n\\t\\(insertedSections)\" : \"\")\n            + (deletedSections.count > 0 ? \"\\ndeletedSections:\\n\\t\\(deletedSections)\" : \"\")\n            + (movedSections.count > 0 ? \"\\nmovedSections:\\n\\t\\(movedSections)\" : \"\")\n            + (updatedSections.count > 0 ? \"\\nupdatesSections:\\n\\t\\(updatedSections)\" : \"\")\n            + (insertedItems.count > 0 || deletedItems.count > 0 || movedItems.count > 0 || updatedItems.count > 0 ? \"\\nItems:\" : \"\")\n            + (insertedItems.count > 0 ? \"\\ninsertedItems:\\n\\t\\(insertedItems)\" : \"\")\n            + (deletedItems.count > 0 ? \"\\ndeletedItems:\\n\\t\\(deletedItems)\" : \"\")\n            + (movedItems.count > 0 ? \"\\nmovedItems:\\n\\t\\(movedItems)\" : \"\")\n            + (updatedItems.count > 0 ? \"\\nupdatedItems:\\n\\t\\(updatedItems)\" : \"\")\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Diff.swift",
    "content": "//\n//  Diff.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 6/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nprivate extension AnimatableSectionModelType {\n    init(safeOriginal: Self, safeItems: [Item]) throws {\n        self.init(original: safeOriginal, items: safeItems)\n\n        if items != safeItems || identity != safeOriginal.identity {\n            throw Diff.Error.invalidInitializerImplementation(section: self, expectedItems: safeItems, expectedIdentifier: safeOriginal.identity)\n        }\n    }\n}\n\npublic enum Diff {\n    public enum Error: Swift.Error, CustomDebugStringConvertible {\n        case duplicateItem(item: Any)\n        case duplicateSection(section: Any)\n        case invalidInitializerImplementation(section: Any, expectedItems: Any, expectedIdentifier: Any)\n\n        public var debugDescription: String {\n            switch self {\n            case let .duplicateItem(item):\n                \"Duplicate item \\(item)\"\n            case let .duplicateSection(section):\n                \"Duplicate section \\(section)\"\n            case let .invalidInitializerImplementation(section, expectedItems, expectedIdentifier):\n                \"Wrong initializer implementation for: \\(section)\\n\" +\n                    \"Expected it should return items: \\(expectedItems)\\n\" +\n                    \"Expected it should have id: \\(expectedIdentifier)\"\n            }\n        }\n    }\n\n    private enum EditEvent: CustomDebugStringConvertible {\n        case inserted // can't be found in old sections\n        case insertedAutomatically // Item inside section being inserted\n        case deleted // Was in old, not in new, in it's place is something \"not new\" :(, otherwise it's Updated\n        case deletedAutomatically // Item inside section that is being deleted\n        case moved // same item, but was on different index, and needs explicit move\n        case movedAutomatically // don't need to specify any changes for those rows\n        case untouched\n\n        var debugDescription: String {\n            switch self {\n            case .inserted:\n                \"Inserted\"\n            case .insertedAutomatically:\n                \"InsertedAutomatically\"\n            case .deleted:\n                \"Deleted\"\n            case .deletedAutomatically:\n                \"DeletedAutomatically\"\n            case .moved:\n                \"Moved\"\n            case .movedAutomatically:\n                \"MovedAutomatically\"\n            case .untouched:\n                \"Untouched\"\n            }\n        }\n    }\n\n    private struct SectionAssociatedData: CustomDebugStringConvertible {\n        var event: EditEvent\n        var indexAfterDelete: Int?\n        var moveIndex: Int?\n        var itemCount: Int\n\n        var debugDescription: String {\n            \"\\(event), \\(String(describing: indexAfterDelete))\"\n        }\n\n        static var initial: SectionAssociatedData {\n            SectionAssociatedData(event: .untouched, indexAfterDelete: nil, moveIndex: nil, itemCount: 0)\n        }\n    }\n\n    private struct ItemAssociatedData: CustomDebugStringConvertible {\n        var event: EditEvent\n        var indexAfterDelete: Int?\n        var moveIndex: ItemPath?\n\n        var debugDescription: String {\n            \"\\(event) \\(String(describing: indexAfterDelete))\"\n        }\n\n        static var initial: ItemAssociatedData {\n            ItemAssociatedData(event: .untouched, indexAfterDelete: nil, moveIndex: nil)\n        }\n    }\n\n    private static func indexSections<Section: AnimatableSectionModelType>(_ sections: [Section]) throws -> [Section.Identity: Int] {\n        var indexedSections: [Section.Identity: Int] = [:]\n        for (i, section) in sections.enumerated() {\n            guard indexedSections[section.identity] == nil else {\n                #if DEBUG\n                if indexedSections[section.identity] != nil {\n                    print(\"Section \\(section) has already been indexed at \\(indexedSections[section.identity]!)\")\n                }\n                #endif\n                throw Error.duplicateSection(section: section)\n            }\n            indexedSections[section.identity] = i\n        }\n\n        return indexedSections\n    }\n\n    //================================================================================\n    //  Optimizations because Swift dictionaries are extremely slow (ARC, bridging ...)\n    //================================================================================\n    // swift dictionary optimizations {\n\n    private struct OptimizedIdentity<E: Hashable>: Hashable {\n        func hash(into hasher: inout Hasher) {\n            hasher.combine(hash)\n        }\n\n        let hash: Int\n        let identity: UnsafePointer<E>\n\n        init(_ identity: UnsafePointer<E>) {\n            self.identity = identity\n            hash = identity.pointee.hashValue\n        }\n\n        static func == (lhs: OptimizedIdentity<E>, rhs: OptimizedIdentity<E>) -> Bool {\n            if lhs.hashValue != rhs.hashValue {\n                return false\n            }\n\n            if lhs.identity.distance(to: rhs.identity) == 0 {\n                return true\n            }\n\n            return lhs.identity.pointee == rhs.identity.pointee\n        }\n    }\n\n    private static func calculateAssociatedData<Item: IdentifiableType>(\n        initialItemCache: ContiguousArray<ContiguousArray<Item>>,\n        finalItemCache: ContiguousArray<ContiguousArray<Item>>\n    ) throws\n        -> (ContiguousArray<ContiguousArray<ItemAssociatedData>>, ContiguousArray<ContiguousArray<ItemAssociatedData>>)\n    {\n        typealias Identity = Item.Identity\n        let totalInitialItems = initialItemCache.map(\\.count).reduce(0, +)\n\n        var initialIdentities: ContiguousArray<Identity> = ContiguousArray()\n        var initialItemPaths: ContiguousArray<ItemPath> = ContiguousArray()\n\n        initialIdentities.reserveCapacity(totalInitialItems)\n        initialItemPaths.reserveCapacity(totalInitialItems)\n\n        for (i, items) in initialItemCache.enumerated() {\n            for j in 0 ..< items.count {\n                let item = items[j]\n                initialIdentities.append(item.identity)\n                initialItemPaths.append(ItemPath(sectionIndex: i, itemIndex: j))\n            }\n        }\n\n        var initialItemData = ContiguousArray(initialItemCache.map { items in\n            ContiguousArray<ItemAssociatedData>(repeating: ItemAssociatedData.initial, count: items.count)\n        })\n\n        var finalItemData = ContiguousArray(finalItemCache.map { items in\n            ContiguousArray<ItemAssociatedData>(repeating: ItemAssociatedData.initial, count: items.count)\n        })\n\n        try initialIdentities.withUnsafeBufferPointer { (identitiesBuffer: UnsafeBufferPointer<Identity>) in\n            var dictionary: [OptimizedIdentity<Identity>: Int] = Dictionary(minimumCapacity: totalInitialItems * 2)\n\n            for i in 0 ..< initialIdentities.count {\n                let identityPointer = identitiesBuffer.baseAddress!.advanced(by: i)\n\n                let key = OptimizedIdentity(identityPointer)\n\n                if let existingValueItemPathIndex = dictionary[key] {\n                    let itemPath = initialItemPaths[existingValueItemPathIndex]\n                    let item = initialItemCache[itemPath.sectionIndex][itemPath.itemIndex]\n                    #if DEBUG\n                    print(\"Item \\(item) has already been indexed at \\(itemPath)\")\n                    #endif\n                    throw Error.duplicateItem(item: item)\n                }\n\n                dictionary[key] = i\n            }\n\n            for (i, items) in finalItemCache.enumerated() {\n                for j in 0 ..< items.count {\n                    let item = items[j]\n                    var identity = item.identity\n                    let key = OptimizedIdentity(&identity)\n                    guard let initialItemPathIndex = dictionary[key] else {\n                        continue\n                    }\n                    let itemPath = initialItemPaths[initialItemPathIndex]\n                    if initialItemData[itemPath.sectionIndex][itemPath.itemIndex].moveIndex != nil {\n                        throw Error.duplicateItem(item: item)\n                    }\n\n                    initialItemData[itemPath.sectionIndex][itemPath.itemIndex].moveIndex = ItemPath(sectionIndex: i, itemIndex: j)\n                    finalItemData[i][j].moveIndex = itemPath\n                }\n            }\n\n            return ()\n        }\n\n        return (initialItemData, finalItemData)\n    }\n\n    // } swift dictionary optimizations\n\n    /*\n\n     I've uncovered this case during random stress testing of logic.\n     This is the hardest generic update case that causes two passes, first delete, and then move/insert\n\n     [\n     NumberSection(model: \"1\", items: [1111]),\n     NumberSection(model: \"2\", items: [2222]),\n     ]\n\n     [\n     NumberSection(model: \"2\", items: [0]),\n     NumberSection(model: \"1\", items: []),\n     ]\n\n     If update is in the form\n\n     * Move section from 2 to 1\n     * Delete Items at paths 0 - 0, 1 - 0\n     * Insert Items at paths 0 - 0\n\n     or\n\n     * Move section from 2 to 1\n     * Delete Items at paths 0 - 0\n     * Reload Items at paths 1 - 0\n\n     or\n\n     * Move section from 2 to 1\n     * Delete Items at paths 0 - 0\n     * Reload Items at paths 0 - 0\n\n     it crashes table view.\n\n     No matter what change is performed, it fails for me.\n     If anyone knows how to make this work for one Changeset, PR is welcome.\n\n     */\n\n    // If you are considering working out your own algorithm, these are tricky\n    // transition cases that you can use.\n\n    // case 1\n    /*\n     from = [\n     NumberSection(model: \"section 4\", items: [10, 11, 12]),\n     NumberSection(model: \"section 9\", items: [25, 26, 27]),\n     ]\n     to = [\n     HashableSectionModel(model: \"section 9\", items: [11, 26, 27]),\n     HashableSectionModel(model: \"section 4\", items: [10, 12])\n     ]\n     */\n\n    // case 2\n    /*\n     from = [\n     HashableSectionModel(model: \"section 10\", items: [26]),\n     HashableSectionModel(model: \"section 7\", items: [5, 29]),\n     HashableSectionModel(model: \"section 1\", items: [14]),\n     HashableSectionModel(model: \"section 5\", items: [16]),\n     HashableSectionModel(model: \"section 4\", items: []),\n     HashableSectionModel(model: \"section 8\", items: [3, 15, 19, 23]),\n     HashableSectionModel(model: \"section 3\", items: [20])\n     ]\n     to = [\n     HashableSectionModel(model: \"section 10\", items: [26]),\n     HashableSectionModel(model: \"section 1\", items: [14]),\n     HashableSectionModel(model: \"section 9\", items: [3]),\n     HashableSectionModel(model: \"section 5\", items: [16, 8]),\n     HashableSectionModel(model: \"section 8\", items: [15, 19, 23]),\n     HashableSectionModel(model: \"section 3\", items: [20]),\n     HashableSectionModel(model: \"Section 2\", items: [7])\n     ]\n     */\n\n    // case 3\n    /*\n     from = [\n     HashableSectionModel(model: \"section 4\", items: [5]),\n     HashableSectionModel(model: \"section 6\", items: [20, 14]),\n     HashableSectionModel(model: \"section 9\", items: []),\n     HashableSectionModel(model: \"section 2\", items: [2, 26]),\n     HashableSectionModel(model: \"section 8\", items: [23]),\n     HashableSectionModel(model: \"section 10\", items: [8, 18, 13]),\n     HashableSectionModel(model: \"section 1\", items: [28, 25, 6, 11, 10, 29, 24, 7, 19])\n     ]\n     to = [\n     HashableSectionModel(model: \"section 4\", items: [5]),\n     HashableSectionModel(model: \"section 6\", items: [20, 14]),\n     HashableSectionModel(model: \"section 9\", items: [16]),\n     HashableSectionModel(model: \"section 7\", items: [17, 15, 4]),\n     HashableSectionModel(model: \"section 2\", items: [2, 26, 23]),\n     HashableSectionModel(model: \"section 8\", items: []),\n     HashableSectionModel(model: \"section 10\", items: [8, 18, 13]),\n     HashableSectionModel(model: \"section 1\", items: [28, 25, 6, 11, 10, 29, 24, 7, 19])\n     ]\n     */\n\n    // Generates differential changes suitable for sectioned view consumption.\n    // It will not only detect changes between two states, but it will also try to compress those changes into\n    // almost minimal set of changes.\n    //\n    // I know, I know, it's ugly :( Totally agree, but this is the only general way I could find that works 100%, and\n    // avoids UITableView quirks.\n    //\n    // Please take into consideration that I was also convinced about 20 times that I've found a simple general\n    // solution, but then UITableView falls apart under stress testing :(\n    //\n    // Sincerely, if somebody else would present me this 250 lines of code, I would call him a mad man. I would think\n    // that there has to be a simpler solution. Well, after 3 days, I'm not convinced any more :)\n    //\n    // Maybe it can be made somewhat simpler, but don't think it can be made much simpler.\n    //\n    // The algorithm could take anywhere from 1 to 3 table view transactions to finish the updates.\n    //\n    //  * stage 1 - remove deleted sections and items\n    //  * stage 2 - move sections into place\n    //  * stage 3 - fix moved and new items\n    //\n    // There maybe exists a better division, but time will tell.\n    //\n    public static func differencesForSectionedView<Section: AnimatableSectionModelType>(\n        initialSections: [Section],\n        finalSections: [Section]\n    )\n        throws -> [Changeset<Section>]\n    {\n        typealias Item = Section.Item\n\n        var result: [Changeset<Section>] = []\n\n        var sectionCommands = try CommandGenerator<Section>.generatorForInitialSections(initialSections, finalSections: finalSections)\n\n        try result.append(contentsOf: sectionCommands.generateDeleteSectionsDeletedItemsAndUpdatedItems())\n        try result.append(contentsOf: sectionCommands.generateInsertAndMoveSections())\n        try result.append(contentsOf: sectionCommands.generateInsertAndMovedItems())\n\n        return result\n    }\n\n    private struct CommandGenerator<Section: AnimatableSectionModelType> {\n        typealias Item = Section.Item\n\n        let initialSections: [Section]\n        let finalSections: [Section]\n\n        let initialSectionData: ContiguousArray<SectionAssociatedData>\n        let finalSectionData: ContiguousArray<SectionAssociatedData>\n\n        let initialItemData: ContiguousArray<ContiguousArray<ItemAssociatedData>>\n        let finalItemData: ContiguousArray<ContiguousArray<ItemAssociatedData>>\n\n        let initialItemCache: ContiguousArray<ContiguousArray<Item>>\n        let finalItemCache: ContiguousArray<ContiguousArray<Item>>\n\n        static func generatorForInitialSections(\n            _ initialSections: [Section],\n            finalSections: [Section]\n        ) throws -> CommandGenerator<Section> {\n            let (initialSectionData, finalSectionData) = try calculateSectionMovements(initialSections: initialSections, finalSections: finalSections)\n\n            let initialItemCache = ContiguousArray(initialSections.map {\n                ContiguousArray($0.items)\n            })\n\n            let finalItemCache = ContiguousArray(finalSections.map {\n                ContiguousArray($0.items)\n            })\n\n            let (initialItemData, finalItemData) = try calculateItemMovements(\n                initialItemCache: initialItemCache,\n                finalItemCache: finalItemCache,\n                initialSectionData: initialSectionData,\n                finalSectionData: finalSectionData\n            )\n\n            return CommandGenerator<Section>(\n                initialSections: initialSections,\n                finalSections: finalSections,\n\n                initialSectionData: initialSectionData,\n                finalSectionData: finalSectionData,\n\n                initialItemData: initialItemData,\n                finalItemData: finalItemData,\n\n                initialItemCache: initialItemCache,\n                finalItemCache: finalItemCache\n            )\n        }\n\n        static func calculateItemMovements(\n            initialItemCache: ContiguousArray<ContiguousArray<Item>>,\n            finalItemCache: ContiguousArray<ContiguousArray<Item>>,\n            initialSectionData: ContiguousArray<SectionAssociatedData>,\n            finalSectionData: ContiguousArray<SectionAssociatedData>\n        ) throws\n            -> (ContiguousArray<ContiguousArray<ItemAssociatedData>>, ContiguousArray<ContiguousArray<ItemAssociatedData>>)\n        {\n            var (initialItemData, finalItemData) = try Diff.calculateAssociatedData(\n                initialItemCache: initialItemCache,\n                finalItemCache: finalItemCache\n            )\n\n            let findNextUntouchedOldIndex = { (initialSectionIndex: Int, initialSearchIndex: Int?) -> Int? in\n                guard var i2 = initialSearchIndex else {\n                    return nil\n                }\n\n                while i2 < initialSectionData[initialSectionIndex].itemCount {\n                    if initialItemData[initialSectionIndex][i2].event == .untouched {\n                        return i2\n                    }\n\n                    i2 = i2 + 1\n                }\n\n                return nil\n            }\n\n            // first mark deleted items\n            for i in 0 ..< initialItemCache.count {\n                guard let _ = initialSectionData[i].moveIndex else {\n                    continue\n                }\n\n                var indexAfterDelete = 0\n                for j in 0 ..< initialItemCache[i].count {\n                    guard let finalIndexPath = initialItemData[i][j].moveIndex else {\n                        initialItemData[i][j].event = .deleted\n                        continue\n                    }\n\n                    // from this point below, section has to be move type because it's initial and not deleted\n\n                    // because there is no move to inserted section\n                    if finalSectionData[finalIndexPath.sectionIndex].event == .inserted {\n                        initialItemData[i][j].event = .deleted\n                        continue\n                    }\n\n                    initialItemData[i][j].indexAfterDelete = indexAfterDelete\n                    indexAfterDelete += 1\n                }\n            }\n\n            // mark moved or moved automatically\n            for i in 0 ..< finalItemCache.count {\n                guard let originalSectionIndex = finalSectionData[i].moveIndex else {\n                    continue\n                }\n\n                var untouchedIndex: Int? = 0\n                for j in 0 ..< finalItemCache[i].count {\n                    untouchedIndex = findNextUntouchedOldIndex(originalSectionIndex, untouchedIndex)\n\n                    guard let originalIndex = finalItemData[i][j].moveIndex else {\n                        finalItemData[i][j].event = .inserted\n                        continue\n                    }\n\n                    // In case trying to move from deleted section, abort, otherwise it will crash table view\n                    if initialSectionData[originalIndex.sectionIndex].event == .deleted {\n                        finalItemData[i][j].event = .inserted\n                        continue\n                    }\n                    // original section can't be inserted\n                    else if initialSectionData[originalIndex.sectionIndex].event == .inserted {\n                        preconditionFailure(\"New section in initial sections, that is wrong\")\n                    }\n\n                    let initialSectionEvent = initialSectionData[originalIndex.sectionIndex].event\n                    try precondition(initialSectionEvent == .moved || initialSectionEvent == .movedAutomatically, \"Section not moved\")\n\n                    let eventType = originalIndex == ItemPath(sectionIndex: originalSectionIndex, itemIndex: untouchedIndex ?? -1)\n                        ? EditEvent.movedAutomatically : EditEvent.moved\n\n                    initialItemData[originalIndex.sectionIndex][originalIndex.itemIndex].event = eventType\n                    finalItemData[i][j].event = eventType\n                }\n            }\n\n            return (initialItemData, finalItemData)\n        }\n\n        static func calculateSectionMovements(initialSections: [Section], finalSections: [Section]) throws\n            -> (ContiguousArray<SectionAssociatedData>, ContiguousArray<SectionAssociatedData>)\n        {\n            let initialSectionIndexes = try Diff.indexSections(initialSections)\n\n            var initialSectionData = ContiguousArray<SectionAssociatedData>(repeating: SectionAssociatedData.initial, count: initialSections.count)\n            var finalSectionData = ContiguousArray<SectionAssociatedData>(repeating: SectionAssociatedData.initial, count: finalSections.count)\n\n            for (i, section) in finalSections.enumerated() {\n                finalSectionData[i].itemCount = finalSections[i].items.count\n                guard let initialSectionIndex = initialSectionIndexes[section.identity] else {\n                    continue\n                }\n\n                if initialSectionData[initialSectionIndex].moveIndex != nil {\n                    throw Error.duplicateSection(section: section)\n                }\n\n                initialSectionData[initialSectionIndex].moveIndex = i\n                finalSectionData[i].moveIndex = initialSectionIndex\n            }\n\n            var sectionIndexAfterDelete = 0\n\n            // deleted sections\n            for i in 0 ..< initialSectionData.count {\n                initialSectionData[i].itemCount = initialSections[i].items.count\n                if initialSectionData[i].moveIndex == nil {\n                    initialSectionData[i].event = .deleted\n                    continue\n                }\n\n                initialSectionData[i].indexAfterDelete = sectionIndexAfterDelete\n                sectionIndexAfterDelete += 1\n            }\n\n            // moved sections\n\n            var untouchedOldIndex: Int? = 0\n            let findNextUntouchedOldIndex = { (initialSearchIndex: Int?) -> Int? in\n                guard var i = initialSearchIndex else {\n                    return nil\n                }\n\n                while i < initialSections.count {\n                    if initialSectionData[i].event == .untouched {\n                        return i\n                    }\n\n                    i = i + 1\n                }\n\n                return nil\n            }\n\n            // inserted and moved sections {\n            // this should fix all sections and move them into correct places\n            // 2nd stage\n            for i in 0 ..< finalSections.count {\n                untouchedOldIndex = findNextUntouchedOldIndex(untouchedOldIndex)\n\n                // oh, it did exist\n                if let oldSectionIndex = finalSectionData[i].moveIndex {\n                    let moveType = oldSectionIndex != untouchedOldIndex ? EditEvent.moved : EditEvent.movedAutomatically\n\n                    finalSectionData[i].event = moveType\n                    initialSectionData[oldSectionIndex].event = moveType\n                } else {\n                    finalSectionData[i].event = .inserted\n                }\n            }\n\n            // inserted sections\n            for (i, section) in finalSectionData.enumerated() {\n                if section.moveIndex == nil {\n                    _ = finalSectionData[i].event == .inserted\n                }\n            }\n\n            return (initialSectionData, finalSectionData)\n        }\n\n        mutating func generateDeleteSectionsDeletedItemsAndUpdatedItems() throws -> [Changeset<Section>] {\n            var deletedSections = [Int]()\n\n            var deletedItems = [ItemPath]()\n            var updatedItems = [ItemPath]()\n\n            var afterDeleteState = [Section]()\n\n            // mark deleted items {\n            // 1rst stage again (I know, I know ...)\n            for (i, initialItems) in initialItemCache.enumerated() {\n                let event = initialSectionData[i].event\n\n                // Deleted section will take care of deleting child items.\n                // In case of moving an item from deleted section, tableview will\n                // crash anyway, so this is not limiting anything.\n                if event == .deleted {\n                    deletedSections.append(i)\n                    continue\n                }\n\n                var afterDeleteItems: [Section.Item] = []\n                for j in 0 ..< initialItems.count {\n                    let event = initialItemData[i][j].event\n                    switch event {\n                    case .deleted:\n                        deletedItems.append(ItemPath(sectionIndex: i, itemIndex: j))\n                    case .moved, .movedAutomatically:\n                        let finalItemIndex = try initialItemData[i][j].moveIndex.unwrap()\n                        let finalItem = finalItemCache[finalItemIndex.sectionIndex][finalItemIndex.itemIndex]\n                        if finalItem != initialSections[i].items[j] {\n                            updatedItems.append(ItemPath(sectionIndex: i, itemIndex: j))\n                        }\n                        afterDeleteItems.append(finalItem)\n                    default:\n                        preconditionFailure(\"Unhandled case\")\n                    }\n                }\n\n                try afterDeleteState.append(Section(safeOriginal: initialSections[i], safeItems: afterDeleteItems))\n            }\n            // }\n\n            if deletedItems.count == 0, deletedSections.count == 0, updatedItems.count == 0 {\n                return []\n            }\n\n            return [Changeset(\n                finalSections: afterDeleteState,\n                deletedSections: deletedSections,\n                deletedItems: deletedItems,\n                updatedItems: updatedItems\n            )]\n        }\n\n        func generateInsertAndMoveSections() throws -> [Changeset<Section>] {\n            var movedSections = [(from: Int, to: Int)]()\n            var insertedSections = [Int]()\n\n            for i in 0 ..< initialSections.count {\n                switch initialSectionData[i].event {\n                case .deleted:\n                    break\n                case .moved:\n                    try movedSections.append((from: initialSectionData[i].indexAfterDelete.unwrap(), to: initialSectionData[i].moveIndex.unwrap()))\n                case .movedAutomatically:\n                    break\n                default:\n                    preconditionFailure(\"Unhandled case in initial sections\")\n                }\n            }\n\n            for i in 0 ..< finalSections.count {\n                switch finalSectionData[i].event {\n                case .inserted:\n                    insertedSections.append(i)\n                default:\n                    break\n                }\n            }\n\n            if insertedSections.count == 0, movedSections.count == 0 {\n                return []\n            }\n\n            // sections should be in place, but items should be original without deleted ones\n            let sectionsAfterChange: [Section] = try finalSections.enumerated().map { i, s -> Section in\n                let event = finalSectionData[i].event\n\n                if event == .inserted {\n                    // it's already set up\n                    return s\n                } else if event == .moved || event == .movedAutomatically {\n                    let originalSectionIndex = try finalSectionData[i].moveIndex.unwrap()\n                    let originalSection = initialSections[originalSectionIndex]\n\n                    var items: [Section.Item] = []\n                    items.reserveCapacity(originalSection.items.count)\n                    let itemAssociatedData = initialItemData[originalSectionIndex]\n                    for j in 0 ..< originalSection.items.count {\n                        let initialData = itemAssociatedData[j]\n\n                        guard initialData.event != .deleted else {\n                            continue\n                        }\n\n                        guard let finalIndex = initialData.moveIndex else {\n                            preconditionFailure(\"Item was moved, but no final location.\")\n                            continue\n                        }\n\n                        items.append(finalItemCache[finalIndex.sectionIndex][finalIndex.itemIndex])\n                    }\n\n                    let modifiedSection = try Section(safeOriginal: s, safeItems: items)\n\n                    return modifiedSection\n                } else {\n                    preconditionFailure(\"This is weird, this shouldn't happen\")\n                }\n            }\n\n            return [Changeset(\n                finalSections: sectionsAfterChange,\n                insertedSections: insertedSections,\n                movedSections: movedSections\n            )]\n        }\n\n        mutating func generateInsertAndMovedItems() throws -> [Changeset<Section>] {\n            var insertedItems = [ItemPath]()\n            var movedItems = [(from: ItemPath, to: ItemPath)]()\n\n            // mark new and moved items {\n            // 3rd stage\n            for i in 0 ..< finalSections.count {\n                let finalSection = finalSections[i]\n\n                let sectionEvent = finalSectionData[i].event\n                // new and deleted sections cause reload automatically\n                if sectionEvent != .moved, sectionEvent != .movedAutomatically {\n                    continue\n                }\n\n                for j in 0 ..< finalSection.items.count {\n                    let currentItemEvent = finalItemData[i][j].event\n\n                    try precondition(currentItemEvent != .untouched, \"Current event is not untouched\")\n\n                    let event = finalItemData[i][j].event\n\n                    switch event {\n                    case .inserted:\n                        insertedItems.append(ItemPath(sectionIndex: i, itemIndex: j))\n                    case .moved:\n                        let originalIndex = try finalItemData[i][j].moveIndex.unwrap()\n                        let finalSectionIndex = try initialSectionData[originalIndex.sectionIndex].moveIndex.unwrap()\n                        let moveFromItemWithIndex = try initialItemData[originalIndex.sectionIndex][originalIndex.itemIndex].indexAfterDelete.unwrap()\n\n                        let moveCommand = (\n                            from: ItemPath(sectionIndex: finalSectionIndex, itemIndex: moveFromItemWithIndex),\n                            to: ItemPath(sectionIndex: i, itemIndex: j)\n                        )\n                        movedItems.append(moveCommand)\n                    default:\n                        break\n                    }\n                }\n            }\n            // }\n\n            if insertedItems.count == 0, movedItems.count == 0 {\n                return []\n            }\n            return [Changeset(\n                finalSections: finalSections,\n                insertedItems: insertedItems,\n                movedItems: movedItems\n            )]\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Differentiator.h",
    "content": "//\n//  Differentiator.h\n//  Differentiator\n//\n//  Created by muukii on 7/26/17.\n//  Copyright © 2017 kzaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n//! Project version number for Differentiator.\nFOUNDATION_EXPORT double DifferentiatorVersionNumber;\n\n//! Project version string for Differentiator.\nFOUNDATION_EXPORT const unsigned char DifferentiatorVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <Differentiator/PublicHeader.h>\n\n\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/IdentifiableType.swift",
    "content": "//\n//  IdentifiableType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/6/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol IdentifiableType {\n    associatedtype Identity: Hashable\n\n    var identity: Identity { get }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/IdentifiableValue.swift",
    "content": "//\n//  IdentifiableValue.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/7/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic struct IdentifiableValue<Value: Hashable> {\n    public let value: Value\n}\n\nextension IdentifiableValue:\n    IdentifiableType\n{\n    public typealias Identity = Value\n\n    public var identity: Identity {\n        value\n    }\n}\n\nextension IdentifiableValue:\n    Equatable,\n    CustomStringConvertible,\n    CustomDebugStringConvertible\n{\n    public var description: String {\n        \"\\(value)\"\n    }\n\n    public var debugDescription: String {\n        \"\\(value)\"\n    }\n}\n\npublic func == <V>(lhs: IdentifiableValue<V>, rhs: IdentifiableValue<V>) -> Bool {\n    lhs.value == rhs.value\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>3.0.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/ItemPath.swift",
    "content": "//\n//  ItemPath.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/9/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic struct ItemPath {\n    public let sectionIndex: Int\n    public let itemIndex: Int\n\n    public init(sectionIndex: Int, itemIndex: Int) {\n        self.sectionIndex = sectionIndex\n        self.itemIndex = itemIndex\n    }\n}\n\nextension ItemPath: Equatable {}\n\npublic func == (lhs: ItemPath, rhs: ItemPath) -> Bool {\n    lhs.sectionIndex == rhs.sectionIndex && lhs.itemIndex == rhs.itemIndex\n}\n\nextension ItemPath: Hashable {\n    public func hash(into hasher: inout Hasher) {\n        hasher.combine(sectionIndex.byteSwapped)\n        hasher.combine(itemIndex)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Optional+Extensions.swift",
    "content": "//\n//  Optional+Extensions.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/8/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension Optional {\n    func unwrap() throws -> Wrapped {\n        if let unwrapped = self {\n            return unwrapped\n        } else {\n            debugFatalError(\"Error during unwrapping optional\")\n            throw DifferentiatorError.unwrappingOptional\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/SectionModel.swift",
    "content": "//\n//  SectionModel.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 6/16/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic struct SectionModel<Section, ItemType> {\n    public var model: Section\n    public var items: [Item]\n\n    public init(model: Section, items: [Item]) {\n        self.model = model\n        self.items = items\n    }\n}\n\nextension SectionModel:\n    SectionModelType\n{\n    public typealias Identity = Section\n    public typealias Item = ItemType\n\n    public var identity: Section {\n        model\n    }\n}\n\nextension SectionModel:\n    CustomStringConvertible\n{\n    public var description: String {\n        \"\\(model) > \\(items)\"\n    }\n}\n\npublic extension SectionModel {\n    init(original: SectionModel<Section, Item>, items: [Item]) {\n        model = original.model\n        self.items = items\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/SectionModelType.swift",
    "content": "//\n//  SectionModelType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 6/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic protocol SectionModelType {\n    associatedtype Item\n\n    var items: [Item] { get }\n\n    init(original: Self, items: [Item])\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/Differentiator/Utilities.swift",
    "content": "//\n//  Utilities.swift\n//  RxDataSources\n//\n//  Created by muukii on 8/2/17.\n//  Copyright © 2017 kzaher. All rights reserved.\n//\n\nimport Foundation\n\nenum DifferentiatorError: Error {\n    case unwrappingOptional\n    case preconditionFailed(message: String)\n}\n\nfunc precondition(_ condition: Bool, _ message: @autoclosure () -> String) throws {\n    if condition {\n        return\n    }\n    debugFatalError(\"Precondition failed\")\n\n    throw DifferentiatorError.preconditionFailed(message: message())\n}\n\nfunc debugFatalError(_ error: Error) {\n    debugFatalError(\"\\(error)\")\n}\n\nfunc debugFatalError(_ message: String) {\n    #if DEBUG\n    fatalError(message)\n    #else\n    print(message)\n    #endif\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/README.md",
    "content": "RxSwift: DataSources\n====================\n\nThis directory contains example implementations of reactive data sources.\n\nReactive data sources are normal data sources + one additional method\n\n**This code has been packed in [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources) project.**\n\n```swift\n\nfunc view(view: UIXXXView, observedEvent: Event<Element>) {}\n\n```\n\nThat means that data sources now have additional responsibility of updating the corresponding view.\n\nFor now this will be a directory in Rx project with a couple of files that you can just copy and customize. \n\nIt's possible that in the future this will be extracted into separate repository and CocoaPod.\n\nIt's really hard to satisfy all needs with one codebase regarding these orthogonal dimensions:\n\n* how do you determine identity of objects\n* how to determine the structure of data source\n* how to determine is object updated\n* are objects structures or references\n* are differences between transitions already precalculated in some form (I'm looking at you NSFetchedResultsController)\n* ....\n\nSo instead of doing all things mediocre, you can use these couple of lines of code to code up your own optimized solution.\n\nThe code in this directory includes these features:\n\n* using rows or sections as DataSources for UICollectionView or UITableView\n* unified sectioned view interface\n* automatic animated partial updates with O(n) complexity (it will generate all updates to sections and items)\n\nExample project uses these files to implement partial updates in `Reactive partial updates` example.\n\nThe only problem regarding partial updates that is not solved perfectly is UICollectionView. \nUnfortunately UICollectionView has some weird problems with internal state. \nFor same set of changes, depending on clicking speed it will sometimes get out of sync with data source.\n\nThe changes in example problem are pseudorandom (they always use the same seed), so you will be able to sometimes crash UICollectionView by clicking fast, but it will be ok if you click slow :(\n\nThe problem isn't in the differential algorithm, but in UICollectionView itself, so not sure how to solve it perfectly.\nAny suggestions are welcome.\n\nUITableView on the other hand passed all stress tests. (You can run stress tests with random changes in example project)\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/AnimationConfiguration.swift",
    "content": "//\n//  AnimationConfiguration.swift\n//  RxDataSources\n//\n//  Created by Esteban Torres on 5/2/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport Foundation\nimport UIKit\n\n/**\n Exposes custom animation styles for insertion, deletion and reloading behavior.\n */\npublic struct AnimationConfiguration {\n    public let insertAnimation: UITableView.RowAnimation\n    public let reloadAnimation: UITableView.RowAnimation\n    public let deleteAnimation: UITableView.RowAnimation\n\n    public init(\n        insertAnimation: UITableView.RowAnimation = .automatic,\n        reloadAnimation: UITableView.RowAnimation = .automatic,\n        deleteAnimation: UITableView.RowAnimation = .automatic\n    ) {\n        self.insertAnimation = insertAnimation\n        self.reloadAnimation = reloadAnimation\n        self.deleteAnimation = deleteAnimation\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/Array+Extensions.swift",
    "content": "//\n//  Array+Extensions.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 4/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport Foundation\n\nextension Array where Element: SectionModelType {\n    mutating func moveFromSourceIndexPath(_ sourceIndexPath: IndexPath, destinationIndexPath: IndexPath) {\n        let sourceSection = self[sourceIndexPath.section]\n        var sourceItems = sourceSection.items\n\n        let sourceItem = sourceItems.remove(at: sourceIndexPath.item)\n\n        let sourceSectionNew = Element(original: sourceSection, items: sourceItems)\n        self[sourceIndexPath.section] = sourceSectionNew\n\n        let destinationSection = self[destinationIndexPath.section]\n        var destinationItems = destinationSection.items\n        destinationItems.insert(sourceItem, at: destinationIndexPath.item)\n\n        self[destinationIndexPath.section] = Element(original: destinationSection, items: destinationItems)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/CollectionViewSectionedDataSource.swift",
    "content": "//\n//  CollectionViewSectionedDataSource.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 7/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport UIKit\n\nopen class CollectionViewSectionedDataSource<Section: SectionModelType>:\n    NSObject,\n    UICollectionViewDataSource,\n    SectionedViewDataSourceType\n{\n    public typealias ConfigureCell = (CollectionViewSectionedDataSource<Section>, UICollectionView, IndexPath, Section.Item) -> UICollectionViewCell\n    public typealias ConfigureSupplementaryView = (CollectionViewSectionedDataSource<Section>, UICollectionView, String, IndexPath) -> UICollectionReusableView\n    public typealias MoveItem = (CollectionViewSectionedDataSource<Section>, _ sourceIndexPath: IndexPath, _ destinationIndexPath: IndexPath) -> Void\n    public typealias CanMoveItemAtIndexPath = (CollectionViewSectionedDataSource<Section>, IndexPath) -> Bool\n\n    public init(\n        configureCell: @escaping ConfigureCell,\n        configureSupplementaryView: @escaping ConfigureSupplementaryView,\n        moveItem: @escaping MoveItem = { _, _, _ in () },\n        canMoveItemAtIndexPath: @escaping CanMoveItemAtIndexPath = { _, _ in false }\n    ) {\n        self.configureCell = configureCell\n        self.configureSupplementaryView = configureSupplementaryView\n        self.moveItem = moveItem\n        self.canMoveItemAtIndexPath = canMoveItemAtIndexPath\n    }\n\n    #if DEBUG\n    // If data source has already been bound, then mutating it\n    // afterwards isn't something desired.\n    // This simulates immutability after binding\n    var _dataSourceBound: Bool = false\n\n    private func ensureNotMutatedAfterBinding() {\n        assert(!_dataSourceBound, \"Data source is already bound. Please write this line before binding call (`bindTo`, `drive`). Data source must first be completely configured, and then bound after that, otherwise there could be runtime bugs, glitches, or partial malfunctions.\")\n    }\n\n    #endif\n\n    // This structure exists because model can be mutable\n    // In that case current state value should be preserved.\n    // The state that needs to be preserved is ordering of items in section\n    // and their relationship with section.\n    // If particular item is mutable, that is irrelevant for this logic to function\n    // properly.\n    public typealias SectionModelSnapshot = SectionModel<Section, Section.Item>\n\n    private var _sectionModels: [SectionModelSnapshot] = []\n\n    open var sectionModels: [Section] {\n        _sectionModels.map { Section(original: $0.model, items: $0.items) }\n    }\n\n    open subscript(section: Int) -> Section {\n        let sectionModel = _sectionModels[section]\n        return Section(original: sectionModel.model, items: sectionModel.items)\n    }\n\n    open subscript(indexPath: IndexPath) -> Section.Item {\n        get {\n            _sectionModels[indexPath.section].items[indexPath.item]\n        }\n        set(item) {\n            var section = _sectionModels[indexPath.section]\n            section.items[indexPath.item] = item\n            _sectionModels[indexPath.section] = section\n        }\n    }\n\n    open func model(at indexPath: IndexPath) throws -> Any {\n        self[indexPath]\n    }\n\n    open func setSections(_ sections: [Section]) {\n        _sectionModels = sections.map { SectionModelSnapshot(model: $0, items: $0.items) }\n    }\n\n    open var configureCell: ConfigureCell {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var configureSupplementaryView: ConfigureSupplementaryView {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var moveItem: MoveItem {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var canMoveItemAtIndexPath: ((CollectionViewSectionedDataSource<Section>, IndexPath) -> Bool)? {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    // UICollectionViewDataSource\n\n    open func numberOfSections(in _: UICollectionView) -> Int {\n        _sectionModels.count\n    }\n\n    open func collectionView(_: UICollectionView, numberOfItemsInSection section: Int) -> Int {\n        _sectionModels[section].items.count\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {\n        precondition(indexPath.item < _sectionModels[indexPath.section].items.count)\n\n        return configureCell(self, collectionView, indexPath, self[indexPath])\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {\n        configureSupplementaryView(self, collectionView, kind, indexPath)\n    }\n\n    open func collectionView(_: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool {\n        guard let canMoveItem = canMoveItemAtIndexPath?(self, indexPath) else {\n            return false\n        }\n\n        return canMoveItem\n    }\n\n    open func collectionView(_: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {\n        _sectionModels.moveFromSourceIndexPath(sourceIndexPath, destinationIndexPath: destinationIndexPath)\n        moveItem(self, sourceIndexPath, destinationIndexPath)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/DataSources.swift",
    "content": "//\n//  DataSources.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/8/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nenum RxDataSourceError: Error {\n    case preconditionFailed(message: String)\n}\n\nfunc rxPrecondition(_ condition: Bool, _ message: @autoclosure () -> String) throws {\n    if condition {\n        return\n    }\n    rxDebugFatalError(\"Precondition failed\")\n\n    throw RxDataSourceError.preconditionFailed(message: message())\n}\n\nfunc rxDebugFatalError(_ error: Error) {\n    rxDebugFatalError(\"\\(error)\")\n}\n\nfunc rxDebugFatalError(_ message: String) {\n    #if DEBUG\n    fatalError(message)\n    #else\n    print(message)\n    #endif\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/Deprecated.swift",
    "content": "//\n//  Deprecated.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 10/8/17.\n//  Copyright © 2017 kzaher. All rights reserved.\n//\n\npublic extension CollectionViewSectionedDataSource {\n    @available(*, deprecated, renamed: \"configureSupplementaryView\")\n    var supplementaryViewFactory: ConfigureSupplementaryView {\n        get {\n            configureSupplementaryView\n        }\n        set {\n            configureSupplementaryView = newValue\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/FloatingPointType+IdentifiableType.swift",
    "content": "//\n//  FloatingPointType+IdentifiableType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 7/4/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension FloatingPoint {\n    typealias identity = Self\n\n    public var identity: Self {\n        self\n    }\n}\n\nextension Float: IdentifiableType {}\n\nextension Double: IdentifiableType {}\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>3.0.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/IntegerType+IdentifiableType.swift",
    "content": "//\n//  IntegerType+IdentifiableType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 7/4/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension BinaryInteger {\n    typealias identity = Self\n\n    public var identity: Self {\n        self\n    }\n}\n\nextension Int: IdentifiableType {}\n\nextension Int8: IdentifiableType {}\n\nextension Int16: IdentifiableType {}\n\nextension Int32: IdentifiableType {}\n\nextension Int64: IdentifiableType {}\n\nextension UInt: IdentifiableType {}\n\nextension UInt8: IdentifiableType {}\n\nextension UInt16: IdentifiableType {}\n\nextension UInt32: IdentifiableType {}\n\nextension UInt64: IdentifiableType {}\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedAnimatedDataSource.swift",
    "content": "//\n//  RxCollectionViewSectionedAnimatedDataSource.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 7/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\n/*\n This is commented because collection view has bugs when doing animated updates.\n Take a look at randomized sections.\n */\nopen class RxCollectionViewSectionedAnimatedDataSource<Section: AnimatableSectionModelType>:\n    CollectionViewSectionedDataSource<Section>,\n    RxCollectionViewDataSourceType\n{\n    public typealias Element = [Section]\n\n    // animation configuration\n    public var animationConfiguration: AnimationConfiguration\n\n    public init(\n        animationConfiguration: AnimationConfiguration = AnimationConfiguration(),\n        configureCell: @escaping ConfigureCell,\n        configureSupplementaryView: @escaping ConfigureSupplementaryView,\n        moveItem: @escaping MoveItem = { _, _, _ in () },\n        canMoveItemAtIndexPath: @escaping CanMoveItemAtIndexPath = { _, _ in false }\n    ) {\n        self.animationConfiguration = animationConfiguration\n        super.init(\n            configureCell: configureCell,\n            configureSupplementaryView: configureSupplementaryView,\n            moveItem: moveItem,\n            canMoveItemAtIndexPath: canMoveItemAtIndexPath\n        )\n\n        partialUpdateEvent\n            // so in case it does produce a crash, it will be after the data has changed\n            .observe(on: MainScheduler.asyncInstance)\n            // Collection view has issues digesting fast updates, this should\n            // help to alleviate the issues with them.\n            .throttle(.milliseconds(500), scheduler: MainScheduler.instance)\n            .subscribe(onNext: { [weak self] event in\n                self?.collectionView(event.0, throttledObservedEvent: event.1)\n            })\n            .disposed(by: disposeBag)\n    }\n\n    // For some inexplicable reason, when doing animated updates first time\n    // it crashes. Still need to figure out that one.\n    var dataSet = false\n\n    private let disposeBag = DisposeBag()\n\n    // This subject and throttle are here\n    // because collection view has problems processing animated updates fast.\n    // This should somewhat help to alleviate the problem.\n    private let partialUpdateEvent = PublishSubject<(UICollectionView, Event<Element>)>()\n\n    /**\n      This method exists because collection view updates are throttled because of internal collection view bugs.\n      Collection view behaves poorly during fast updates, so this should remedy those issues.\n     */\n    open func collectionView(_ collectionView: UICollectionView, throttledObservedEvent event: Event<Element>) {\n        Binder(self) { dataSource, newSections in\n            let oldSections = dataSource.sectionModels\n            do {\n                // if view is not in view hierarchy, performing batch updates will crash the app\n                if collectionView.window == nil {\n                    dataSource.setSections(newSections)\n                    collectionView.reloadData()\n                    return\n                }\n                let differences = try Diff.differencesForSectionedView(initialSections: oldSections, finalSections: newSections)\n\n                for difference in differences {\n                    dataSource.setSections(difference.finalSections)\n\n                    collectionView.performBatchUpdates(difference, animationConfiguration: self.animationConfiguration)\n                }\n            } catch let e {\n                #if DEBUG\n                print(\"Error while binding data animated: \\(e)\\nFallback to normal `reloadData` behavior.\")\n                rxDebugFatalError(e)\n                #endif\n                self.setSections(newSections)\n                collectionView.reloadData()\n            }\n        }.on(event)\n    }\n\n    open func collectionView(_ collectionView: UICollectionView, observedEvent: Event<Element>) {\n        Binder(self) { dataSource, newSections in\n            #if DEBUG\n            self._dataSourceBound = true\n            #endif\n            if !self.dataSet {\n                self.dataSet = true\n                dataSource.setSections(newSections)\n                collectionView.reloadData()\n            } else {\n                let element = (collectionView, observedEvent)\n                dataSource.partialUpdateEvent.on(.next(element))\n            }\n        }.on(observedEvent)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxCollectionViewSectionedReloadDataSource.swift",
    "content": "//\n//  RxCollectionViewSectionedReloadDataSource.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 7/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nopen class RxCollectionViewSectionedReloadDataSource<Section: SectionModelType>:\n    CollectionViewSectionedDataSource<Section>,\n    RxCollectionViewDataSourceType\n{\n    public typealias Element = [Section]\n\n    open func collectionView(_ collectionView: UICollectionView, observedEvent: Event<Element>) {\n        Binder(self) { dataSource, element in\n            #if DEBUG\n            self._dataSourceBound = true\n            #endif\n            dataSource.setSections(element)\n            collectionView.reloadData()\n            collectionView.collectionViewLayout.invalidateLayout()\n        }.on(observedEvent)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxDataSources.h",
    "content": "//\n//  RxDataSources.h\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 1/1/16.\n//  Copyright © 2016 kzaher. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for RxDataSources.\nFOUNDATION_EXPORT double RxDataSourcesVersionNumber;\n\n//! Project version string for RxDataSources.\nFOUNDATION_EXPORT const unsigned char RxDataSourcesVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <RxDataSources/PublicHeader.h>\n\n\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxPickerViewAdapter.swift",
    "content": "//\n//  RxPickerViewAdapter.swift\n//  RxDataSources\n//\n//  Created by Sergey Shulga on 04/07/2017.\n//  Copyright © 2017 kzaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\n/// A reactive UIPickerView adapter which uses `func pickerView(UIPickerView, titleForRow: Int, forComponent: Int)` to display the content\n/**\n  Example:\n\n let adapter = RxPickerViewStringAdapter<[T]>(...)\n\n items\n  .bind(to: firstPickerView.rx.items(adapter: adapter))\n  .disposed(by: disposeBag)\n\n  */\nopen class RxPickerViewStringAdapter<T>: RxPickerViewDataSource<T>, UIPickerViewDelegate {\n    /**\n      - parameter dataSource\n      - parameter pickerView\n      - parameter components\n      - parameter row\n      - parameter component\n     */\n    public typealias TitleForRow = (\n        _ dataSource: RxPickerViewStringAdapter<T>,\n        _ pickerView: UIPickerView,\n        _ components: T,\n        _ row: Int,\n        _ component: Int\n    ) -> String?\n\n    private let titleForRow: TitleForRow\n\n    /**\n     - parameter components: Initial content value.\n     - parameter numberOfComponents: Implementation of corresponding delegate method.\n     - parameter numberOfRowsInComponent: Implementation of corresponding delegate method.\n     - parameter titleForRow: Implementation of corresponding adapter method that converts component to `String`.\n     */\n    public init(\n        components: T,\n        numberOfComponents: @escaping NumberOfComponents,\n        numberOfRowsInComponent: @escaping NumberOfRowsInComponent,\n        titleForRow: @escaping TitleForRow\n    ) {\n        self.titleForRow = titleForRow\n        super.init(\n            components: components,\n            numberOfComponents: numberOfComponents,\n            numberOfRowsInComponent: numberOfRowsInComponent\n        )\n    }\n\n    open func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {\n        titleForRow(self, pickerView, components, row, component)\n    }\n}\n\n/// A reactive UIPickerView adapter which uses `func pickerView(UIPickerView, viewForRow: Int, forComponent: Int, reusing: UIView?)` to display the content\n/**\n Example:\n\n let adapter = RxPickerViewAttributedStringAdapter<[T]>(...)\n\n items\n .bind(to: firstPickerView.rx.items(adapter: adapter))\n .disposed(by: disposeBag)\n\n */\nopen class RxPickerViewAttributedStringAdapter<T>: RxPickerViewDataSource<T>, UIPickerViewDelegate {\n    /**\n      - parameter dataSource\n      - parameter pickerView\n      - parameter components\n      - parameter row\n      - parameter component\n     */\n    public typealias AttributedTitleForRow = (\n        _ dataSource: RxPickerViewAttributedStringAdapter<T>,\n        _ pickerView: UIPickerView,\n        _ components: T,\n        _ row: Int,\n        _ component: Int\n    ) -> NSAttributedString?\n\n    private let attributedTitleForRow: AttributedTitleForRow\n\n    /**\n     - parameter components: Initial content value.\n     - parameter numberOfComponents: Implementation of corresponding delegate method.\n     - parameter numberOfRowsInComponent: Implementation of corresponding delegate method.\n     - parameter attributedTitleForRow: Implementation of corresponding adapter method that converts component to `NSAttributedString`.\n     */\n    public init(\n        components: T,\n        numberOfComponents: @escaping NumberOfComponents,\n        numberOfRowsInComponent: @escaping NumberOfRowsInComponent,\n        attributedTitleForRow: @escaping AttributedTitleForRow\n    ) {\n        self.attributedTitleForRow = attributedTitleForRow\n        super.init(\n            components: components,\n            numberOfComponents: numberOfComponents,\n            numberOfRowsInComponent: numberOfRowsInComponent\n        )\n    }\n\n    open func pickerView(_ pickerView: UIPickerView, attributedTitleForRow row: Int, forComponent component: Int) -> NSAttributedString? {\n        attributedTitleForRow(self, pickerView, components, row, component)\n    }\n}\n\n/// A reactive UIPickerView adapter which uses `func pickerView(pickerView:, viewForRow row:, forComponent component:)` to display the content\n/**\n Example:\n\n let adapter = RxPickerViewViewAdapter<[T]>(...)\n\n items\n .bind(to: firstPickerView.rx.items(adapter: adapter))\n .disposed(by: disposeBag)\n\n */\nopen class RxPickerViewViewAdapter<T>: RxPickerViewDataSource<T>, UIPickerViewDelegate {\n    /**\n      - parameter dataSource\n      - parameter pickerView\n      - parameter components\n      - parameter row\n      - parameter component\n      - parameter view\n     */\n    public typealias ViewForRow = (\n        _ dataSource: RxPickerViewViewAdapter<T>,\n        _ pickerView: UIPickerView,\n        _ components: T,\n        _ row: Int,\n        _ component: Int,\n        _ view: UIView?\n    ) -> UIView\n\n    private let viewForRow: ViewForRow\n\n    /**\n     - parameter components: Initial content value.\n     - parameter numberOfComponents: Implementation of corresponding delegate method.\n     - parameter numberOfRowsInComponent: Implementation of corresponding delegate method.\n     - parameter attributedTitleForRow: Implementation of corresponding adapter method that converts component to `UIView`.\n     */\n    public init(\n        components: T,\n        numberOfComponents: @escaping NumberOfComponents,\n        numberOfRowsInComponent: @escaping NumberOfRowsInComponent,\n        viewForRow: @escaping ViewForRow\n    ) {\n        self.viewForRow = viewForRow\n        super.init(\n            components: components,\n            numberOfComponents: numberOfComponents,\n            numberOfRowsInComponent: numberOfRowsInComponent\n        )\n    }\n\n    open func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {\n        viewForRow(self, pickerView, components, row, component, view)\n    }\n}\n\n/// A reactive UIPickerView data source\nopen class RxPickerViewDataSource<T>: NSObject, UIPickerViewDataSource {\n    /**\n      - parameter dataSource\n      - parameter pickerView\n      - parameter components\n     */\n    public typealias NumberOfComponents = (\n        _ dataSource: RxPickerViewDataSource,\n        _ pickerView: UIPickerView,\n        _ components: T\n    ) -> Int\n    /**\n      - parameter dataSource\n      - parameter pickerView\n      - parameter components\n      - parameter component\n     */\n    public typealias NumberOfRowsInComponent = (\n        _ dataSource: RxPickerViewDataSource,\n        _ pickerView: UIPickerView,\n        _ components: T,\n        _ component: Int\n    ) -> Int\n\n    fileprivate var components: T\n\n    /**\n     - parameter components: Initial content value.\n     - parameter numberOfComponents: Implementation of corresponding delegate method.\n     - parameter numberOfRowsInComponent: Implementation of corresponding delegate method.\n     */\n    init(\n        components: T,\n        numberOfComponents: @escaping NumberOfComponents,\n        numberOfRowsInComponent: @escaping NumberOfRowsInComponent\n    ) {\n        self.components = components\n        self.numberOfComponents = numberOfComponents\n        self.numberOfRowsInComponent = numberOfRowsInComponent\n        super.init()\n    }\n\n    private let numberOfComponents: NumberOfComponents\n    private let numberOfRowsInComponent: NumberOfRowsInComponent\n\n    // MARK: UIPickerViewDataSource\n\n    public func numberOfComponents(in pickerView: UIPickerView) -> Int {\n        numberOfComponents(self, pickerView, components)\n    }\n\n    public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {\n        numberOfRowsInComponent(self, pickerView, components, component)\n    }\n}\n\nextension RxPickerViewDataSource: RxPickerViewDataSourceType {\n    public func pickerView(_ pickerView: UIPickerView, observedEvent: Event<T>) {\n        Binder(self) { dataSource, components in\n            dataSource.components = components\n            pickerView.reloadAllComponents()\n        }.on(observedEvent)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxTableViewSectionedAnimatedDataSource.swift",
    "content": "//\n//  RxTableViewSectionedAnimatedDataSource.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 6/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nopen class RxTableViewSectionedAnimatedDataSource<Section: AnimatableSectionModelType>:\n    TableViewSectionedDataSource<Section>,\n    RxTableViewDataSourceType\n{\n    public typealias Element = [Section]\n\n    /// Animation configuration for data source\n    public var animationConfiguration: AnimationConfiguration\n\n    #if os(iOS)\n    public init(\n        animationConfiguration: AnimationConfiguration = AnimationConfiguration(),\n        configureCell: @escaping ConfigureCell,\n        titleForHeaderInSection: @escaping TitleForHeaderInSection = { _, _ in nil },\n        titleForFooterInSection: @escaping TitleForFooterInSection = { _, _ in nil },\n        canEditRowAtIndexPath: @escaping CanEditRowAtIndexPath = { _, _ in false },\n        canMoveRowAtIndexPath: @escaping CanMoveRowAtIndexPath = { _, _ in false },\n        sectionIndexTitles: @escaping SectionIndexTitles = { _ in nil },\n        sectionForSectionIndexTitle: @escaping SectionForSectionIndexTitle = { _, _, index in index }\n    ) {\n        self.animationConfiguration = animationConfiguration\n        super.init(\n            configureCell: configureCell,\n            titleForHeaderInSection: titleForHeaderInSection,\n            titleForFooterInSection: titleForFooterInSection,\n            canEditRowAtIndexPath: canEditRowAtIndexPath,\n            canMoveRowAtIndexPath: canMoveRowAtIndexPath,\n            sectionIndexTitles: sectionIndexTitles,\n            sectionForSectionIndexTitle: sectionForSectionIndexTitle\n        )\n    }\n    #else\n    public init(\n        animationConfiguration: AnimationConfiguration = AnimationConfiguration(),\n        configureCell: @escaping ConfigureCell,\n        titleForHeaderInSection: @escaping TitleForHeaderInSection = { _, _ in nil },\n        titleForFooterInSection: @escaping TitleForFooterInSection = { _, _ in nil },\n        canEditRowAtIndexPath: @escaping CanEditRowAtIndexPath = { _, _ in false },\n        canMoveRowAtIndexPath: @escaping CanMoveRowAtIndexPath = { _, _ in false }\n    ) {\n        self.animationConfiguration = animationConfiguration\n        super.init(\n            configureCell: configureCell,\n            titleForHeaderInSection: titleForHeaderInSection,\n            titleForFooterInSection: titleForFooterInSection,\n            canEditRowAtIndexPath: canEditRowAtIndexPath,\n            canMoveRowAtIndexPath: canMoveRowAtIndexPath\n        )\n    }\n    #endif\n\n    var dataSet = false\n\n    open func tableView(_ tableView: UITableView, observedEvent: Event<Element>) {\n        Binder(self) { dataSource, newSections in\n            #if DEBUG\n            self._dataSourceBound = true\n            #endif\n            if !self.dataSet {\n                self.dataSet = true\n                dataSource.setSections(newSections)\n                tableView.reloadData()\n            } else {\n                DispatchQueue.main.async {\n                    // if view is not in view hierarchy, performing batch updates will crash the app\n                    if tableView.window == nil {\n                        dataSource.setSections(newSections)\n                        tableView.reloadData()\n                        return\n                    }\n                    let oldSections = dataSource.sectionModels\n                    do {\n                        let differences = try Diff.differencesForSectionedView(initialSections: oldSections, finalSections: newSections)\n\n                        for difference in differences {\n                            dataSource.setSections(difference.finalSections)\n\n                            tableView.performBatchUpdates(difference, animationConfiguration: self.animationConfiguration)\n                        }\n                    } catch let e {\n                        rxDebugFatalError(e)\n                        self.setSections(newSections)\n                        tableView.reloadData()\n                    }\n                }\n            }\n        }.on(observedEvent)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/RxTableViewSectionedReloadDataSource.swift",
    "content": "//\n//  RxTableViewSectionedReloadDataSource.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 6/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nopen class RxTableViewSectionedReloadDataSource<Section: SectionModelType>:\n    TableViewSectionedDataSource<Section>,\n    RxTableViewDataSourceType\n{\n    public typealias Element = [Section]\n\n    open func tableView(_ tableView: UITableView, observedEvent: Event<Element>) {\n        Binder(self) { dataSource, element in\n            #if DEBUG\n            self._dataSourceBound = true\n            #endif\n            dataSource.setSections(element)\n            tableView.reloadData()\n        }.on(observedEvent)\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/String+IdentifiableType.swift",
    "content": "//\n//  String+IdentifiableType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 7/4/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nextension String: IdentifiableType {\n    public typealias Identity = String\n\n    public var identity: String {\n        self\n    }\n}\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/TableViewSectionedDataSource.swift",
    "content": "//\n//  TableViewSectionedDataSource.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 6/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport Foundation\nimport RxCocoa\nimport UIKit\n\nopen class TableViewSectionedDataSource<Section: SectionModelType>:\n    NSObject,\n    UITableViewDataSource,\n    SectionedViewDataSourceType\n{\n    public typealias Item = Section.Item\n\n    public typealias ConfigureCell = (TableViewSectionedDataSource<Section>, UITableView, IndexPath, Item) -> UITableViewCell\n    public typealias TitleForHeaderInSection = (TableViewSectionedDataSource<Section>, Int) -> String?\n    public typealias TitleForFooterInSection = (TableViewSectionedDataSource<Section>, Int) -> String?\n    public typealias CanEditRowAtIndexPath = (TableViewSectionedDataSource<Section>, IndexPath) -> Bool\n    public typealias CanMoveRowAtIndexPath = (TableViewSectionedDataSource<Section>, IndexPath) -> Bool\n\n    #if os(iOS)\n    public typealias SectionIndexTitles = (TableViewSectionedDataSource<Section>) -> [String]?\n    public typealias SectionForSectionIndexTitle = (TableViewSectionedDataSource<Section>, _ title: String, _ index: Int) -> Int\n    #endif\n\n    #if os(iOS)\n    public init(\n        configureCell: @escaping ConfigureCell,\n        titleForHeaderInSection: @escaping TitleForHeaderInSection = { _, _ in nil },\n        titleForFooterInSection: @escaping TitleForFooterInSection = { _, _ in nil },\n        canEditRowAtIndexPath: @escaping CanEditRowAtIndexPath = { _, _ in false },\n        canMoveRowAtIndexPath: @escaping CanMoveRowAtIndexPath = { _, _ in false },\n        sectionIndexTitles: @escaping SectionIndexTitles = { _ in nil },\n        sectionForSectionIndexTitle: @escaping SectionForSectionIndexTitle = { _, _, index in index }\n    ) {\n        self.configureCell = configureCell\n        self.titleForHeaderInSection = titleForHeaderInSection\n        self.titleForFooterInSection = titleForFooterInSection\n        self.canEditRowAtIndexPath = canEditRowAtIndexPath\n        self.canMoveRowAtIndexPath = canMoveRowAtIndexPath\n        self.sectionIndexTitles = sectionIndexTitles\n        self.sectionForSectionIndexTitle = sectionForSectionIndexTitle\n    }\n    #else\n    public init(\n        configureCell: @escaping ConfigureCell,\n        titleForHeaderInSection: @escaping TitleForHeaderInSection = { _, _ in nil },\n        titleForFooterInSection: @escaping TitleForFooterInSection = { _, _ in nil },\n        canEditRowAtIndexPath: @escaping CanEditRowAtIndexPath = { _, _ in false },\n        canMoveRowAtIndexPath: @escaping CanMoveRowAtIndexPath = { _, _ in false }\n    ) {\n        self.configureCell = configureCell\n        self.titleForHeaderInSection = titleForHeaderInSection\n        self.titleForFooterInSection = titleForFooterInSection\n        self.canEditRowAtIndexPath = canEditRowAtIndexPath\n        self.canMoveRowAtIndexPath = canMoveRowAtIndexPath\n    }\n    #endif\n\n    #if DEBUG\n    // If data source has already been bound, then mutating it\n    // afterwards isn't something desired.\n    // This simulates immutability after binding\n    var _dataSourceBound: Bool = false\n\n    private func ensureNotMutatedAfterBinding() {\n        assert(!_dataSourceBound, \"Data source is already bound. Please write this line before binding call (`bindTo`, `drive`). Data source must first be completely configured, and then bound after that, otherwise there could be runtime bugs, glitches, or partial malfunctions.\")\n    }\n\n    #endif\n\n    // This structure exists because model can be mutable\n    // In that case current state value should be preserved.\n    // The state that needs to be preserved is ordering of items in section\n    // and their relationship with section.\n    // If particular item is mutable, that is irrelevant for this logic to function\n    // properly.\n    public typealias SectionModelSnapshot = SectionModel<Section, Item>\n\n    private var _sectionModels: [SectionModelSnapshot] = []\n\n    open var sectionModels: [Section] {\n        _sectionModels.map { Section(original: $0.model, items: $0.items) }\n    }\n\n    open subscript(section: Int) -> Section {\n        let sectionModel = _sectionModels[section]\n        return Section(original: sectionModel.model, items: sectionModel.items)\n    }\n\n    open subscript(indexPath: IndexPath) -> Item {\n        get {\n            _sectionModels[indexPath.section].items[indexPath.item]\n        }\n        set(item) {\n            var section = _sectionModels[indexPath.section]\n            section.items[indexPath.item] = item\n            _sectionModels[indexPath.section] = section\n        }\n    }\n\n    open func model(at indexPath: IndexPath) throws -> Any {\n        self[indexPath]\n    }\n\n    open func setSections(_ sections: [Section]) {\n        _sectionModels = sections.map { SectionModelSnapshot(model: $0, items: $0.items) }\n    }\n\n    open var configureCell: ConfigureCell {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var titleForHeaderInSection: TitleForHeaderInSection {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var titleForFooterInSection: TitleForFooterInSection {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var canEditRowAtIndexPath: CanEditRowAtIndexPath {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var canMoveRowAtIndexPath: CanMoveRowAtIndexPath {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var rowAnimation: UITableView.RowAnimation = .automatic\n\n    #if os(iOS)\n    open var sectionIndexTitles: SectionIndexTitles {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n\n    open var sectionForSectionIndexTitle: SectionForSectionIndexTitle {\n        didSet {\n            #if DEBUG\n            ensureNotMutatedAfterBinding()\n            #endif\n        }\n    }\n    #endif\n\n    // UITableViewDataSource\n\n    open func numberOfSections(in _: UITableView) -> Int {\n        _sectionModels.count\n    }\n\n    open func tableView(_: UITableView, numberOfRowsInSection section: Int) -> Int {\n        guard _sectionModels.count > section else { return 0 }\n        return _sectionModels[section].items.count\n    }\n\n    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {\n        precondition(indexPath.item < _sectionModels[indexPath.section].items.count)\n\n        return configureCell(self, tableView, indexPath, self[indexPath])\n    }\n\n    open func tableView(_: UITableView, titleForHeaderInSection section: Int) -> String? {\n        titleForHeaderInSection(self, section)\n    }\n\n    open func tableView(_: UITableView, titleForFooterInSection section: Int) -> String? {\n        titleForFooterInSection(self, section)\n    }\n\n    open func tableView(_: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {\n        canEditRowAtIndexPath(self, indexPath)\n    }\n\n    open func tableView(_: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {\n        canMoveRowAtIndexPath(self, indexPath)\n    }\n\n    open func tableView(_: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {\n        _sectionModels.moveFromSourceIndexPath(sourceIndexPath, destinationIndexPath: destinationIndexPath)\n    }\n\n    #if os(iOS)\n    open func sectionIndexTitles(for _: UITableView) -> [String]? {\n        sectionIndexTitles(self)\n    }\n\n    open func tableView(_: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int {\n        sectionForSectionIndexTitle(self, title, index)\n    }\n    #endif\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxDataSources/RxDataSources/UI+SectionedViewType.swift",
    "content": "//\n//  UI+SectionedViewType.swift\n//  RxDataSources\n//\n//  Created by Krunoslav Zaher on 6/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\nimport Foundation\nimport UIKit\n\nfunc indexSet(_ values: [Int]) -> IndexSet {\n    let indexSet = NSMutableIndexSet()\n    for i in values {\n        indexSet.add(i)\n    }\n    return indexSet as IndexSet\n}\n\nextension UITableView: SectionedViewType {\n    public func insertItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation) {\n        insertRows(at: paths, with: animationStyle)\n    }\n\n    public func deleteItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation) {\n        deleteRows(at: paths, with: animationStyle)\n    }\n\n    public func moveItemAtIndexPath(_ from: IndexPath, to: IndexPath) {\n        moveRow(at: from, to: to)\n    }\n\n    public func reloadItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation) {\n        reloadRows(at: paths, with: animationStyle)\n    }\n\n    public func insertSections(_ sections: [Int], animationStyle: UITableView.RowAnimation) {\n        insertSections(indexSet(sections), with: animationStyle)\n    }\n\n    public func deleteSections(_ sections: [Int], animationStyle: UITableView.RowAnimation) {\n        deleteSections(indexSet(sections), with: animationStyle)\n    }\n\n    public func moveSection(_ from: Int, to: Int) {\n        moveSection(from, toSection: to)\n    }\n\n    public func reloadSections(_ sections: [Int], animationStyle: UITableView.RowAnimation) {\n        reloadSections(indexSet(sections), with: animationStyle)\n    }\n\n    public func performBatchUpdates(_ changes: Changeset<some Any>, animationConfiguration: AnimationConfiguration) {\n        beginUpdates()\n        _performBatchUpdates(self, changes: changes, animationConfiguration: animationConfiguration)\n        endUpdates()\n    }\n}\n\nextension UICollectionView: SectionedViewType {\n    public func insertItemsAtIndexPaths(_ paths: [IndexPath], animationStyle _: UITableView.RowAnimation) {\n        insertItems(at: paths)\n    }\n\n    public func deleteItemsAtIndexPaths(_ paths: [IndexPath], animationStyle _: UITableView.RowAnimation) {\n        deleteItems(at: paths)\n    }\n\n    public func moveItemAtIndexPath(_ from: IndexPath, to: IndexPath) {\n        moveItem(at: from, to: to)\n    }\n\n    public func reloadItemsAtIndexPaths(_ paths: [IndexPath], animationStyle _: UITableView.RowAnimation) {\n        reloadItems(at: paths)\n    }\n\n    public func insertSections(_ sections: [Int], animationStyle _: UITableView.RowAnimation) {\n        insertSections(indexSet(sections))\n    }\n\n    public func deleteSections(_ sections: [Int], animationStyle _: UITableView.RowAnimation) {\n        deleteSections(indexSet(sections))\n    }\n\n    public func moveSection(_ from: Int, to: Int) {\n        moveSection(from, toSection: to)\n    }\n\n    public func reloadSections(_ sections: [Int], animationStyle _: UITableView.RowAnimation) {\n        reloadSections(indexSet(sections))\n    }\n\n    public func performBatchUpdates(_ changes: Changeset<some Any>, animationConfiguration: AnimationConfiguration) {\n        performBatchUpdates({ () in\n            _performBatchUpdates(self, changes: changes, animationConfiguration: animationConfiguration)\n        }, completion: { (_: Bool) in\n        })\n    }\n}\n\npublic protocol SectionedViewType {\n    func insertItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation)\n    func deleteItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation)\n    func moveItemAtIndexPath(_ from: IndexPath, to: IndexPath)\n    func reloadItemsAtIndexPaths(_ paths: [IndexPath], animationStyle: UITableView.RowAnimation)\n\n    func insertSections(_ sections: [Int], animationStyle: UITableView.RowAnimation)\n    func deleteSections(_ sections: [Int], animationStyle: UITableView.RowAnimation)\n    func moveSection(_ from: Int, to: Int)\n    func reloadSections(_ sections: [Int], animationStyle: UITableView.RowAnimation)\n\n    func performBatchUpdates(_ changes: Changeset<some Any>, animationConfiguration: AnimationConfiguration)\n}\n\nfunc _performBatchUpdates<S>(_ view: some SectionedViewType, changes: Changeset<S>, animationConfiguration: AnimationConfiguration) {\n    typealias I = S.Item\n\n    view.deleteSections(changes.deletedSections, animationStyle: animationConfiguration.deleteAnimation)\n    // Updated sections doesn't mean reload entire section, somebody needs to update the section view manually\n    // otherwise all cells will be reloaded for nothing.\n    // view.reloadSections(changes.updatedSections, animationStyle: rowAnimation)\n    view.insertSections(changes.insertedSections, animationStyle: animationConfiguration.insertAnimation)\n    for (from, to) in changes.movedSections {\n        view.moveSection(from, to: to)\n    }\n\n    view.deleteItemsAtIndexPaths(\n        changes.deletedItems.map { IndexPath(item: $0.itemIndex, section: $0.sectionIndex) },\n        animationStyle: animationConfiguration.deleteAnimation\n    )\n    view.insertItemsAtIndexPaths(\n        changes.insertedItems.map { IndexPath(item: $0.itemIndex, section: $0.sectionIndex) },\n        animationStyle: animationConfiguration.insertAnimation\n    )\n    view.reloadItemsAtIndexPaths(\n        changes.updatedItems.map { IndexPath(item: $0.itemIndex, section: $0.sectionIndex) },\n        animationStyle: animationConfiguration.reloadAnimation\n    )\n\n    for (from, to) in changes.movedItems {\n        view.moveItemAtIndexPath(\n            IndexPath(item: from.itemIndex, section: from.sectionIndex),\n            to: IndexPath(item: to.itemIndex, section: to.sectionIndex)\n        )\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxExample/Application+Extensions.swift",
    "content": "//\n//  Application+Extensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 8/20/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n\ntypealias OSApplication = UIApplication\n#elseif os(macOS)\nimport Cocoa\n\ntypealias OSApplication = NSApplication\n#endif\n\nextension OSApplication {\n    static var isInUITest: Bool {\n        ProcessInfo.processInfo.environment[\"isUITest\"] != nil\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Example.swift",
    "content": "//\n//  Example.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n\ntypealias Image = UIImage\n#elseif os(macOS)\nimport AppKit\nimport Cocoa\n\ntypealias Image = NSImage\n#endif\n\nlet MB = 1024 * 1024\n\nfunc exampleError(_ error: String, location: String = \"\\(#file):\\(#line)\") -> NSError {\n    NSError(domain: \"ExampleError\", code: -1, userInfo: [NSLocalizedDescriptionKey: \"\\(location): \\(error)\"])\n}\n\nextension String {\n    func toFloat() -> Float? {\n        let numberFormatter = NumberFormatter()\n        return numberFormatter.number(from: self)?.floatValue\n    }\n\n    func toDouble() -> Double? {\n        let numberFormatter = NumberFormatter()\n        return numberFormatter.number(from: self)?.doubleValue\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/APIWrappers/APIWrappers.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"18122\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"J6V-0T-aRq\">\n    <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"18093\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Wrappers View Controller-->\n        <scene sceneID=\"GYg-hz-8N5\">\n            <objects>\n                <viewController id=\"J6V-0T-aRq\" customClass=\"APIWrappersViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"anJ-3z-vFC\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"bgd-ny-eho\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"wXQ-4H-OJk\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"500\" height=\"524\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rXf-aV-ofg\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"500\" height=\"524\"/>\n                                <subviews>\n                                    <stackView opaque=\"NO\" contentMode=\"scaleToFill\" axis=\"vertical\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vEN-PC-Bz9\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"500\" height=\"1105\"/>\n                                        <subviews>\n                                            <segmentedControl opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"top\" segmentControlStyle=\"plain\" selectedSegmentIndex=\"0\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"UpX-Bf-ZT6\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"500\" height=\"32\"/>\n                                                <segments>\n                                                    <segment title=\"First\"/>\n                                                    <segment title=\"Second\"/>\n                                                </segments>\n                                            </segmentedControl>\n                                            <slider opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" value=\"0.5\" minValue=\"0.0\" maxValue=\"1\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"WB2-p2-bYm\">\n                                                <rect key=\"frame\" x=\"-2\" y=\"31\" width=\"504\" height=\"31\"/>\n                                            </slider>\n                                            <switch opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" on=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QsG-uN-yAh\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"61\" width=\"502\" height=\"31\"/>\n                                                <accessibility key=\"accessibilityConfiguration\" identifier=\"TestSwitch\"/>\n                                            </switch>\n                                            <button opaque=\"NO\" contentMode=\"scaleToFill\" horizontalCompressionResistancePriority=\"700\" verticalCompressionResistancePriority=\"700\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0br-EX-AUP\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"92\" width=\"500\" height=\"47\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"47\" id=\"Dna-hz-Y3S\"/>\n                                                </constraints>\n                                                <state key=\"normal\" title=\"TapMe\">\n                                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                </state>\n                                            </button>\n                                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"249\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Eas-vY-Wds\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"139\" width=\"500\" height=\"44\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"Xqf-sB-igi\"/>\n                                                </constraints>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                                <textInputTraits key=\"textInputTraits\"/>\n                                            </textField>\n                                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"249\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qs3-zn-M8c\" userLabel=\"Text Field2\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"183\" width=\"500\" height=\"44\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"CnL-u6-awq\"/>\n                                                </constraints>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                                <textInputTraits key=\"textInputTraits\"/>\n                                            </textField>\n                                            <datePicker contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" datePickerMode=\"dateAndTime\" minuteInterval=\"1\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JEV-nj-tQA\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"227\" width=\"500\" height=\"100\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"100\" id=\"u1r-nn-deL\"/>\n                                                </constraints>\n                                            </datePicker>\n                                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"VeZ-e0-mdh\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"327\" width=\"500\" height=\"47\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"47\" id=\"XYJ-ia-aSR\"/>\n                                                </constraints>\n                                                <state key=\"normal\" title=\"Open ActionSheet\">\n                                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                </state>\n                                            </button>\n                                            <button opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"751\" horizontalCompressionResistancePriority=\"250\" verticalCompressionResistancePriority=\"250\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"system\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"gVF-My-cWk\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"374\" width=\"500\" height=\"47\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"47\" id=\"Nra-Yi-xpc\"/>\n                                                </constraints>\n                                                <state key=\"normal\" title=\"Open AlertView\">\n                                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                </state>\n                                            </button>\n                                            <activityIndicatorView hidden=\"YES\" opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" hidesWhenStopped=\"YES\" style=\"gray\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dBZ-FL-vel\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"421\" width=\"500\" height=\"20\"/>\n                                            </activityIndicatorView>\n                                            <textView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" textAlignment=\"natural\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fAU-yD-Sq3\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"441\" width=\"500\" height=\"67\"/>\n                                                <color key=\"backgroundColor\" red=\"0.93725490199999995\" green=\"0.93725490199999995\" blue=\"0.95686274510000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"67\" id=\"QL0-0v-Idg\"/>\n                                                </constraints>\n                                                <string key=\"text\">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>\n                                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                                <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" autocorrectionType=\"yes\" spellCheckingType=\"yes\"/>\n                                            </textView>\n                                            <textView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" textAlignment=\"natural\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"w5a-Wh-ohl\" userLabel=\"Text View2\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"508\" width=\"500\" height=\"67\"/>\n                                                <color key=\"backgroundColor\" red=\"0.93725490199999995\" green=\"0.93725490199999995\" blue=\"0.95686274510000002\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"67\" id=\"xpT-Mb-lIM\"/>\n                                                </constraints>\n                                                <string key=\"text\">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>\n                                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                                <textInputTraits key=\"textInputTraits\" autocapitalizationType=\"sentences\" autocorrectionType=\"yes\" spellCheckingType=\"yes\"/>\n                                            </textView>\n                                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"FAz-sk-QmU\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"575\" width=\"500\" height=\"30\"/>\n                                                <accessibility key=\"accessibilityConfiguration\" label=\"debugLabel\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"ISq-on-qGZ\"/>\n                                                </constraints>\n                                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"12\"/>\n                                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                <nil key=\"highlightedColor\"/>\n                                            </label>\n                                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"pXi-6V-1gO\">\n                                                <rect key=\"frame\" x=\"0.0\" y=\"605\" width=\"500\" height=\"500\"/>\n                                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                                <constraints>\n                                                    <constraint firstAttribute=\"height\" constant=\"500\" id=\"KC4-Ab-yd8\"/>\n                                                </constraints>\n                                            </view>\n                                        </subviews>\n                                    </stackView>\n                                </subviews>\n                                <constraints>\n                                    <constraint firstItem=\"vEN-PC-Bz9\" firstAttribute=\"leading\" secondItem=\"rXf-aV-ofg\" secondAttribute=\"leading\" id=\"M37-kI-IVq\"/>\n                                    <constraint firstAttribute=\"trailing\" secondItem=\"vEN-PC-Bz9\" secondAttribute=\"trailing\" id=\"eeM-Cd-Srg\"/>\n                                    <constraint firstItem=\"vEN-PC-Bz9\" firstAttribute=\"top\" secondItem=\"rXf-aV-ofg\" secondAttribute=\"top\" id=\"hV6-uz-rBH\"/>\n                                    <constraint firstAttribute=\"bottom\" secondItem=\"vEN-PC-Bz9\" secondAttribute=\"bottom\" constant=\"-98\" id=\"roG-79-zaB\"/>\n                                </constraints>\n                            </scrollView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <gestureRecognizers/>\n                        <constraints>\n                            <constraint firstItem=\"rXf-aV-ofg\" firstAttribute=\"leading\" secondItem=\"wXQ-4H-OJk\" secondAttribute=\"leading\" id=\"AeQ-5z-mQk\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"rXf-aV-ofg\" secondAttribute=\"trailing\" id=\"Z99-wt-CJL\"/>\n                            <constraint firstItem=\"bgd-ny-eho\" firstAttribute=\"top\" secondItem=\"rXf-aV-ofg\" secondAttribute=\"bottom\" id=\"lis-8I-0iK\"/>\n                            <constraint firstItem=\"rXf-aV-ofg\" firstAttribute=\"top\" secondItem=\"anJ-3z-vFC\" secondAttribute=\"bottom\" id=\"un1-Gn-dsh\"/>\n                            <constraint firstItem=\"vEN-PC-Bz9\" firstAttribute=\"width\" secondItem=\"wXQ-4H-OJk\" secondAttribute=\"width\" id=\"wdt-zw-5bf\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"jLb-0R-htG\">\n                        <barButtonItem key=\"rightBarButtonItem\" title=\"TapMe\" id=\"PtG-IX-ax4\"/>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n                    <size key=\"freeformSize\" width=\"500\" height=\"568\"/>\n                    <connections>\n                        <outlet property=\"activityIndicator\" destination=\"dBZ-FL-vel\" id=\"ka4-oB-47r\"/>\n                        <outlet property=\"bbitem\" destination=\"PtG-IX-ax4\" id=\"Sl6-M4-8r0\"/>\n                        <outlet property=\"button\" destination=\"0br-EX-AUP\" id=\"6RQ-bH-oin\"/>\n                        <outlet property=\"datePicker\" destination=\"JEV-nj-tQA\" id=\"LdZ-qr-RIy\"/>\n                        <outlet property=\"debugLabel\" destination=\"FAz-sk-QmU\" id=\"nRF-PL-5LD\"/>\n                        <outlet property=\"mypan\" destination=\"Shn-qP-Kjy\" id=\"sbA-Xi-VQW\"/>\n                        <outlet property=\"openActionSheet\" destination=\"VeZ-e0-mdh\" id=\"yif-jw-oVc\"/>\n                        <outlet property=\"openAlertView\" destination=\"gVF-My-cWk\" id=\"aVd-Gf-sqQ\"/>\n                        <outlet property=\"segmentedControl\" destination=\"UpX-Bf-ZT6\" id=\"QKf-Ut-0ah\"/>\n                        <outlet property=\"slider\" destination=\"WB2-p2-bYm\" id=\"XV2-ty-qzT\"/>\n                        <outlet property=\"switcher\" destination=\"QsG-uN-yAh\" id=\"wpt-IK-hWW\"/>\n                        <outlet property=\"textField\" destination=\"Eas-vY-Wds\" id=\"BNs-ed-K9u\"/>\n                        <outlet property=\"textField2\" destination=\"qs3-zn-M8c\" id=\"pJb-Sg-GHB\"/>\n                        <outlet property=\"textView\" destination=\"fAU-yD-Sq3\" id=\"jj7-Lc-Rwm\"/>\n                        <outlet property=\"textView2\" destination=\"w5a-Wh-ohl\" id=\"urT-Ot-TWu\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"k4I-9E-5OJ\" sceneMemberID=\"firstResponder\"/>\n                <panGestureRecognizer minimumNumberOfTouches=\"1\" id=\"Shn-qP-Kjy\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-627.536231884058\" y=\"831.02678571428567\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/APIWrappers/APIWrappersViewController.swift",
    "content": "//\n//  APIWrappersViewController.swift\n//  RxExample\n//\n//  Created by Carlos García on 8/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nextension UILabel {\n    override open var accessibilityValue: String! {\n        get {\n            text\n        }\n        set {\n            text = newValue\n            self.accessibilityValue = newValue\n        }\n    }\n}\n\nclass APIWrappersViewController: ViewController {\n    @IBOutlet var debugLabel: UILabel!\n\n    @IBOutlet var openActionSheet: UIButton!\n\n    @IBOutlet var openAlertView: UIButton!\n\n    @IBOutlet var bbitem: UIBarButtonItem!\n\n    @IBOutlet var segmentedControl: UISegmentedControl!\n\n    @IBOutlet var switcher: UISwitch!\n\n    @IBOutlet var activityIndicator: UIActivityIndicatorView!\n\n    @IBOutlet var button: UIButton!\n\n    @IBOutlet var slider: UISlider!\n\n    @IBOutlet var textField: UITextField!\n    @IBOutlet var textField2: UITextField!\n\n    @IBOutlet var datePicker: UIDatePicker!\n\n    @IBOutlet var mypan: UIPanGestureRecognizer!\n\n    @IBOutlet var textView: UITextView!\n    @IBOutlet var textView2: UITextView!\n\n    let manager = CLLocationManager()\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        datePicker.date = Date(timeIntervalSince1970: 0)\n\n        // MARK: UIBarButtonItem\n\n        bbitem.rx.tap\n            .subscribe(onNext: { [weak self] _ in\n                self?.debug(\"UIBarButtonItem Tapped\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UISegmentedControl\n\n        // also test two way binding\n        let segmentedValue = BehaviorRelay(value: 0)\n        _ = segmentedControl.rx.value <-> segmentedValue\n\n        segmentedValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UISegmentedControl value \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UISwitch\n\n        // also test two way binding\n        let switchValue = BehaviorRelay(value: true)\n        _ = switcher.rx.value <-> switchValue\n\n        switchValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UISwitch value \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UIActivityIndicatorView\n\n        switcher.rx.value\n            .bind(to: activityIndicator.rx.isAnimating)\n            .disposed(by: disposeBag)\n\n        // MARK: UIButton\n\n        button.rx.tap\n            .subscribe(onNext: { [weak self] _ in\n                self?.debug(\"UIButton Tapped\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UISlider\n\n        // also test two way binding\n        let sliderValue = BehaviorRelay<Float>(value: 1.0)\n        _ = slider.rx.value <-> sliderValue\n\n        sliderValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UISlider value \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UIDatePicker\n\n        // also test two way binding\n        let dateValue = BehaviorRelay(value: Date(timeIntervalSince1970: 0))\n        _ = datePicker.rx.date <-> dateValue\n\n        dateValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UIDatePicker date \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UITextField\n\n        // because of leak in ios 11.2\n        //\n        // final class UITextFieldSubclass: UITextField { deinit { print(\"never called\")  } }\n        // let textField = UITextFieldSubclass(frame: .zero)\n        if #available(iOS 11.2, *) {\n            // also test two way binding\n            let textValue = BehaviorRelay(value: \"\")\n            _ = textField.rx.textInput <-> textValue\n\n            textValue.asObservable()\n                .subscribe(onNext: { [weak self] x in\n                    self?.debug(\"UITextField text \\(x)\")\n                })\n                .disposed(by: disposeBag)\n\n            let attributedTextValue = BehaviorRelay<NSAttributedString?>(value: NSAttributedString(string: \"\"))\n            _ = textField2.rx.attributedText <-> attributedTextValue\n\n            attributedTextValue.asObservable()\n                .subscribe(onNext: { [weak self] x in\n                    self?.debug(\"UITextField attributedText \\(x?.description ?? \"\")\")\n                })\n                .disposed(by: disposeBag)\n        }\n\n        // MARK: UIGestureRecognizer\n\n        mypan.rx.event\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UIGestureRecognizer event \\(x.state.rawValue)\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: UITextView\n\n        // also test two way binding\n        let textViewValue = BehaviorRelay(value: \"\")\n        _ = textView.rx.textInput <-> textViewValue\n\n        textViewValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UITextView text \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        let attributedTextViewValue = BehaviorRelay<NSAttributedString?>(value: NSAttributedString(string: \"\"))\n        _ = textView2.rx.attributedText <-> attributedTextViewValue\n\n        attributedTextViewValue.asObservable()\n            .subscribe(onNext: { [weak self] x in\n                self?.debug(\"UITextView attributedText \\(x?.description ?? \"\")\")\n            })\n            .disposed(by: disposeBag)\n\n        // MARK: CLLocationManager\n\n        manager.requestWhenInUseAuthorization()\n\n        manager.rx.didUpdateLocations\n            .subscribe(onNext: { x in\n                print(\"rx.didUpdateLocations \\(x)\")\n            })\n            .disposed(by: disposeBag)\n\n        _ = manager.rx.didFailWithError\n            .subscribe(onNext: { x in\n                print(\"rx.didFailWithError \\(x)\")\n            })\n\n        manager.rx.didChangeAuthorizationStatus\n            .subscribe(onNext: { status in\n                print(\"Authorization status \\(status)\")\n            })\n            .disposed(by: disposeBag)\n\n        manager.startUpdatingLocation()\n    }\n\n    func debug(_ string: String) {\n        print(string)\n        debugLabel.text = string\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Calculator/Calculator.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"ErT-E8-uY3\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Aspect ratio constraints\" minToolsVersion=\"5.1\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Calculator-->\n        <scene sceneID=\"Xfe-3i-xhv\">\n            <objects>\n                <viewController id=\"ErT-E8-uY3\" customClass=\"CalculatorViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"BGU-Fc-pLc\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"LFx-RC-K1L\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"2aB-zX-D0f\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                        <subviews>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2nU-2T-o0z\">\n                                <rect key=\"frame\" x=\"281.5\" y=\"509.5\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.52156862749999999\" green=\"0.74901960779999999\" blue=\"0.1450980392\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"2nU-2T-o0z\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"4e3-8u-XpU\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"=\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cEb-GT-XMg\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"415.5\" width=\"94\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"cEb-GT-XMg\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"09S-n0-Nb0\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"1\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"CVO-3I-Mh2\">\n                                <rect key=\"frame\" x=\"94\" y=\"415.5\" width=\"93.5\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"CVO-3I-Mh2\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"MOV-kW-88s\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"2\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bkK-oc-Yvj\">\n                                <rect key=\"frame\" x=\"187.5\" y=\"416\" width=\"94\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"bkK-oc-Yvj\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"lFg-hF-hjq\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"3\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fYW-iZ-WBg\">\n                                <rect key=\"frame\" x=\"187.5\" y=\"509.5\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"fYW-iZ-WBg\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"oi8-Wx-SBM\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\".\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"X6C-HN-QW9\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"509.5\" width=\"187.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"X6C-HN-QW9\" secondAttribute=\"height\" multiplier=\"2:1\" id=\"Mh5-pN-KV4\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"0\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"prS-ma-oED\">\n                                <rect key=\"frame\" x=\"281.5\" y=\"416\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.52156862749999999\" green=\"0.74901960779999999\" blue=\"0.1450980392\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"prS-ma-oED\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"Mkr-K3-1dB\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"+\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rUw-vf-PNm\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"322\" width=\"94\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"rUw-vf-PNm\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"yT2-fN-joy\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"4\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rK2-wv-Lxq\">\n                                <rect key=\"frame\" x=\"94\" y=\"322\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"rK2-wv-Lxq\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"mct-ej-iGY\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"5\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hyZ-GS-b4n\">\n                                <rect key=\"frame\" x=\"281.5\" y=\"322\" width=\"93.5\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.52156862749999999\" green=\"0.74901960779999999\" blue=\"0.1450980392\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"hyZ-GS-b4n\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"Tfu-Rf-5Xe\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"-\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"w1G-BD-RaP\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"228\" width=\"94\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"w1G-BD-RaP\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"5a5-Su-6yU\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"7\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JfU-gs-Rj1\">\n                                <rect key=\"frame\" x=\"94\" y=\"228\" width=\"93.5\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"JfU-gs-Rj1\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"i3P-4o-97z\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"8\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ScB-JD-pYD\">\n                                <rect key=\"frame\" x=\"187.5\" y=\"228.5\" width=\"94\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"ScB-JD-pYD\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"VEO-yW-uqL\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"9\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Lef-oq-6tF\">\n                                <rect key=\"frame\" x=\"281.5\" y=\"228.5\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.52156862749999999\" green=\"0.74901960779999999\" blue=\"0.1450980392\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"Lef-oq-6tF\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"QC5-C7-JdQ\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"X\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ood-rP-hyC\">\n                                <rect key=\"frame\" x=\"94\" y=\"134.5\" width=\"93.5\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"ood-rP-hyC\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"WY5-BL-7rX\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"38\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"+/-\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Bck-k4-Rnw\">\n                                <rect key=\"frame\" x=\"187.5\" y=\"134.5\" width=\"94\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"Bck-k4-Rnw\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"spz-fS-4Ph\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"38\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"%\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6Od-LO-GKb\">\n                                <rect key=\"frame\" x=\"281.5\" y=\"134.5\" width=\"93.5\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.52156862749999999\" green=\"0.74901960779999999\" blue=\"0.1450980392\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"6Od-LO-GKb\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"xZg-E7-mcs\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"/\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dCG-4D-hbZ\">\n                                <rect key=\"frame\" x=\"187.5\" y=\"322\" width=\"94\" height=\"94\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"dCG-4D-hbZ\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"cBD-Pp-Jbd\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"70\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"6\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <button contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rNb-Ii-Dre\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"134.5\" width=\"94\" height=\"93.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" secondItem=\"rNb-Ii-Dre\" secondAttribute=\"height\" multiplier=\"1:1\" id=\"sej-2C-PGC\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"42\"/>\n                                <color key=\"tintColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <state key=\"normal\" title=\"AC\">\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"0\" textAlignment=\"right\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"xws-I8-RiJ\">\n                                <rect key=\"frame\" x=\"16\" y=\"28\" width=\"343\" height=\"98.5\"/>\n                                <color key=\"backgroundColor\" red=\"0.97338944673538208\" green=\"0.89249396324157715\" blue=\"0.84020555019378662\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"42\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"YZh-2c-lxk\">\n                                <rect key=\"frame\" x=\"16\" y=\"8\" width=\"343\" height=\"21\"/>\n                                <color key=\"backgroundColor\" red=\"0.97338944673538208\" green=\"0.89249396324157715\" blue=\"0.84020555019378662\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"21\" id=\"Tno-m0-igg\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"prS-ma-oED\" firstAttribute=\"top\" secondItem=\"hyZ-GS-b4n\" secondAttribute=\"bottom\" id=\"19F-YX-RbU\"/>\n                            <constraint firstItem=\"X6C-HN-QW9\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.5\" id=\"1Xi-1J-6MR\"/>\n                            <constraint firstItem=\"hyZ-GS-b4n\" firstAttribute=\"leading\" secondItem=\"dCG-4D-hbZ\" secondAttribute=\"trailing\" id=\"3SH-H5-ZCs\"/>\n                            <constraint firstItem=\"Lef-oq-6tF\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"5y5-DV-EXv\"/>\n                            <constraint firstItem=\"rNb-Ii-Dre\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"6UO-b4-URv\"/>\n                            <constraint firstItem=\"bkK-oc-Yvj\" firstAttribute=\"leading\" secondItem=\"CVO-3I-Mh2\" secondAttribute=\"trailing\" id=\"7k3-BL-prQ\"/>\n                            <constraint firstItem=\"cEb-GT-XMg\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"8l6-De-dbE\"/>\n                            <constraint firstItem=\"xws-I8-RiJ\" firstAttribute=\"top\" secondItem=\"BGU-Fc-pLc\" secondAttribute=\"bottom\" constant=\"28\" id=\"9PT-aA-C9h\"/>\n                            <constraint firstItem=\"CVO-3I-Mh2\" firstAttribute=\"top\" secondItem=\"rK2-wv-Lxq\" secondAttribute=\"bottom\" id=\"A2X-8X-HfS\"/>\n                            <constraint firstItem=\"xws-I8-RiJ\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" id=\"AAa-aA-FH3\"/>\n                            <constraint firstItem=\"JfU-gs-Rj1\" firstAttribute=\"leading\" secondItem=\"w1G-BD-RaP\" secondAttribute=\"trailing\" id=\"BUu-IH-pV4\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"rUw-vf-PNm\" secondAttribute=\"width\" multiplier=\"4\" id=\"Bg7-VX-Rb5\"/>\n                            <constraint firstItem=\"rK2-wv-Lxq\" firstAttribute=\"top\" secondItem=\"JfU-gs-Rj1\" secondAttribute=\"bottom\" id=\"E1x-RJ-fD8\"/>\n                            <constraint firstItem=\"JfU-gs-Rj1\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"EWv-rO-Qi1\"/>\n                            <constraint firstItem=\"CVO-3I-Mh2\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"Edo-hk-4ts\"/>\n                            <constraint firstItem=\"ScB-JD-pYD\" firstAttribute=\"top\" secondItem=\"Bck-k4-Rnw\" secondAttribute=\"bottom\" id=\"O8r-r6-AI5\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"ScB-JD-pYD\" secondAttribute=\"width\" multiplier=\"4\" id=\"Of5-GX-yeW\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"prS-ma-oED\" secondAttribute=\"trailing\" constant=\"-16\" id=\"QeY-5T-xfi\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"w1G-BD-RaP\" secondAttribute=\"width\" multiplier=\"4\" id=\"VsK-xG-FcO\"/>\n                            <constraint firstItem=\"LFx-RC-K1L\" firstAttribute=\"top\" secondItem=\"2nU-2T-o0z\" secondAttribute=\"bottom\" id=\"Wbg-YM-ePH\"/>\n                            <constraint firstItem=\"fYW-iZ-WBg\" firstAttribute=\"leading\" secondItem=\"X6C-HN-QW9\" secondAttribute=\"trailing\" id=\"XRz-eE-prF\"/>\n                            <constraint firstItem=\"Lef-oq-6tF\" firstAttribute=\"leading\" secondItem=\"ScB-JD-pYD\" secondAttribute=\"trailing\" id=\"Xhj-hj-xlv\"/>\n                            <constraint firstItem=\"2nU-2T-o0z\" firstAttribute=\"top\" secondItem=\"prS-ma-oED\" secondAttribute=\"bottom\" id=\"YT3-we-hDa\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"Lef-oq-6tF\" secondAttribute=\"trailing\" constant=\"-16\" id=\"YVe-zZ-rpJ\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"6Od-LO-GKb\" secondAttribute=\"trailing\" constant=\"-16\" id=\"YYt-hC-gKN\"/>\n                            <constraint firstItem=\"hyZ-GS-b4n\" firstAttribute=\"top\" secondItem=\"Lef-oq-6tF\" secondAttribute=\"bottom\" id=\"YxH-Sz-wBK\"/>\n                            <constraint firstItem=\"ood-rP-hyC\" firstAttribute=\"leading\" secondItem=\"rNb-Ii-Dre\" secondAttribute=\"trailing\" id=\"Yxb-GB-vCh\"/>\n                            <constraint firstItem=\"bkK-oc-Yvj\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"Ze1-tk-JnN\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"fYW-iZ-WBg\" secondAttribute=\"width\" multiplier=\"4\" constant=\"1\" id=\"aiA-Up-lJm\"/>\n                            <constraint firstItem=\"6Od-LO-GKb\" firstAttribute=\"leading\" secondItem=\"Bck-k4-Rnw\" secondAttribute=\"trailing\" id=\"c0U-9F-UVE\"/>\n                            <constraint firstItem=\"YZh-2c-lxk\" firstAttribute=\"top\" secondItem=\"BGU-Fc-pLc\" secondAttribute=\"bottom\" constant=\"8\" symbolic=\"YES\" id=\"c2C-vt-O44\"/>\n                            <constraint firstItem=\"w1G-BD-RaP\" firstAttribute=\"top\" secondItem=\"rNb-Ii-Dre\" secondAttribute=\"bottom\" id=\"cYd-Hw-gZi\"/>\n                            <constraint firstItem=\"JfU-gs-Rj1\" firstAttribute=\"top\" secondItem=\"ood-rP-hyC\" secondAttribute=\"bottom\" id=\"dCo-4f-e20\"/>\n                            <constraint firstItem=\"ood-rP-hyC\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"dOo-b9-A1C\"/>\n                            <constraint firstItem=\"YZh-2c-lxk\" firstAttribute=\"leading\" secondItem=\"xws-I8-RiJ\" secondAttribute=\"leading\" id=\"fEF-N8-P6d\"/>\n                            <constraint firstItem=\"w1G-BD-RaP\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"fSF-8a-U5j\"/>\n                            <constraint firstItem=\"X6C-HN-QW9\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"fgg-RT-xp8\"/>\n                            <constraint firstItem=\"rNb-Ii-Dre\" firstAttribute=\"top\" secondItem=\"xws-I8-RiJ\" secondAttribute=\"bottom\" constant=\"8\" id=\"g0o-Ye-EJ6\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"2nU-2T-o0z\" secondAttribute=\"width\" multiplier=\"4\" constant=\"1\" id=\"gLZ-iH-P1M\"/>\n                            <constraint firstItem=\"rK2-wv-Lxq\" firstAttribute=\"leading\" secondItem=\"rUw-vf-PNm\" secondAttribute=\"trailing\" id=\"gZb-JV-S97\"/>\n                            <constraint firstItem=\"rUw-vf-PNm\" firstAttribute=\"top\" secondItem=\"w1G-BD-RaP\" secondAttribute=\"bottom\" id=\"gmy-h3-c0P\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"hyZ-GS-b4n\" secondAttribute=\"trailing\" constant=\"-16\" id=\"hU6-SH-5Jd\"/>\n                            <constraint firstItem=\"xws-I8-RiJ\" firstAttribute=\"trailing\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"trailingMargin\" id=\"jPI-v2-MQO\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"hyZ-GS-b4n\" secondAttribute=\"width\" multiplier=\"4\" id=\"jU8-UQ-CVh\"/>\n                            <constraint firstItem=\"X6C-HN-QW9\" firstAttribute=\"top\" secondItem=\"cEb-GT-XMg\" secondAttribute=\"bottom\" id=\"kfz-93-2aV\"/>\n                            <constraint firstItem=\"cEb-GT-XMg\" firstAttribute=\"top\" secondItem=\"rUw-vf-PNm\" secondAttribute=\"bottom\" id=\"lAe-vl-ibd\"/>\n                            <constraint firstItem=\"Lef-oq-6tF\" firstAttribute=\"top\" secondItem=\"6Od-LO-GKb\" secondAttribute=\"bottom\" id=\"leB-OZ-sOB\"/>\n                            <constraint firstItem=\"LFx-RC-K1L\" firstAttribute=\"top\" secondItem=\"X6C-HN-QW9\" secondAttribute=\"bottom\" id=\"mKH-O8-Rcn\"/>\n                            <constraint firstItem=\"dCG-4D-hbZ\" firstAttribute=\"top\" secondItem=\"ScB-JD-pYD\" secondAttribute=\"bottom\" id=\"o9H-jI-OfN\"/>\n                            <constraint firstItem=\"CVO-3I-Mh2\" firstAttribute=\"leading\" secondItem=\"cEb-GT-XMg\" secondAttribute=\"trailing\" id=\"pzB-qX-XDt\"/>\n                            <constraint firstItem=\"rNb-Ii-Dre\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"rEG-5j-cKX\"/>\n                            <constraint firstItem=\"dCG-4D-hbZ\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"tIw-Wc-o5Y\"/>\n                            <constraint firstItem=\"Bck-k4-Rnw\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"u2H-CZ-AhP\"/>\n                            <constraint firstItem=\"LFx-RC-K1L\" firstAttribute=\"top\" secondItem=\"fYW-iZ-WBg\" secondAttribute=\"bottom\" id=\"v5P-Ga-JLx\"/>\n                            <constraint firstItem=\"cEb-GT-XMg\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"vsj-Qb-St6\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"2nU-2T-o0z\" secondAttribute=\"trailing\" constant=\"-16\" id=\"wJb-zH-Ld3\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"6Od-LO-GKb\" secondAttribute=\"width\" multiplier=\"4\" id=\"wb6-ee-SbK\"/>\n                            <constraint firstItem=\"fYW-iZ-WBg\" firstAttribute=\"top\" secondItem=\"bkK-oc-Yvj\" secondAttribute=\"bottom\" id=\"wql-9W-wt1\"/>\n                            <constraint firstItem=\"rK2-wv-Lxq\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"x9Z-go-ezU\"/>\n                            <constraint firstItem=\"X6C-HN-QW9\" firstAttribute=\"top\" secondItem=\"CVO-3I-Mh2\" secondAttribute=\"bottom\" id=\"xJN-iL-mp3\"/>\n                            <constraint firstItem=\"bkK-oc-Yvj\" firstAttribute=\"top\" secondItem=\"dCG-4D-hbZ\" secondAttribute=\"bottom\" id=\"xSQ-kM-i0y\"/>\n                            <constraint firstItem=\"rUw-vf-PNm\" firstAttribute=\"leading\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"xtL-Oh-5l2\"/>\n                            <constraint firstItem=\"prS-ma-oED\" firstAttribute=\"width\" secondItem=\"2aB-zX-D0f\" secondAttribute=\"width\" multiplier=\"0.25\" id=\"y31-8t-Nvu\"/>\n                            <constraint firstItem=\"YZh-2c-lxk\" firstAttribute=\"trailing\" secondItem=\"xws-I8-RiJ\" secondAttribute=\"trailing\" id=\"zjQ-8H-XyV\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Calculator\" id=\"f5N-0y-Z8w\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"allClearButton\" destination=\"rNb-Ii-Dre\" id=\"4s2-ak-hmP\"/>\n                        <outlet property=\"changeSignButton\" destination=\"ood-rP-hyC\" id=\"DVh-Lx-YA6\"/>\n                        <outlet property=\"divideButton\" destination=\"6Od-LO-GKb\" id=\"TJl-SF-xDG\"/>\n                        <outlet property=\"dotButton\" destination=\"fYW-iZ-WBg\" id=\"8gh-Bh-xnH\"/>\n                        <outlet property=\"eightButton\" destination=\"JfU-gs-Rj1\" id=\"lfN-Lb-3rB\"/>\n                        <outlet property=\"equalButton\" destination=\"2nU-2T-o0z\" id=\"d5s-aq-IZb\"/>\n                        <outlet property=\"fiveButton\" destination=\"rK2-wv-Lxq\" id=\"97z-os-7bw\"/>\n                        <outlet property=\"fourButton\" destination=\"rUw-vf-PNm\" id=\"7xg-NF-12b\"/>\n                        <outlet property=\"lastSignLabel\" destination=\"YZh-2c-lxk\" id=\"9eW-Xe-JWt\"/>\n                        <outlet property=\"minusButton\" destination=\"hyZ-GS-b4n\" id=\"hg4-5p-4PH\"/>\n                        <outlet property=\"multiplyButton\" destination=\"Lef-oq-6tF\" id=\"LJ7-bN-1Ok\"/>\n                        <outlet property=\"nineButton\" destination=\"ScB-JD-pYD\" id=\"qEp-ke-pJD\"/>\n                        <outlet property=\"oneButton\" destination=\"cEb-GT-XMg\" id=\"7ND-Jm-7he\"/>\n                        <outlet property=\"percentButton\" destination=\"Bck-k4-Rnw\" id=\"2HI-1N-V3v\"/>\n                        <outlet property=\"plusButton\" destination=\"prS-ma-oED\" id=\"wsH-hh-cHi\"/>\n                        <outlet property=\"resultLabel\" destination=\"xws-I8-RiJ\" id=\"X21-5l-a8h\"/>\n                        <outlet property=\"sevenButton\" destination=\"w1G-BD-RaP\" id=\"vbU-5M-YfS\"/>\n                        <outlet property=\"sixButton\" destination=\"dCG-4D-hbZ\" id=\"i6m-PM-MEL\"/>\n                        <outlet property=\"threeButton\" destination=\"bkK-oc-Yvj\" id=\"jWX-5p-rc3\"/>\n                        <outlet property=\"twoButton\" destination=\"CVO-3I-Mh2\" id=\"HdU-aP-840\"/>\n                        <outlet property=\"zeroButton\" destination=\"X6C-HN-QW9\" id=\"Jy2-qg-wIn\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Hlb-0U-7wp\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"0.0\" y=\"348\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Calculator/Calculator.swift",
    "content": "//\n//  Calculator.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nenum Operator {\n    case addition\n    case subtraction\n    case multiplication\n    case division\n}\n\nenum CalculatorCommand {\n    case clear\n    case changeSign\n    case percent\n    case operation(Operator)\n    case equal\n    case addNumber(Character)\n    case addDot\n}\n\nenum CalculatorState {\n    case oneOperand(screen: String)\n    case oneOperandAndOperator(operand: Double, operator: Operator)\n    case twoOperandsAndOperator(operand: Double, operator: Operator, screen: String)\n}\n\nextension CalculatorState {\n    static let initial = CalculatorState.oneOperand(screen: \"0\")\n\n    func mapScreen(transform: (String) -> String) -> CalculatorState {\n        switch self {\n        case let .oneOperand(screen):\n            .oneOperand(screen: transform(screen))\n        case let .oneOperandAndOperator(operand, operat):\n            .twoOperandsAndOperator(operand: operand, operator: operat, screen: transform(\"0\"))\n        case let .twoOperandsAndOperator(operand, operat, screen):\n            .twoOperandsAndOperator(operand: operand, operator: operat, screen: transform(screen))\n        }\n    }\n\n    var screen: String {\n        switch self {\n        case let .oneOperand(screen):\n            screen\n        case .oneOperandAndOperator:\n            \"0\"\n        case let .twoOperandsAndOperator(_, _, screen):\n            screen\n        }\n    }\n\n    var sign: String {\n        switch self {\n        case .oneOperand:\n            \"\"\n        case let .oneOperandAndOperator(_, o):\n            o.sign\n        case let .twoOperandsAndOperator(_, o, _):\n            o.sign\n        }\n    }\n}\n\nextension CalculatorState {\n    static func reduce(state: CalculatorState, _ x: CalculatorCommand) -> CalculatorState {\n        switch x {\n        case .clear:\n            return CalculatorState.initial\n        case let .addNumber(c):\n            return state.mapScreen { $0 == \"0\" ? String(c) : $0 + String(c) }\n        case .addDot:\n            return state.mapScreen { $0.range(of: \".\") == nil ? $0 + \".\" : $0 }\n        case .changeSign:\n            return state.mapScreen { \"\\(-(Double($0) ?? 0.0))\" }\n        case .percent:\n            return state.mapScreen { \"\\((Double($0) ?? 0.0) / 100.0)\" }\n        case let .operation(o):\n            switch state {\n            case let .oneOperand(screen):\n                return .oneOperandAndOperator(operand: screen.doubleValue, operator: o)\n            case let .oneOperandAndOperator(operand, _):\n                return .oneOperandAndOperator(operand: operand, operator: o)\n            case let .twoOperandsAndOperator(operand, oldOperator, screen):\n                return .twoOperandsAndOperator(operand: oldOperator.perform(operand, screen.doubleValue), operator: o, screen: \"0\")\n            }\n        case .equal:\n            switch state {\n            case let .twoOperandsAndOperator(operand, operat, screen):\n                let result = operat.perform(operand, screen.doubleValue)\n                return .oneOperand(screen: String(result))\n            default:\n                return state\n            }\n        }\n    }\n}\n\nextension Operator {\n    var sign: String {\n        switch self {\n        case .addition: \"+\"\n        case .subtraction: \"-\"\n        case .multiplication: \"×\"\n        case .division: \"/\"\n        }\n    }\n\n    var perform: (Double, Double) -> Double {\n        switch self {\n        case .addition: (+)\n        case .subtraction: (-)\n        case .multiplication: (*)\n        case .division: (/)\n        }\n    }\n}\n\nprivate extension String {\n    var doubleValue: Double {\n        guard let double = Double(self) else {\n            return Double.infinity\n        }\n        return double\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Calculator/CalculatorViewController.swift",
    "content": "//\n//  CalculatorViewController.swift\n//  RxExample\n//\n//  Created by Carlos García on 4/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass CalculatorViewController: ViewController {\n    @IBOutlet var lastSignLabel: UILabel!\n    @IBOutlet var resultLabel: UILabel!\n\n    @IBOutlet var allClearButton: UIButton!\n    @IBOutlet var changeSignButton: UIButton!\n    @IBOutlet var percentButton: UIButton!\n\n    @IBOutlet var divideButton: UIButton!\n    @IBOutlet var multiplyButton: UIButton!\n    @IBOutlet var minusButton: UIButton!\n    @IBOutlet var plusButton: UIButton!\n    @IBOutlet var equalButton: UIButton!\n\n    @IBOutlet var dotButton: UIButton!\n\n    @IBOutlet var zeroButton: UIButton!\n    @IBOutlet var oneButton: UIButton!\n    @IBOutlet var twoButton: UIButton!\n    @IBOutlet var threeButton: UIButton!\n    @IBOutlet var fourButton: UIButton!\n    @IBOutlet var fiveButton: UIButton!\n    @IBOutlet var sixButton: UIButton!\n    @IBOutlet var sevenButton: UIButton!\n    @IBOutlet var eightButton: UIButton!\n    @IBOutlet var nineButton: UIButton!\n\n    override func viewDidLoad() {\n        typealias FeedbackLoop = (ObservableSchedulerContext<CalculatorState>) -> Observable<CalculatorCommand>\n\n        let uiFeedback: FeedbackLoop = bind(self) { this, state in\n            let subscriptions = [\n                state.map(\\.screen).bind(to: this.resultLabel.rx.text),\n                state.map(\\.sign).bind(to: this.lastSignLabel.rx.text)\n            ]\n\n            let events: [Observable<CalculatorCommand>] = [\n                this.allClearButton.rx.tap.map { _ in .clear },\n\n                this.changeSignButton.rx.tap.map { _ in .changeSign },\n                this.percentButton.rx.tap.map { _ in .percent },\n\n                this.divideButton.rx.tap.map { _ in .operation(.division) },\n                this.multiplyButton.rx.tap.map { _ in .operation(.multiplication) },\n                this.minusButton.rx.tap.map { _ in .operation(.subtraction) },\n                this.plusButton.rx.tap.map { _ in .operation(.addition) },\n\n                this.equalButton.rx.tap.map { _ in .equal },\n\n                this.dotButton.rx.tap.map { _ in .addDot },\n\n                this.zeroButton.rx.tap.map { _ in .addNumber(\"0\") },\n                this.oneButton.rx.tap.map { _ in .addNumber(\"1\") },\n                this.twoButton.rx.tap.map { _ in .addNumber(\"2\") },\n                this.threeButton.rx.tap.map { _ in .addNumber(\"3\") },\n                this.fourButton.rx.tap.map { _ in .addNumber(\"4\") },\n                this.fiveButton.rx.tap.map { _ in .addNumber(\"5\") },\n                this.sixButton.rx.tap.map { _ in .addNumber(\"6\") },\n                this.sevenButton.rx.tap.map { _ in .addNumber(\"7\") },\n                this.eightButton.rx.tap.map { _ in .addNumber(\"8\") },\n                this.nineButton.rx.tap.map { _ in .addNumber(\"9\") }\n            ]\n\n            return Bindings(subscriptions: subscriptions, events: events)\n        }\n\n        Observable.system(\n            initialState: CalculatorState.initial,\n            reduce: CalculatorState.reduce,\n            scheduler: MainScheduler.instance,\n            scheduledFeedback: uiFeedback\n        )\n        .subscribe()\n        .disposed(by: disposeBag)\n    }\n\n    func formatResult(_ result: String) -> String {\n        if result.hasSuffix(\".0\") {\n            String(result[result.startIndex ..< result.index(result.endIndex, offsetBy: -2)])\n        } else {\n            result\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Dependencies.swift",
    "content": "//\n//  Dependencies.swift\n//  RxExample\n//\n//  Created by carlos on 13/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\nclass Dependencies {\n    // *****************************************************************************************\n    // !!! This is defined for simplicity sake, using singletons isn't advised               !!!\n    // !!! This is just a simple way to move services to one location so you can see Rx code !!!\n    // *****************************************************************************************\n    static let sharedDependencies = Dependencies() // Singleton\n\n    let URLSession = Foundation.URLSession.shared\n    let backgroundWorkScheduler: ImmediateSchedulerType\n    let mainScheduler: SerialDispatchQueueScheduler\n    let wireframe: Wireframe\n    let reachabilityService: ReachabilityService\n\n    private init() {\n        wireframe = DefaultWireframe()\n\n        let operationQueue = OperationQueue()\n        operationQueue.maxConcurrentOperationCount = 2\n        operationQueue.qualityOfService = QualityOfService.userInitiated\n        backgroundWorkScheduler = OperationQueueScheduler(operationQueue: operationQueue)\n\n        mainScheduler = MainScheduler.instance\n        reachabilityService = try! DefaultReachabilityService() // try! is only for simplicity sake\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GeolocationExample/Geolocation.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"ew7-Ty-fzC\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Geolocation View Controller-->\n        <scene sceneID=\"80N-PF-t5A\">\n            <objects>\n                <viewController id=\"ew7-Ty-fzC\" customClass=\"GeolocationViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"ouX-MF-szB\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Zb9-9p-7u0\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"oOI-v8-i8g\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JL2-pm-xcV\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                                <subviews>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"It seems that geolocation is enabled\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"wda-wQ-NCF\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"126.5\" width=\"200\" height=\"42.5\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"200\" id=\"2w3-q1-XE3\"/>\n                                        </constraints>\n                                        <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleHeadline\"/>\n                                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"You can disable Geolocation on app's preferences and come back to the app to see what happens\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"C85-sc-HI1\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"248\" width=\"200\" height=\"46.5\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"200\" id=\"tX2-4K-Rw9\"/>\n                                        </constraints>\n                                        <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleCaption1\"/>\n                                        <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                    <button opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3q9-a2-ojh\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"311.5\" width=\"200\" height=\"28\"/>\n                                        <color key=\"backgroundColor\" red=\"0.17483745810000001\" green=\"0.60840499159999994\" blue=\"0.84705882349999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"200\" id=\"a8X-5n-L9e\"/>\n                                        </constraints>\n                                        <fontDescription key=\"fontDescription\" name=\"HelveticaNeue-Bold\" family=\"Helvetica Neue\" pointSize=\"13\"/>\n                                        <state key=\"normal\" title=\"OPEN APP PREFERENCES\"/>\n                                        <userDefinedRuntimeAttributes>\n                                            <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                                <integer key=\"value\" value=\"3\"/>\n                                            </userDefinedRuntimeAttribute>\n                                        </userDefinedRuntimeAttributes>\n                                    </button>\n                                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"2\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Edb-tp-cly\">\n                                        <rect key=\"frame\" x=\"87.5\" y=\"183\" width=\"200\" height=\"50\"/>\n                                        <constraints>\n                                            <constraint firstAttribute=\"width\" constant=\"200\" id=\"UaR-hN-fnn\"/>\n                                            <constraint firstAttribute=\"height\" constant=\"50\" id=\"uiX-E1-S5d\"/>\n                                        </constraints>\n                                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                        <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                                        <nil key=\"highlightedColor\"/>\n                                    </label>\n                                </subviews>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstItem=\"C85-sc-HI1\" firstAttribute=\"top\" secondItem=\"Edb-tp-cly\" secondAttribute=\"bottom\" constant=\"15\" id=\"DlD-Dg-cSh\"/>\n                                    <constraint firstItem=\"wda-wQ-NCF\" firstAttribute=\"centerX\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"centerX\" id=\"Mhd-dZ-Bip\"/>\n                                    <constraint firstItem=\"3q9-a2-ojh\" firstAttribute=\"top\" secondItem=\"C85-sc-HI1\" secondAttribute=\"bottom\" constant=\"17\" id=\"azM-bK-olx\"/>\n                                    <constraint firstItem=\"Edb-tp-cly\" firstAttribute=\"top\" secondItem=\"wda-wQ-NCF\" secondAttribute=\"bottom\" constant=\"14\" id=\"dxB-jR-UgP\"/>\n                                    <constraint firstItem=\"3q9-a2-ojh\" firstAttribute=\"centerX\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"centerX\" id=\"ffs-sR-WfA\"/>\n                                    <constraint firstItem=\"Edb-tp-cly\" firstAttribute=\"centerX\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"centerX\" id=\"oO9-kf-vyG\"/>\n                                    <constraint firstItem=\"Edb-tp-cly\" firstAttribute=\"centerY\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"centerY\" constant=\"-93.5\" id=\"ooN-jG-ebq\"/>\n                                    <constraint firstItem=\"C85-sc-HI1\" firstAttribute=\"centerX\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"centerX\" id=\"sWS-b6-tWT\"/>\n                                </constraints>\n                            </view>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"JL2-pm-xcV\" firstAttribute=\"leading\" secondItem=\"oOI-v8-i8g\" secondAttribute=\"leading\" id=\"Al3-6E-7TX\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"trailing\" id=\"TJu-9q-C3r\"/>\n                            <constraint firstItem=\"JL2-pm-xcV\" firstAttribute=\"top\" secondItem=\"ouX-MF-szB\" secondAttribute=\"bottom\" id=\"UH9-TU-sn1\"/>\n                            <constraint firstItem=\"Zb9-9p-7u0\" firstAttribute=\"top\" secondItem=\"JL2-pm-xcV\" secondAttribute=\"bottom\" id=\"eBw-6B-iSn\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"nwM-mR-Dgg\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"button\" destination=\"q8m-1B-H0o\" id=\"MK1-dI-tfm\"/>\n                        <outlet property=\"button2\" destination=\"3q9-a2-ojh\" id=\"kww-B7-jeL\"/>\n                        <outlet property=\"label\" destination=\"Edb-tp-cly\" id=\"Icm-cQ-9QB\"/>\n                        <outlet property=\"noGeolocationView\" destination=\"7Wy-Xx-ged\" id=\"tce-XP-hMK\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"yOr-7R-tPd\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n                <view contentMode=\"scaleToFill\" id=\"7Wy-Xx-ged\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                    <subviews>\n                        <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Geolocation is not enabled for this app\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QDz-hL-6ve\">\n                            <rect key=\"frame\" x=\"48\" y=\"168.5\" width=\"280\" height=\"67.5\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"width\" constant=\"280\" id=\"OAO-CK-RYp\"/>\n                            </constraints>\n                            <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleTitle1\"/>\n                            <color key=\"textColor\" red=\"0.94901960780000005\" green=\"0.32549019610000002\" blue=\"0.1333333333\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <nil key=\"highlightedColor\"/>\n                        </label>\n                        <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Please enable it in the app preferences\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cbw-8G-pl6\">\n                            <rect key=\"frame\" x=\"48\" y=\"244\" width=\"280\" height=\"43\"/>\n                            <fontDescription key=\"fontDescription\" style=\"UICTFontTextStyleBody\"/>\n                            <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <nil key=\"highlightedColor\"/>\n                        </label>\n                        <button opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"q8m-1B-H0o\">\n                            <rect key=\"frame\" x=\"88\" y=\"317\" width=\"200\" height=\"28\"/>\n                            <color key=\"backgroundColor\" red=\"0.17483745805369111\" green=\"0.60840499161073824\" blue=\"0.84705882349999995\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"width\" constant=\"200\" id=\"qDe-NM-H36\"/>\n                            </constraints>\n                            <fontDescription key=\"fontDescription\" name=\"HelveticaNeue-Bold\" family=\"Helvetica Neue\" pointSize=\"13\"/>\n                            <state key=\"normal\" title=\"OPEN APP PREFERENCES\"/>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"3\"/>\n                                </userDefinedRuntimeAttribute>\n                            </userDefinedRuntimeAttributes>\n                        </button>\n                    </subviews>\n                    <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                    <constraints>\n                        <constraint firstItem=\"q8m-1B-H0o\" firstAttribute=\"top\" secondItem=\"cbw-8G-pl6\" secondAttribute=\"bottom\" constant=\"30\" id=\"8Pd-KG-yad\"/>\n                        <constraint firstItem=\"QDz-hL-6ve\" firstAttribute=\"centerY\" secondItem=\"7Wy-Xx-ged\" secondAttribute=\"centerY\" constant=\"-100\" id=\"CP1-Ta-e39\"/>\n                        <constraint firstItem=\"cbw-8G-pl6\" firstAttribute=\"width\" secondItem=\"QDz-hL-6ve\" secondAttribute=\"width\" id=\"OXx-2G-Yaz\"/>\n                        <constraint firstItem=\"q8m-1B-H0o\" firstAttribute=\"centerX\" secondItem=\"7Wy-Xx-ged\" secondAttribute=\"centerX\" id=\"Qni-Ne-BEo\"/>\n                        <constraint firstItem=\"cbw-8G-pl6\" firstAttribute=\"centerX\" secondItem=\"7Wy-Xx-ged\" secondAttribute=\"centerX\" id=\"Thp-mo-mXr\"/>\n                        <constraint firstItem=\"cbw-8G-pl6\" firstAttribute=\"top\" secondItem=\"QDz-hL-6ve\" secondAttribute=\"bottom\" constant=\"8\" id=\"ehi-8n-5Gy\"/>\n                        <constraint firstItem=\"QDz-hL-6ve\" firstAttribute=\"centerX\" secondItem=\"7Wy-Xx-ged\" secondAttribute=\"centerX\" id=\"iQe-C8-u67\"/>\n                    </constraints>\n                </view>\n            </objects>\n            <point key=\"canvasLocation\" x=\"805\" y=\"341\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GeolocationExample/GeolocationViewController.swift",
    "content": "//\n//  GeolocationViewController.swift\n//  RxExample\n//\n//  Created by Carlos García on 19/01/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nprivate extension Reactive where Base: UILabel {\n    var coordinates: Binder<CLLocationCoordinate2D> {\n        Binder(base) { label, location in\n            label.text = \"Lat: \\(location.latitude)\\nLon: \\(location.longitude)\"\n        }\n    }\n}\n\nclass GeolocationViewController: ViewController {\n    @IBOutlet private var noGeolocationView: UIView!\n    @IBOutlet private var button: UIButton!\n    @IBOutlet private var button2: UIButton!\n    @IBOutlet var label: UILabel!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        view.addSubview(noGeolocationView)\n\n        let geolocationService = GeolocationService.instance\n\n        geolocationService.authorized\n            .drive(noGeolocationView.rx.isHidden)\n            .disposed(by: disposeBag)\n\n        geolocationService.location\n            .drive(label.rx.coordinates)\n            .disposed(by: disposeBag)\n\n        button.rx.tap\n            .bind { [weak self] _ in\n                self?.openAppPreferences()\n            }\n            .disposed(by: disposeBag)\n\n        button2.rx.tap\n            .bind { [weak self] _ in\n                self?.openAppPreferences()\n            }\n            .disposed(by: disposeBag)\n    }\n\n    private func openAppPreferences() {\n        UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositories.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"cUc-Zm-HOf\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--GitHub search-->\n        <scene sceneID=\"T9S-qN-XdP\">\n            <objects>\n                <tableViewController id=\"cUc-Zm-HOf\" customClass=\"GitHubSearchRepositoriesViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tableView key=\"view\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" id=\"nwe-iR-nbz\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <searchBar key=\"tableHeaderView\" contentMode=\"redraw\" text=\"\" placeholder=\"Repository search\" id=\"zFx-qa-Lve\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                            <textInputTraits key=\"textInputTraits\"/>\n                        </searchBar>\n                        <prototypes>\n                            <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" reuseIdentifier=\"Cell\" textLabel=\"fND-de-kcO\" detailTextLabel=\"QDp-55-cWc\" style=\"IBUITableViewCellStyleSubtitle\" id=\"rON-a5-sdH\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"72\" width=\"375\" height=\"44\"/>\n                                <autoresizingMask key=\"autoresizingMask\"/>\n                                <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"rON-a5-sdH\" id=\"Vgz-Eb-3T3\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                    <subviews>\n                                        <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Title\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"fND-de-kcO\">\n                                            <rect key=\"frame\" x=\"15\" y=\"6\" width=\"31.5\" height=\"19.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                            <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                            <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                            <nil key=\"highlightedColor\"/>\n                                        </label>\n                                        <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Subtitle\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"QDp-55-cWc\">\n                                            <rect key=\"frame\" x=\"15\" y=\"25.5\" width=\"40.5\" height=\"13.5\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                            <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                            <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                            <nil key=\"highlightedColor\"/>\n                                        </label>\n                                    </subviews>\n                                </tableViewCellContentView>\n                            </tableViewCell>\n                        </prototypes>\n                    </tableView>\n                    <navigationItem key=\"navigationItem\" title=\"GitHub search\" id=\"Dx0-YN-Pwz\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"searchBar\" destination=\"zFx-qa-Lve\" id=\"jV0-Kc-EOW\"/>\n                        <outlet property=\"tableView\" destination=\"nwe-iR-nbz\" id=\"o8o-DW-fJo\"/>\n                    </connections>\n                </tableViewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"32k-KY-2be\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-1232\" y=\"641\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositories.swift",
    "content": "//\n//  GitHubSearchRepositories.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/18/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nenum GitHubCommand {\n    case changeSearch(text: String)\n    case loadMoreItems\n    case gitHubResponseReceived(SearchRepositoriesResponse)\n}\n\nstruct GitHubSearchRepositoriesState {\n    // control\n    var searchText: String\n    var shouldLoadNextPage: Bool\n    var repositories: Version<[Repository]> // Version is an optimization. When something unrelated changes, we don't want to reload table view.\n    var nextURL: URL?\n    var failure: GitHubServiceError?\n\n    init(searchText: String) {\n        self.searchText = searchText\n        shouldLoadNextPage = true\n        repositories = Version([])\n        nextURL = URL(string: \"https://api.github.com/search/repositories?q=\\(searchText.URLEscaped)\")\n        failure = nil\n    }\n}\n\nextension GitHubSearchRepositoriesState {\n    static let initial = GitHubSearchRepositoriesState(searchText: \"\")\n\n    static func reduce(state: GitHubSearchRepositoriesState, command: GitHubCommand) -> GitHubSearchRepositoriesState {\n        switch command {\n        case let .changeSearch(text):\n            GitHubSearchRepositoriesState(searchText: text).mutateOne { $0.failure = state.failure }\n        case let .gitHubResponseReceived(result):\n            switch result {\n            case let .success((repositories, nextURL)):\n                state.mutate {\n                    $0.repositories = Version($0.repositories.value + repositories)\n                    $0.shouldLoadNextPage = false\n                    $0.nextURL = nextURL\n                    $0.failure = nil\n                }\n            case let .failure(error):\n                state.mutateOne { $0.failure = error }\n            }\n        case .loadMoreItems:\n            state.mutate {\n                if $0.failure == nil {\n                    $0.shouldLoadNextPage = true\n                }\n            }\n        }\n    }\n}\n\nimport RxCocoa\nimport RxSwift\n\nstruct GithubQuery: Equatable {\n    let searchText: String\n    let shouldLoadNextPage: Bool\n    let nextURL: URL?\n}\n\n/**\n This method contains the gist of paginated GitHub search.\n\n */\nfunc githubSearchRepositories(\n    searchText: Signal<String>,\n    loadNextPageTrigger: @escaping (Driver<GitHubSearchRepositoriesState>) -> Signal<Void>,\n    performSearch: @escaping (URL) -> Observable<SearchRepositoriesResponse>\n) -> Driver<GitHubSearchRepositoriesState> {\n    let searchPerformerFeedback: (Driver<GitHubSearchRepositoriesState>) -> Signal<GitHubCommand> = react(\n        query: { state in\n            GithubQuery(searchText: state.searchText, shouldLoadNextPage: state.shouldLoadNextPage, nextURL: state.nextURL)\n        },\n        effects: { query -> Signal<GitHubCommand> in\n            if !query.shouldLoadNextPage {\n                return Signal.empty()\n            }\n\n            if query.searchText.isEmpty {\n                return Signal.just(GitHubCommand.gitHubResponseReceived(.success((repositories: [], nextURL: nil))))\n            }\n\n            guard let nextURL = query.nextURL else {\n                return Signal.empty()\n            }\n\n            return performSearch(nextURL)\n                .asSignal(onErrorJustReturn: .failure(GitHubServiceError.networkError))\n                .map(GitHubCommand.gitHubResponseReceived)\n        }\n    )\n\n    // this is degenerated feedback loop that doesn't depend on output state\n    let inputFeedbackLoop: (Driver<GitHubSearchRepositoriesState>) -> Signal<GitHubCommand> = { state in\n        let loadNextPage = loadNextPageTrigger(state).map { _ in GitHubCommand.loadMoreItems }\n        let searchText = searchText.map(GitHubCommand.changeSearch)\n\n        return Signal.merge(loadNextPage, searchText)\n    }\n\n    // Create a system with two feedback loops that drive the system\n    // * one that tries to load new pages when necessary\n    // * one that sends commands from user input\n    return Driver.system(\n        initialState: GitHubSearchRepositoriesState.initial,\n        reduce: GitHubSearchRepositoriesState.reduce,\n        feedback: searchPerformerFeedback, inputFeedbackLoop\n    )\n}\n\nextension GitHubSearchRepositoriesState {\n    var isOffline: Bool {\n        guard let failure else {\n            return false\n        }\n\n        if case .offline = failure {\n            return true\n        } else {\n            return false\n        }\n    }\n\n    var isLimitExceeded: Bool {\n        guard let failure else {\n            return false\n        }\n\n        if case .githubLimitReached = failure {\n            return true\n        } else {\n            return false\n        }\n    }\n}\n\nextension GitHubSearchRepositoriesState: Mutable {}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesAPI.swift",
    "content": "//\n//  GitHubSearchRepositoriesAPI.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 10/18/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\n/**\n Parsed GitHub repository.\n */\nstruct Repository: CustomDebugStringConvertible {\n    var name: String\n    var url: URL\n\n    init(name: String, url: URL) {\n        self.name = name\n        self.url = url\n    }\n}\n\nextension Repository {\n    var debugDescription: String {\n        \"\\(name) | \\(url)\"\n    }\n}\n\nenum GitHubServiceError: Error {\n    case offline\n    case githubLimitReached\n    case networkError\n}\n\ntypealias SearchRepositoriesResponse = Result<(repositories: [Repository], nextURL: URL?), GitHubServiceError>\n\nclass GitHubSearchRepositoriesAPI {\n    // *****************************************************************************************\n    // !!! This is defined for simplicity sake, using singletons isn't advised               !!!\n    // !!! This is just a simple way to move services to one location so you can see Rx code !!!\n    // *****************************************************************************************\n    static let sharedAPI = GitHubSearchRepositoriesAPI(reachabilityService: try! DefaultReachabilityService())\n\n    private let _reachabilityService: ReachabilityService\n\n    private init(reachabilityService: ReachabilityService) {\n        _reachabilityService = reachabilityService\n    }\n}\n\nextension GitHubSearchRepositoriesAPI {\n    func loadSearchURL(_ searchURL: URL) -> Observable<SearchRepositoriesResponse> {\n        URLSession.shared\n            .rx.response(request: URLRequest(url: searchURL))\n            .retry(3)\n            .observe(on: Dependencies.sharedDependencies.backgroundWorkScheduler)\n            .map { pair -> SearchRepositoriesResponse in\n                if pair.0.statusCode == 403 {\n                    return .failure(.githubLimitReached)\n                }\n\n                let jsonRoot = try GitHubSearchRepositoriesAPI.parseJSON(pair.0, data: pair.1)\n\n                guard let json = jsonRoot as? [String: AnyObject] else {\n                    throw exampleError(\"Casting to dictionary failed\")\n                }\n\n                let repositories = try Repository.parse(json)\n\n                let nextURL = try GitHubSearchRepositoriesAPI.parseNextURL(pair.0)\n\n                return .success((repositories: repositories, nextURL: nextURL))\n            }\n            .retryOnBecomesReachable(.failure(.offline), reachabilityService: _reachabilityService)\n    }\n}\n\n// MARK: Parsing the response\n\nextension GitHubSearchRepositoriesAPI {\n    private static let parseLinksPattern = \"\\\\s*,?\\\\s*<([^\\\\>]*)>\\\\s*;\\\\s*rel=\\\"([^\\\"]*)\\\"\"\n    private static let linksRegex = try! NSRegularExpression(pattern: parseLinksPattern, options: [.allowCommentsAndWhitespace])\n\n    private static func parseLinks(_ links: String) throws -> [String: String] {\n        let length = (links as NSString).length\n        let matches = GitHubSearchRepositoriesAPI.linksRegex.matches(in: links, options: NSRegularExpression.MatchingOptions(), range: NSRange(location: 0, length: length))\n\n        var result: [String: String] = [:]\n\n        for m in matches {\n            let matches = (1 ..< m.numberOfRanges).map { rangeIndex -> String in\n                let range = m.range(at: rangeIndex)\n                let startIndex = links.index(links.startIndex, offsetBy: range.location)\n                let endIndex = links.index(links.startIndex, offsetBy: range.location + range.length)\n                return String(links[startIndex ..< endIndex])\n            }\n\n            if matches.count != 2 {\n                throw exampleError(\"Error parsing links\")\n            }\n\n            result[matches[1]] = matches[0]\n        }\n\n        return result\n    }\n\n    private static func parseNextURL(_ httpResponse: HTTPURLResponse) throws -> URL? {\n        guard let serializedLinks = httpResponse.allHeaderFields[\"Link\"] as? String else {\n            return nil\n        }\n\n        let links = try GitHubSearchRepositoriesAPI.parseLinks(serializedLinks)\n\n        guard let nextPageURL = links[\"next\"] else {\n            return nil\n        }\n\n        guard let nextUrl = URL(string: nextPageURL) else {\n            throw exampleError(\"Error parsing next url `\\(nextPageURL)`\")\n        }\n\n        return nextUrl\n    }\n\n    private static func parseJSON(_ httpResponse: HTTPURLResponse, data: Data) throws -> AnyObject {\n        if !(200 ..< 300 ~= httpResponse.statusCode) {\n            throw exampleError(\"Call failed\")\n        }\n\n        return try JSONSerialization.jsonObject(with: data, options: []) as AnyObject\n    }\n}\n\nprivate extension Repository {\n    static func parse(_ json: [String: AnyObject]) throws -> [Repository] {\n        guard let items = json[\"items\"] as? [[String: AnyObject]] else {\n            throw exampleError(\"Can't find items\")\n        }\n        return try items.map { item in\n            guard let name = item[\"name\"] as? String,\n                  let url = item[\"url\"] as? String\n            else {\n                throw exampleError(\"Can't parse repository\")\n            }\n            return try Repository(name: name, url: URL(string: url).unwrap())\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSearchRepositories/GitHubSearchRepositoriesViewController.swift",
    "content": "//\n//  GitHubSearchRepositoriesViewController.swift\n//  RxExample\n//\n//  Created by Yoshinori Sano on 9/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nextension UIScrollView {\n    func isNearBottomEdge(edgeOffset: CGFloat = 20.0) -> Bool {\n        contentOffset.y + frame.size.height + edgeOffset > contentSize.height\n    }\n}\n\nclass GitHubSearchRepositoriesViewController: ViewController, UITableViewDelegate {\n    static let startLoadingOffset: CGFloat = 20.0\n\n    @IBOutlet var tableView: UITableView!\n    @IBOutlet var searchBar: UISearchBar!\n\n    let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, Repository>>(\n        configureCell: { (_, tv, _, repository: Repository) in\n            let cell = tv.dequeueReusableCell(withIdentifier: \"Cell\")!\n            cell.textLabel?.text = repository.name\n            cell.detailTextLabel?.text = repository.url.absoluteString\n            return cell\n        },\n        titleForHeaderInSection: { dataSource, sectionIndex in\n            let section = dataSource[sectionIndex]\n            return section.items.count > 0 ? \"Repositories (\\(section.items.count))\" : \"No repositories found\"\n        }\n    )\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let tableView: UITableView = tableView\n        let loadNextPageTrigger: (Driver<GitHubSearchRepositoriesState>) -> Signal<Void> = { state in\n            tableView.rx.contentOffset.asDriver()\n                .withLatestFrom(state)\n                .flatMap { state in\n                    tableView.isNearBottomEdge(edgeOffset: 20.0) && !state.shouldLoadNextPage\n                        ? Signal.just(())\n                        : Signal.empty()\n                }\n        }\n\n        let activityIndicator = ActivityIndicator()\n\n        let searchBar: UISearchBar = searchBar\n\n        let state = githubSearchRepositories(\n            searchText: searchBar.rx.text.orEmpty.changed.asSignal().throttle(.milliseconds(300)),\n            loadNextPageTrigger: loadNextPageTrigger,\n            performSearch: { URL in\n                GitHubSearchRepositoriesAPI.sharedAPI.loadSearchURL(URL)\n                    .trackActivity(activityIndicator)\n            }\n        )\n\n        state\n            .map(\\.isOffline)\n            .drive(navigationController!.rx.isOffline)\n            .disposed(by: disposeBag)\n\n        state\n            .map(\\.repositories)\n            .distinctUntilChanged()\n            .map { [SectionModel(model: \"Repositories\", items: $0.value)] }\n            .drive(tableView.rx.items(dataSource: dataSource))\n            .disposed(by: disposeBag)\n\n        tableView.rx.modelSelected(Repository.self)\n            .subscribe(onNext: { repository in\n                UIApplication.shared.open(repository.url)\n            })\n            .disposed(by: disposeBag)\n\n        state\n            .map(\\.isLimitExceeded)\n            .distinctUntilChanged()\n            .filter(\\.self)\n            .drive(onNext: { [weak self] _ in\n                guard let self else { return }\n\n                let message = \"Exceeded limit of 10 non authenticated requests per minute for GitHub API. Please wait a minute. :(\\nhttps://developer.github.com/v3/#rate-limiting\"\n\n                #if os(iOS)\n                present(UIAlertController(title: \"RxExample\", message: message, preferredStyle: .alert), animated: true)\n                #elseif os(macOS)\n                let alert = NSAlert()\n                alert.messageText = message\n                alert.runModal()\n                #endif\n            })\n            .disposed(by: disposeBag)\n\n        tableView.rx.contentOffset\n            .subscribe { _ in\n                if searchBar.isFirstResponder {\n                    _ = searchBar.resignFirstResponder()\n                }\n            }\n            .disposed(by: disposeBag)\n\n        // so normal delegate customization can also be used\n        tableView.rx.setDelegate(self)\n            .disposed(by: disposeBag)\n\n        // activity indicator in status bar\n        // {\n        activityIndicator\n            .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible)\n            .disposed(by: disposeBag)\n        // }\n    }\n\n    // MARK: Table view delegate\n\n    func tableView(_: UITableView, heightForHeaderInSection _: Int) -> CGFloat {\n        30\n    }\n\n    deinit {\n        // I know, I know, this isn't a good place of truth, but it's no\n        self.navigationController?.navigationBar.backgroundColor = nil\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSearchRepositories/UINavigationController+Extensions.swift",
    "content": "//\n//  UINavigationController+Extensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nenum Colors {\n    static let offlineColor = UIColor(red: 1.0, green: 0.6, blue: 0.6, alpha: 1.0)\n    static let onlineColor = nil as UIColor?\n}\n\nextension Reactive where Base: UINavigationController {\n    var isOffline: Binder<Bool> {\n        Binder(base) { navigationController, isOffline in\n            navigationController.navigationBar.barTintColor = isOffline\n                ? Colors.offlineColor\n                : Colors.onlineColor\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/BindingExtensions.swift",
    "content": "//\n//  BindingExtensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nextension ValidationResult: CustomStringConvertible {\n    var description: String {\n        switch self {\n        case let .ok(message):\n            message\n        case .empty:\n            \"\"\n        case .validating:\n            \"validating ...\"\n        case let .failed(message):\n            message\n        }\n    }\n}\n\nenum ValidationColors {\n    static let okColor = UIColor(red: 138.0 / 255.0, green: 221.0 / 255.0, blue: 109.0 / 255.0, alpha: 1.0)\n    static let errorColor = UIColor.red\n}\n\nextension ValidationResult {\n    var textColor: UIColor {\n        switch self {\n        case .ok:\n            ValidationColors.okColor\n        case .empty:\n            UIColor.black\n        case .validating:\n            UIColor.black\n        case .failed:\n            ValidationColors.errorColor\n        }\n    }\n}\n\nextension Reactive where Base: UILabel {\n    var validationResult: Binder<ValidationResult> {\n        Binder(base) { label, result in\n            label.textColor = result.textColor\n            label.text = result.description\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/DefaultImplementations.swift",
    "content": "//\n//  DefaultImplementations.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\nclass GitHubDefaultValidationService: GitHubValidationService {\n    let API: GitHubAPI\n\n    static let sharedValidationService = GitHubDefaultValidationService(API: GitHubDefaultAPI.sharedAPI)\n\n    init(API: GitHubAPI) {\n        self.API = API\n    }\n\n    // validation\n\n    let minPasswordCount = 5\n\n    func validateUsername(_ username: String) -> Observable<ValidationResult> {\n        if username.isEmpty {\n            return .just(.empty)\n        }\n\n        // this obviously won't be\n        if username.rangeOfCharacter(from: CharacterSet.alphanumerics.inverted) != nil {\n            return .just(.failed(message: \"Username can only contain numbers or digits\"))\n        }\n\n        let loadingValue = ValidationResult.validating\n\n        return API\n            .usernameAvailable(username)\n            .map { available in\n                if available {\n                    .ok(message: \"Username available\")\n                } else {\n                    .failed(message: \"Username already taken\")\n                }\n            }\n            .startWith(loadingValue)\n    }\n\n    func validatePassword(_ password: String) -> ValidationResult {\n        let numberOfCharacters = password.count\n        if numberOfCharacters == 0 {\n            return .empty\n        }\n\n        if numberOfCharacters < minPasswordCount {\n            return .failed(message: \"Password must be at least \\(minPasswordCount) characters\")\n        }\n\n        return .ok(message: \"Password acceptable\")\n    }\n\n    func validateRepeatedPassword(_ password: String, repeatedPassword: String) -> ValidationResult {\n        if repeatedPassword.count == 0 {\n            return .empty\n        }\n\n        if repeatedPassword == password {\n            return .ok(message: \"Password repeated\")\n        } else {\n            return .failed(message: \"Password different\")\n        }\n    }\n}\n\nclass GitHubDefaultAPI: GitHubAPI {\n    let URLSession: Foundation.URLSession\n\n    static let sharedAPI = GitHubDefaultAPI(\n        URLSession: Foundation.URLSession.shared\n    )\n\n    init(URLSession: Foundation.URLSession) {\n        self.URLSession = URLSession\n    }\n\n    func usernameAvailable(_ username: String) -> Observable<Bool> {\n        // this is ofc just mock, but good enough\n\n        let url = URL(string: \"https://github.com/\\(username.URLEscaped)\")!\n        let request = URLRequest(url: url)\n        return URLSession.rx.response(request: request)\n            .map { pair in\n                pair.response.statusCode == 404\n            }\n            .catchAndReturn(false)\n    }\n\n    func signup(_: String, password _: String) -> Observable<Bool> {\n        // this is also just a mock\n        let signupResult = arc4random() % 5 == 0 ? false : true\n\n        return Observable.just(signupResult)\n            .delay(.seconds(1), scheduler: MainScheduler.instance)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/GitHubSignup1.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"dHR-mS-HCG\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--GitHub Signup - Vanilla Observables-->\n        <scene sceneID=\"N2N-1B-sZ4\">\n            <objects>\n                <viewController id=\"dHR-mS-HCG\" userLabel=\"GitHub Signup - Vanilla Observables\" customClass=\"GitHubSignupViewController1\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"08L-bJ-kbo\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"iau-x6-9gd\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"LK1-fd-xyr\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Username\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5st-ss-RHs\">\n                                <rect key=\"frame\" x=\"24\" y=\"26\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" autocorrectionType=\"no\" spellCheckingType=\"no\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Password\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kSi-Uf-OwR\">\n                                <rect key=\"frame\" x=\"24\" y=\"86\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" secureTextEntry=\"YES\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"username validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Dba-AF-T8S\">\n                                <rect key=\"frame\" x=\"24\" y=\"61\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Password Repeat\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"C3W-qo-PSG\">\n                                <rect key=\"frame\" x=\"24\" y=\"146\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" secureTextEntry=\"YES\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"repeated password validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"HDF-SC-Wnw\">\n                                <rect key=\"frame\" x=\"24\" y=\"181\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kN3-eg-qK4\">\n                                <rect key=\"frame\" x=\"24\" y=\"232\" width=\"327\" height=\"44\"/>\n                                <color key=\"backgroundColor\" red=\"0.48034727573394775\" green=\"0.85350489616394043\" blue=\"0.35366714000701904\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"cOT-Hh-KzW\"/>\n                                </constraints>\n                                <state key=\"normal\" title=\"Sign up\">\n                                    <color key=\"titleColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"password validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"w7z-xW-FLz\">\n                                <rect key=\"frame\" x=\"24\" y=\"121\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <activityIndicatorView opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" hidesWhenStopped=\"YES\" animating=\"YES\" style=\"gray\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Jyp-VX-hwt\">\n                                <rect key=\"frame\" x=\"36\" y=\"244\" width=\"20\" height=\"20\"/>\n                            </activityIndicatorView>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"JaL-lO-u4e\">\n                                <rect key=\"frame\" x=\"24\" y=\"294\" width=\"327\" height=\"143.5\"/>\n                                <string key=\"text\">Proving that observable sequences have wanted properties (UIThread, errors handled, sharing of side effects) is done manually. (but has some performance gain that shouldn't be noticeable in practice)\n\nTo do this automatically, check out the corresponding `Driver` example.</string>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"Dba-AF-T8S\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" priority=\"799\" constant=\"8\" id=\"4fX-Wf-pj1\"/>\n                            <constraint firstItem=\"Jyp-VX-hwt\" firstAttribute=\"centerY\" secondItem=\"kN3-eg-qK4\" secondAttribute=\"centerY\" id=\"5Et-Ob-NYn\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"Dba-AF-T8S\" secondAttribute=\"trailing\" priority=\"800\" constant=\"8\" id=\"7Bk-Xd-8BN\"/>\n                            <constraint firstItem=\"5st-ss-RHs\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"7Yd-lC-BYI\"/>\n                            <constraint firstItem=\"kN3-eg-qK4\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"8cu-85-C8w\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"w7z-xW-FLz\" secondAttribute=\"trailing\" constant=\"8\" id=\"EdC-Vl-nVN\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"kN3-eg-qK4\" secondAttribute=\"trailing\" constant=\"8\" id=\"FiA-dw-sgS\"/>\n                            <constraint firstItem=\"JaL-lO-u4e\" firstAttribute=\"leading\" secondItem=\"kN3-eg-qK4\" secondAttribute=\"leading\" id=\"HNd-iC-9fc\"/>\n                            <constraint firstItem=\"JaL-lO-u4e\" firstAttribute=\"trailing\" secondItem=\"kN3-eg-qK4\" secondAttribute=\"trailing\" id=\"Hd9-zY-rni\"/>\n                            <constraint firstItem=\"kN3-eg-qK4\" firstAttribute=\"top\" secondItem=\"HDF-SC-Wnw\" secondAttribute=\"bottom\" constant=\"34\" id=\"N3Y-YB-RtP\"/>\n                            <constraint firstItem=\"Dba-AF-T8S\" firstAttribute=\"top\" secondItem=\"5st-ss-RHs\" secondAttribute=\"bottom\" constant=\"5\" id=\"NC4-dT-ZfZ\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"C3W-qo-PSG\" secondAttribute=\"trailing\" constant=\"8\" id=\"Nv6-4K-aAA\"/>\n                            <constraint firstItem=\"kSi-Uf-OwR\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"OUc-lF-y5O\"/>\n                            <constraint firstItem=\"HDF-SC-Wnw\" firstAttribute=\"top\" secondItem=\"C3W-qo-PSG\" secondAttribute=\"bottom\" constant=\"5\" id=\"SMX-OX-eFh\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"HDF-SC-Wnw\" secondAttribute=\"trailing\" constant=\"8\" id=\"Tad-kG-NWs\"/>\n                            <constraint firstItem=\"C3W-qo-PSG\" firstAttribute=\"top\" secondItem=\"w7z-xW-FLz\" secondAttribute=\"bottom\" constant=\"8\" id=\"Thx-bk-mye\"/>\n                            <constraint firstItem=\"C3W-qo-PSG\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"Tzp-bS-BWd\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"5st-ss-RHs\" secondAttribute=\"trailing\" constant=\"8\" id=\"h8u-z4-6we\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"kSi-Uf-OwR\" secondAttribute=\"trailing\" constant=\"8\" id=\"iul-WB-Btu\"/>\n                            <constraint firstItem=\"5st-ss-RHs\" firstAttribute=\"top\" secondItem=\"08L-bJ-kbo\" secondAttribute=\"bottom\" constant=\"26\" id=\"jD0-Cq-IL2\"/>\n                            <constraint firstItem=\"JaL-lO-u4e\" firstAttribute=\"top\" secondItem=\"kN3-eg-qK4\" secondAttribute=\"bottom\" constant=\"18\" id=\"jEP-Ti-OB8\"/>\n                            <constraint firstItem=\"w7z-xW-FLz\" firstAttribute=\"top\" secondItem=\"kSi-Uf-OwR\" secondAttribute=\"bottom\" constant=\"5\" id=\"jGs-a6-6K2\"/>\n                            <constraint firstItem=\"kN3-eg-qK4\" firstAttribute=\"leading\" secondItem=\"Jyp-VX-hwt\" secondAttribute=\"trailing\" constant=\"-32\" id=\"sOF-tn-ZW8\"/>\n                            <constraint firstItem=\"kSi-Uf-OwR\" firstAttribute=\"top\" secondItem=\"Dba-AF-T8S\" secondAttribute=\"bottom\" constant=\"8\" id=\"uJn-uy-D8v\"/>\n                            <constraint firstItem=\"HDF-SC-Wnw\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"wPj-3r-TiZ\"/>\n                            <constraint firstItem=\"w7z-xW-FLz\" firstAttribute=\"leading\" secondItem=\"LK1-fd-xyr\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"x9q-Na-AIo\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"GitHub Signup\" id=\"Cwl-YW-IkD\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"passwordOutlet\" destination=\"kSi-Uf-OwR\" id=\"BRJ-lz-1KJ\"/>\n                        <outlet property=\"passwordValidationOutlet\" destination=\"w7z-xW-FLz\" id=\"d1I-Ja-dse\"/>\n                        <outlet property=\"repeatedPasswordOutlet\" destination=\"C3W-qo-PSG\" id=\"dd6-Nl-cGJ\"/>\n                        <outlet property=\"repeatedPasswordValidationOutlet\" destination=\"HDF-SC-Wnw\" id=\"vBg-dz-A5O\"/>\n                        <outlet property=\"signingUpOulet\" destination=\"Jyp-VX-hwt\" id=\"BxM-xY-Ftc\"/>\n                        <outlet property=\"signupOutlet\" destination=\"kN3-eg-qK4\" id=\"kps-bx-jNo\"/>\n                        <outlet property=\"usernameOutlet\" destination=\"5st-ss-RHs\" id=\"UAl-Oj-FOi\"/>\n                        <outlet property=\"usernameValidationOutlet\" destination=\"Dba-AF-T8S\" id=\"OWD-bu-szJ\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"3y6-mR-ROv\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-225\" y=\"-1171\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/GitHubSignup2.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"yLq-Hp-4B6\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--GitHub Signup - Driver-->\n        <scene sceneID=\"evO-hc-5Dk\">\n            <objects>\n                <viewController id=\"yLq-Hp-4B6\" userLabel=\"GitHub Signup - Driver\" customClass=\"GitHubSignupViewController2\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"aW1-AT-UOD\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"QYX-PJ-pIZ\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"JQX-yY-LbH\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Username\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"rGO-wn-g5S\">\n                                <rect key=\"frame\" x=\"24\" y=\"26\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" autocorrectionType=\"no\" spellCheckingType=\"no\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Password\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Pw7-pv-nhp\">\n                                <rect key=\"frame\" x=\"24\" y=\"86\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" secureTextEntry=\"YES\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"username validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"98h-6n-kLJ\">\n                                <rect key=\"frame\" x=\"24\" y=\"61\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" placeholder=\"Password Repeat\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Y6X-IK-Jnk\">\n                                <rect key=\"frame\" x=\"24\" y=\"146\" width=\"327\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" secureTextEntry=\"YES\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"repeated password validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"TfJ-rc-11O\">\n                                <rect key=\"frame\" x=\"24\" y=\"181\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2l5-Hy-B1p\">\n                                <rect key=\"frame\" x=\"24\" y=\"232\" width=\"327\" height=\"44\"/>\n                                <color key=\"backgroundColor\" red=\"0.48034727573394775\" green=\"0.85350489616394043\" blue=\"0.35366714000701904\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"qAq-4v-aE7\"/>\n                                </constraints>\n                                <state key=\"normal\" title=\"Sign up\">\n                                    <color key=\"titleColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <color key=\"titleShadowColor\" red=\"0.5\" green=\"0.5\" blue=\"0.5\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"password validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"IDg-fm-aCT\">\n                                <rect key=\"frame\" x=\"24\" y=\"121\" width=\"327\" height=\"17\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <color key=\"textColor\" red=\"1\" green=\"0.0\" blue=\"0.090283701899999999\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <activityIndicatorView opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" hidesWhenStopped=\"YES\" animating=\"YES\" style=\"gray\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6ef-09-7f2\">\n                                <rect key=\"frame\" x=\"36\" y=\"244\" width=\"20\" height=\"20\"/>\n                            </activityIndicatorView>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hIR-9t-sq4\">\n                                <rect key=\"frame\" x=\"24\" y=\"294\" width=\"327\" height=\"161.5\"/>\n                                <string key=\"text\">Proving that observable sequences have wanted properties (UIThread, errors handled, sharing of side effects) is done automatically by `Driver`. (it is little slower then vanilla observables, but that shouldn't be noticeable in practice)\n\nCheck out the same example using vanilla observable sequences.</string>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"TfJ-rc-11O\" secondAttribute=\"trailing\" constant=\"8\" id=\"03Q-1p-fyo\"/>\n                            <constraint firstItem=\"Pw7-pv-nhp\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"1Is-iZ-Boz\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"IDg-fm-aCT\" secondAttribute=\"trailing\" constant=\"8\" id=\"1Rh-hE-lZF\"/>\n                            <constraint firstItem=\"2l5-Hy-B1p\" firstAttribute=\"leading\" secondItem=\"6ef-09-7f2\" secondAttribute=\"trailing\" constant=\"-32\" id=\"3SJ-6s-KD4\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"98h-6n-kLJ\" secondAttribute=\"trailing\" priority=\"800\" constant=\"8\" id=\"6cF-GQ-p7o\"/>\n                            <constraint firstItem=\"98h-6n-kLJ\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" priority=\"799\" constant=\"8\" id=\"9rx-4O-Bca\"/>\n                            <constraint firstItem=\"98h-6n-kLJ\" firstAttribute=\"top\" secondItem=\"rGO-wn-g5S\" secondAttribute=\"bottom\" constant=\"5\" id=\"Abv-Gh-zDq\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"2l5-Hy-B1p\" secondAttribute=\"trailing\" constant=\"8\" id=\"B0T-VQ-csE\"/>\n                            <constraint firstItem=\"Y6X-IK-Jnk\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"GVh-Cv-xER\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"Pw7-pv-nhp\" secondAttribute=\"trailing\" constant=\"8\" id=\"JC8-rC-A9F\"/>\n                            <constraint firstItem=\"rGO-wn-g5S\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"MWT-VT-7Tg\"/>\n                            <constraint firstItem=\"IDg-fm-aCT\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"MqL-Jo-abk\"/>\n                            <constraint firstItem=\"hIR-9t-sq4\" firstAttribute=\"leading\" secondItem=\"2l5-Hy-B1p\" secondAttribute=\"leading\" id=\"OHW-v5-TNd\"/>\n                            <constraint firstItem=\"6ef-09-7f2\" firstAttribute=\"centerY\" secondItem=\"2l5-Hy-B1p\" secondAttribute=\"centerY\" id=\"Och-AJ-zde\"/>\n                            <constraint firstItem=\"Pw7-pv-nhp\" firstAttribute=\"top\" secondItem=\"98h-6n-kLJ\" secondAttribute=\"bottom\" constant=\"8\" id=\"Oe4-Ff-0Oe\"/>\n                            <constraint firstItem=\"2l5-Hy-B1p\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"Sqf-92-UZB\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"rGO-wn-g5S\" secondAttribute=\"trailing\" constant=\"8\" id=\"Wyc-o8-e8d\"/>\n                            <constraint firstItem=\"2l5-Hy-B1p\" firstAttribute=\"top\" secondItem=\"TfJ-rc-11O\" secondAttribute=\"bottom\" constant=\"34\" id=\"b86-c5-0mV\"/>\n                            <constraint firstItem=\"hIR-9t-sq4\" firstAttribute=\"top\" secondItem=\"2l5-Hy-B1p\" secondAttribute=\"bottom\" constant=\"18\" id=\"g7v-hn-Z8l\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"Y6X-IK-Jnk\" secondAttribute=\"trailing\" constant=\"8\" id=\"j7Q-6o-YFj\"/>\n                            <constraint firstItem=\"Y6X-IK-Jnk\" firstAttribute=\"top\" secondItem=\"IDg-fm-aCT\" secondAttribute=\"bottom\" constant=\"8\" id=\"m9y-O1-gaj\"/>\n                            <constraint firstItem=\"hIR-9t-sq4\" firstAttribute=\"trailing\" secondItem=\"2l5-Hy-B1p\" secondAttribute=\"trailing\" id=\"oaP-pv-eCh\"/>\n                            <constraint firstItem=\"IDg-fm-aCT\" firstAttribute=\"top\" secondItem=\"Pw7-pv-nhp\" secondAttribute=\"bottom\" constant=\"5\" id=\"p4w-an-A4f\"/>\n                            <constraint firstItem=\"TfJ-rc-11O\" firstAttribute=\"top\" secondItem=\"Y6X-IK-Jnk\" secondAttribute=\"bottom\" constant=\"5\" id=\"pNZ-1h-rmN\"/>\n                            <constraint firstItem=\"rGO-wn-g5S\" firstAttribute=\"top\" secondItem=\"aW1-AT-UOD\" secondAttribute=\"bottom\" constant=\"26\" id=\"t6T-jv-i03\"/>\n                            <constraint firstItem=\"TfJ-rc-11O\" firstAttribute=\"leading\" secondItem=\"JQX-yY-LbH\" secondAttribute=\"leadingMargin\" constant=\"8\" id=\"u00-JM-ePU\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"GitHub Signup\" id=\"77p-uA-o9r\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"passwordOutlet\" destination=\"Pw7-pv-nhp\" id=\"FwV-d5-sps\"/>\n                        <outlet property=\"passwordValidationOutlet\" destination=\"IDg-fm-aCT\" id=\"THo-HN-xvy\"/>\n                        <outlet property=\"repeatedPasswordOutlet\" destination=\"Y6X-IK-Jnk\" id=\"Gt8-0f-ff2\"/>\n                        <outlet property=\"repeatedPasswordValidationOutlet\" destination=\"TfJ-rc-11O\" id=\"fOS-CJ-udi\"/>\n                        <outlet property=\"signingUpOulet\" destination=\"6ef-09-7f2\" id=\"f3j-cZ-UqI\"/>\n                        <outlet property=\"signupOutlet\" destination=\"2l5-Hy-B1p\" id=\"EnB-bc-ddy\"/>\n                        <outlet property=\"usernameOutlet\" destination=\"rGO-wn-g5S\" id=\"5VP-Wv-rmc\"/>\n                        <outlet property=\"usernameValidationOutlet\" destination=\"98h-6n-kLJ\" id=\"44M-nu-PLe\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"sRq-HB-N0J\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"799\" y=\"-1518\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/Protocols.swift",
    "content": "//\n//  Protocols.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\nenum ValidationResult {\n    case ok(message: String)\n    case empty\n    case validating\n    case failed(message: String)\n}\n\nenum SignupState {\n    case signedUp(signedUp: Bool)\n}\n\nprotocol GitHubAPI {\n    func usernameAvailable(_ username: String) -> Observable<Bool>\n    func signup(_ username: String, password: String) -> Observable<Bool>\n}\n\nprotocol GitHubValidationService {\n    func validateUsername(_ username: String) -> Observable<ValidationResult>\n    func validatePassword(_ password: String) -> ValidationResult\n    func validateRepeatedPassword(_ password: String, repeatedPassword: String) -> ValidationResult\n}\n\nextension ValidationResult {\n    var isValid: Bool {\n        switch self {\n        case .ok:\n            true\n        default:\n            false\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GitHubSignupViewController2.swift",
    "content": "//\n//  GitHubSignupViewController2.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass GitHubSignupViewController2: ViewController {\n    @IBOutlet var usernameOutlet: UITextField!\n    @IBOutlet var usernameValidationOutlet: UILabel!\n\n    @IBOutlet var passwordOutlet: UITextField!\n    @IBOutlet var passwordValidationOutlet: UILabel!\n\n    @IBOutlet var repeatedPasswordOutlet: UITextField!\n    @IBOutlet var repeatedPasswordValidationOutlet: UILabel!\n\n    @IBOutlet var signupOutlet: UIButton!\n    @IBOutlet var signingUpOulet: UIActivityIndicatorView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let viewModel = GithubSignupViewModel2(\n            input: (\n                username: usernameOutlet.rx.text.orEmpty.asDriver(),\n                password: passwordOutlet.rx.text.orEmpty.asDriver(),\n                repeatedPassword: repeatedPasswordOutlet.rx.text.orEmpty.asDriver(),\n                loginTaps: signupOutlet.rx.tap.asSignal()\n            ),\n            dependency: (\n                API: GitHubDefaultAPI.sharedAPI,\n                validationService: GitHubDefaultValidationService.sharedValidationService,\n                wireframe: DefaultWireframe.shared\n            )\n        )\n\n        // bind results to  {\n        viewModel.signupEnabled\n            .drive(onNext: { [weak self] valid in\n                self?.signupOutlet.isEnabled = valid\n                self?.signupOutlet.alpha = valid ? 1.0 : 0.5\n            })\n            .disposed(by: disposeBag)\n\n        viewModel.validatedUsername\n            .drive(usernameValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.validatedPassword\n            .drive(passwordValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.validatedPasswordRepeated\n            .drive(repeatedPasswordValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.signingIn\n            .drive(signingUpOulet.rx.isAnimating)\n            .disposed(by: disposeBag)\n\n        viewModel.signedIn\n            .drive(onNext: { signedIn in\n                print(\"User signed in \\(signedIn)\")\n            })\n            .disposed(by: disposeBag)\n        // }\n\n        let tapBackground = UITapGestureRecognizer()\n        tapBackground.rx.event\n            .subscribe(onNext: { [weak self] _ in\n                self?.view.endEditing(true)\n            })\n            .disposed(by: disposeBag)\n        view.addGestureRecognizer(tapBackground)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/UsingDriver/GithubSignupViewModel2.swift",
    "content": "//\n//  GithubSignupViewModel2.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\n/**\n This is example where view model is mutable. Some consider this to be MVVM, some consider this to be Presenter,\n  or some other name.\n  In the end, it doesn't matter.\n\n  If you want to take a look at example using \"immutable VMs\", take a look at `TableViewWithEditingCommands` example.\n\n  This uses Driver builder for sequences.\n\n  Please note that there is no explicit state, outputs are defined using inputs and dependencies.\n  Please note that there is no dispose bag, because no subscription is being made.\n */\nclass GithubSignupViewModel2 {\n    // outputs {\n\n    //\n    let validatedUsername: Driver<ValidationResult>\n    let validatedPassword: Driver<ValidationResult>\n    let validatedPasswordRepeated: Driver<ValidationResult>\n\n    // Is signup button enabled\n    let signupEnabled: Driver<Bool>\n\n    // Has user signed in\n    let signedIn: Driver<Bool>\n\n    // Is signing process in progress\n    let signingIn: Driver<Bool>\n\n    // }\n\n    init(\n        input: (\n            username: Driver<String>,\n            password: Driver<String>,\n            repeatedPassword: Driver<String>,\n            loginTaps: Signal<Void>\n        ),\n        dependency: (\n            API: GitHubAPI,\n            validationService: GitHubValidationService,\n            wireframe: Wireframe\n        )\n    ) {\n        let API = dependency.API\n        let validationService = dependency.validationService\n        let wireframe = dependency.wireframe\n\n        /**\n          Notice how no subscribe call is being made.\n          Everything is just a definition.\n\n          Pure transformation of input sequences to output sequences.\n\n          When using `Driver`, underlying observable sequence elements are shared because\n          driver automagically adds \"shareReplay(1)\" under the hood.\n\n              .observe(on:MainScheduler.instance)\n              .catchAndReturn(.Failed(message: \"Error contacting server\"))\n\n          ... are squashed into single `.asDriver(onErrorJustReturn: .Failed(message: \"Error contacting server\"))`\n         */\n\n        validatedUsername = input.username\n            .flatMapLatest { username in\n                validationService.validateUsername(username)\n                    .asDriver(onErrorJustReturn: .failed(message: \"Error contacting server\"))\n            }\n\n        validatedPassword = input.password\n            .map { password in\n                validationService.validatePassword(password)\n            }\n\n        validatedPasswordRepeated = Driver.combineLatest(input.password, input.repeatedPassword, resultSelector: validationService.validateRepeatedPassword)\n\n        let signingIn = ActivityIndicator()\n        self.signingIn = signingIn.asDriver()\n\n        let usernameAndPassword = Driver.combineLatest(input.username, input.password) { (username: $0, password: $1) }\n\n        signedIn = input.loginTaps.withLatestFrom(usernameAndPassword)\n            .flatMapLatest { pair in\n                API.signup(pair.username, password: pair.password)\n                    .trackActivity(signingIn)\n                    .asDriver(onErrorJustReturn: false)\n            }\n            .flatMapLatest { loggedIn -> Driver<Bool> in\n                let message = loggedIn ? \"Mock: Signed in to GitHub.\" : \"Mock: Sign in to GitHub failed\"\n                return wireframe.promptFor(message, cancelAction: \"OK\", actions: [])\n                    // propagate original value\n                    .map { _ in\n                        loggedIn\n                    }\n                    .asDriver(onErrorJustReturn: false)\n            }\n\n        signupEnabled = Driver.combineLatest(\n            validatedUsername,\n            validatedPassword,\n            validatedPasswordRepeated,\n            signingIn\n        ) { username, password, repeatPassword, signingIn in\n            username.isValid &&\n                password.isValid &&\n                repeatPassword.isValid &&\n                !signingIn\n        }\n        .distinctUntilChanged()\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GitHubSignupViewController1.swift",
    "content": "//\n//  GitHubSignupViewController1.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass GitHubSignupViewController1: ViewController {\n    @IBOutlet var usernameOutlet: UITextField!\n    @IBOutlet var usernameValidationOutlet: UILabel!\n\n    @IBOutlet var passwordOutlet: UITextField!\n    @IBOutlet var passwordValidationOutlet: UILabel!\n\n    @IBOutlet var repeatedPasswordOutlet: UITextField!\n    @IBOutlet var repeatedPasswordValidationOutlet: UILabel!\n\n    @IBOutlet var signupOutlet: UIButton!\n    @IBOutlet var signingUpOulet: UIActivityIndicatorView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let viewModel = GithubSignupViewModel1(\n            input: (\n                username: usernameOutlet.rx.text.orEmpty.asObservable(),\n                password: passwordOutlet.rx.text.orEmpty.asObservable(),\n                repeatedPassword: repeatedPasswordOutlet.rx.text.orEmpty.asObservable(),\n                loginTaps: signupOutlet.rx.tap.asObservable()\n            ),\n            dependency: (\n                API: GitHubDefaultAPI.sharedAPI,\n                validationService: GitHubDefaultValidationService.sharedValidationService,\n                wireframe: DefaultWireframe.shared\n            )\n        )\n\n        // bind results to  {\n        viewModel.signupEnabled\n            .subscribe(onNext: { [weak self] valid in\n                self?.signupOutlet.isEnabled = valid\n                self?.signupOutlet.alpha = valid ? 1.0 : 0.5\n            })\n            .disposed(by: disposeBag)\n\n        viewModel.validatedUsername\n            .bind(to: usernameValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.validatedPassword\n            .bind(to: passwordValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.validatedPasswordRepeated\n            .bind(to: repeatedPasswordValidationOutlet.rx.validationResult)\n            .disposed(by: disposeBag)\n\n        viewModel.signingIn\n            .bind(to: signingUpOulet.rx.isAnimating)\n            .disposed(by: disposeBag)\n\n        viewModel.signedIn\n            .subscribe(onNext: { signedIn in\n                print(\"User signed in \\(signedIn)\")\n            })\n            .disposed(by: disposeBag)\n        // }\n\n        let tapBackground = UITapGestureRecognizer()\n        tapBackground.rx.event\n            .subscribe(onNext: { [weak self] _ in\n                self?.view.endEditing(true)\n            })\n            .disposed(by: disposeBag)\n        view.addGestureRecognizer(tapBackground)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/GitHubSignup/UsingVanillaObservables/GithubSignupViewModel1.swift",
    "content": "//\n//  GithubSignupViewModel1.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\n/**\n This is example where view model is mutable. Some consider this to be MVVM, some consider this to be Presenter,\n  or some other name.\n  In the end, it doesn't matter.\n\n  If you want to take a look at example using \"immutable VMs\", take a look at `TableViewWithEditingCommands` example.\n\n  This uses vanilla rx observable sequences.\n\n  Please note that there is no explicit state, outputs are defined using inputs and dependencies.\n  Please note that there is no dispose bag, because no subscription is being made.\n */\nclass GithubSignupViewModel1 {\n    // outputs {\n\n    let validatedUsername: Observable<ValidationResult>\n    let validatedPassword: Observable<ValidationResult>\n    let validatedPasswordRepeated: Observable<ValidationResult>\n\n    // Is signup button enabled\n    let signupEnabled: Observable<Bool>\n\n    // Has user signed in\n    let signedIn: Observable<Bool>\n\n    // Is signing process in progress\n    let signingIn: Observable<Bool>\n\n    // }\n\n    init(\n        input: (\n            username: Observable<String>,\n            password: Observable<String>,\n            repeatedPassword: Observable<String>,\n            loginTaps: Observable<Void>\n        ),\n        dependency: (\n            API: GitHubAPI,\n            validationService: GitHubValidationService,\n            wireframe: Wireframe\n        )\n    ) {\n        let API = dependency.API\n        let validationService = dependency.validationService\n        let wireframe = dependency.wireframe\n\n        /**\n          Notice how no subscribe call is being made.\n          Everything is just a definition.\n\n          Pure transformation of input sequences to output sequences.\n         */\n\n        validatedUsername = input.username\n            .flatMapLatest { username in\n                validationService.validateUsername(username)\n                    .observe(on: MainScheduler.instance)\n                    .catchAndReturn(.failed(message: \"Error contacting server\"))\n            }\n            .share(replay: 1)\n\n        validatedPassword = input.password\n            .map { password in\n                validationService.validatePassword(password)\n            }\n            .share(replay: 1)\n\n        validatedPasswordRepeated = Observable.combineLatest(input.password, input.repeatedPassword, resultSelector: validationService.validateRepeatedPassword)\n            .share(replay: 1)\n\n        let signingIn = ActivityIndicator()\n        self.signingIn = signingIn.asObservable()\n\n        let usernameAndPassword = Observable.combineLatest(input.username, input.password) { (username: $0, password: $1) }\n\n        signedIn = input.loginTaps.withLatestFrom(usernameAndPassword)\n            .flatMapLatest { pair in\n                API.signup(pair.username, password: pair.password)\n                    .observe(on: MainScheduler.instance)\n                    .catchAndReturn(false)\n                    .trackActivity(signingIn)\n            }\n            .flatMapLatest { loggedIn -> Observable<Bool> in\n                let message = loggedIn ? \"Mock: Signed in to GitHub.\" : \"Mock: Sign in to GitHub failed\"\n                return wireframe.promptFor(message, cancelAction: \"OK\", actions: [])\n                    // propagate original value\n                    .map { _ in\n                        loggedIn\n                    }\n            }\n            .share(replay: 1)\n\n        signupEnabled = Observable.combineLatest(\n            validatedUsername,\n            validatedPassword,\n            validatedPasswordRepeated,\n            signingIn.asObservable()\n        ) { username, password, repeatPassword, signingIn in\n            username.isValid &&\n                password.isValid &&\n                repeatPassword.isValid &&\n                !signingIn\n        }\n        .distinctUntilChanged()\n        .share(replay: 1)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/ImagePicker/ImagePicker.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"ssL-fu-AwB\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--ImagePicker-->\n        <scene sceneID=\"we6-Co-dda\">\n            <objects>\n                <viewController id=\"ssL-fu-AwB\" customClass=\"ImagePickerController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"zDg-h3-qEt\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"APO-XR-l42\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"4hS-1Y-xe2\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"a7O-JO-jIP\">\n                                <rect key=\"frame\" x=\"20\" y=\"20\" width=\"335\" height=\"250\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"250\" id=\"KWN-se-00h\"/>\n                                </constraints>\n                            </imageView>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1zz-pV-dN1\">\n                                <rect key=\"frame\" x=\"160.5\" y=\"286\" width=\"54\" height=\"30\"/>\n                                <state key=\"normal\" title=\"Camera\"/>\n                            </button>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3IS-Nj-7iN\">\n                                <rect key=\"frame\" x=\"163.5\" y=\"333\" width=\"48\" height=\"30\"/>\n                                <state key=\"normal\" title=\"Gallery\"/>\n                            </button>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qLf-Yr-91r\">\n                                <rect key=\"frame\" x=\"170.5\" y=\"379\" width=\"34\" height=\"30\"/>\n                                <state key=\"normal\" title=\"Crop\"/>\n                            </button>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"3IS-Nj-7iN\" firstAttribute=\"top\" secondItem=\"1zz-pV-dN1\" secondAttribute=\"bottom\" constant=\"17\" id=\"H6z-6l-duK\"/>\n                            <constraint firstItem=\"a7O-JO-jIP\" firstAttribute=\"top\" secondItem=\"zDg-h3-qEt\" secondAttribute=\"bottom\" constant=\"20\" id=\"Nuf-at-aCg\"/>\n                            <constraint firstItem=\"3IS-Nj-7iN\" firstAttribute=\"centerX\" secondItem=\"1zz-pV-dN1\" secondAttribute=\"centerX\" id=\"PQW-tC-M90\"/>\n                            <constraint firstItem=\"qLf-Yr-91r\" firstAttribute=\"centerX\" secondItem=\"3IS-Nj-7iN\" secondAttribute=\"centerX\" id=\"RSu-hk-Tup\"/>\n                            <constraint firstItem=\"1zz-pV-dN1\" firstAttribute=\"top\" secondItem=\"a7O-JO-jIP\" secondAttribute=\"bottom\" constant=\"16\" id=\"Wfe-Hs-Vhu\"/>\n                            <constraint firstItem=\"1zz-pV-dN1\" firstAttribute=\"centerX\" secondItem=\"a7O-JO-jIP\" secondAttribute=\"centerX\" id=\"Ymn-iY-Xt6\"/>\n                            <constraint firstItem=\"a7O-JO-jIP\" firstAttribute=\"leading\" secondItem=\"4hS-1Y-xe2\" secondAttribute=\"leading\" constant=\"20\" id=\"d7V-Wv-0cP\"/>\n                            <constraint firstItem=\"qLf-Yr-91r\" firstAttribute=\"top\" secondItem=\"3IS-Nj-7iN\" secondAttribute=\"bottom\" constant=\"16\" id=\"n0B-c8-JyM\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"a7O-JO-jIP\" secondAttribute=\"trailing\" constant=\"20\" id=\"r4e-zI-HPP\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"ImagePicker\" id=\"eQ5-4a-Sfk\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"cameraButton\" destination=\"1zz-pV-dN1\" id=\"Chc-hg-NX8\"/>\n                        <outlet property=\"cropButton\" destination=\"qLf-Yr-91r\" id=\"R7T-R3-Gkh\"/>\n                        <outlet property=\"galleryButton\" destination=\"3IS-Nj-7iN\" id=\"GNh-Fq-Q61\"/>\n                        <outlet property=\"imageView\" destination=\"a7O-JO-jIP\" id=\"rhg-2H-FVb\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"2wW-GB-V45\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"392\" y=\"339\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/ImagePicker/ImagePickerController.swift",
    "content": "//\n//  ImagePickerController.swift\n//  RxExample\n//\n//  Created by Segii Shulga on 1/5/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass ImagePickerController: ViewController {\n    @IBOutlet var imageView: UIImageView!\n    @IBOutlet var cameraButton: UIButton!\n    @IBOutlet var galleryButton: UIButton!\n    @IBOutlet var cropButton: UIButton!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        cameraButton.isEnabled = UIImagePickerController.isSourceTypeAvailable(.camera)\n\n        cameraButton.rx.tap\n            .flatMapLatest { [weak self] _ in\n                return UIImagePickerController.rx.createWithParent(self) { picker in\n                    picker.sourceType = .camera\n                    picker.allowsEditing = false\n                }\n                .flatMap(\\.rx.didFinishPickingMediaWithInfo)\n                .take(1)\n            }\n            .map { info in\n                info[.originalImage] as? UIImage\n            }\n            .bind(to: imageView.rx.image)\n            .disposed(by: disposeBag)\n\n        galleryButton.rx.tap\n            .flatMapLatest { [weak self] _ in\n                return UIImagePickerController.rx.createWithParent(self) { picker in\n                    picker.sourceType = .photoLibrary\n                    picker.allowsEditing = false\n                }\n                .flatMap(\\.rx.didFinishPickingMediaWithInfo)\n                .take(1)\n            }\n            .map { info in\n                info[.originalImage] as? UIImage\n            }\n            .bind(to: imageView.rx.image)\n            .disposed(by: disposeBag)\n\n        cropButton.rx.tap\n            .flatMapLatest { [weak self] _ in\n                return UIImagePickerController.rx.createWithParent(self) { picker in\n                    picker.sourceType = .photoLibrary\n                    picker.allowsEditing = true\n                }\n                .flatMap(\\.rx.didFinishPickingMediaWithInfo)\n                .take(1)\n            }\n            .map { info in\n                info[.editedImage] as? UIImage\n            }\n            .bind(to: imageView.rx.image)\n            .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/ImagePicker/UIImagePickerController+RxCreate.swift",
    "content": "//\n//  UIImagePickerController+RxCreate.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 1/10/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nfunc dismissViewController(_ viewController: UIViewController, animated: Bool) {\n    if viewController.isBeingDismissed || viewController.isBeingPresented {\n        DispatchQueue.main.async {\n            dismissViewController(viewController, animated: animated)\n        }\n\n        return\n    }\n\n    if viewController.presentingViewController != nil {\n        viewController.dismiss(animated: animated, completion: nil)\n    }\n}\n\nextension Reactive where Base: UIImagePickerController {\n    static func createWithParent(_ parent: UIViewController?, animated: Bool = true, configureImagePicker: @escaping (UIImagePickerController) throws -> Void = { _ in }) -> Observable<UIImagePickerController> {\n        Observable.create { [weak parent] observer in\n            let imagePicker = UIImagePickerController()\n            let dismissDisposable = imagePicker.rx\n                .didCancel\n                .subscribe(onNext: { [weak imagePicker] _ in\n                    guard let imagePicker else {\n                        return\n                    }\n                    dismissViewController(imagePicker, animated: animated)\n                })\n\n            do {\n                try configureImagePicker(imagePicker)\n            } catch {\n                observer.on(.error(error))\n                return Disposables.create()\n            }\n\n            guard let parent else {\n                observer.on(.completed)\n                return Disposables.create()\n            }\n\n            parent.present(imagePicker, animated: animated, completion: nil)\n            observer.on(.next(imagePicker))\n\n            return Disposables.create(dismissDisposable, Disposables.create {\n                dismissViewController(imagePicker, animated: animated)\n            })\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Numbers/Numbers.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12118\" systemVersion=\"16E195\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"oOx-4m-jWT\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12086\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Adding numbers-->\n        <scene sceneID=\"kWE-M1-vba\">\n            <objects>\n                <viewController id=\"oOx-4m-jWT\" customClass=\"NumbersViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"Cig-h0-trg\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"lrM-CT-cyf\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Seh-9R-sJD\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" text=\"1\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"f0C-TG-nVm\">\n                                <rect key=\"frame\" x=\"139\" y=\"210.5\" width=\"97\" height=\"30\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"97\" id=\"5so-5k-9SN\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"uQc-3n-2WC\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" keyboardType=\"numberPad\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" text=\"2\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"RDN-19-Rfe\">\n                                <rect key=\"frame\" x=\"139\" y=\"248.5\" width=\"97\" height=\"30\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"97\" id=\"W9o-Z8-3Fv\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"ag2-xt-JFN\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" keyboardType=\"numberPad\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" text=\"3\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"bP3-QH-gOb\">\n                                <rect key=\"frame\" x=\"139\" y=\"286.5\" width=\"97\" height=\"30\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"97\" id=\"UPC-TK-dBW\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"tUW-LN-iap\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\" keyboardType=\"numberPad\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"+\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"X9s-MA-NXj\">\n                                <rect key=\"frame\" x=\"120\" y=\"291.5\" width=\"11\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Phk-y9-qRO\" userLabel=\"Separator\">\n                                <rect key=\"frame\" x=\"120\" y=\"324.5\" width=\"116\" height=\"1\"/>\n                                <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"1\" id=\"N45-Bh-4fc\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"116\" id=\"NcW-2q-3Yo\"/>\n                                </constraints>\n                            </view>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"-1\" textAlignment=\"right\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"PJD-Yg-D6c\">\n                                <rect key=\"frame\" x=\"120\" y=\"333.5\" width=\"116\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"bP3-QH-gOb\" firstAttribute=\"centerY\" secondItem=\"Seh-9R-sJD\" secondAttribute=\"centerY\" id=\"6Bc-ai-QXi\"/>\n                            <constraint firstItem=\"RDN-19-Rfe\" firstAttribute=\"top\" secondItem=\"f0C-TG-nVm\" secondAttribute=\"bottom\" constant=\"8\" id=\"AMN-jK-1QL\"/>\n                            <constraint firstItem=\"bP3-QH-gOb\" firstAttribute=\"trailing\" secondItem=\"RDN-19-Rfe\" secondAttribute=\"trailing\" id=\"Fj3-pm-L4N\"/>\n                            <constraint firstItem=\"PJD-Yg-D6c\" firstAttribute=\"leading\" secondItem=\"Phk-y9-qRO\" secondAttribute=\"leading\" id=\"Lkp-hr-GLb\"/>\n                            <constraint firstItem=\"PJD-Yg-D6c\" firstAttribute=\"trailing\" secondItem=\"Phk-y9-qRO\" secondAttribute=\"trailing\" id=\"OkI-5F-A8c\"/>\n                            <constraint firstItem=\"Phk-y9-qRO\" firstAttribute=\"trailing\" secondItem=\"bP3-QH-gOb\" secondAttribute=\"trailing\" id=\"RJi-N8-Rqz\"/>\n                            <constraint firstItem=\"bP3-QH-gOb\" firstAttribute=\"centerX\" secondItem=\"Seh-9R-sJD\" secondAttribute=\"centerX\" id=\"SL6-f3-Vz3\"/>\n                            <constraint firstItem=\"RDN-19-Rfe\" firstAttribute=\"trailing\" secondItem=\"f0C-TG-nVm\" secondAttribute=\"trailing\" id=\"hkf-3b-Ogb\"/>\n                            <constraint firstItem=\"Phk-y9-qRO\" firstAttribute=\"top\" secondItem=\"bP3-QH-gOb\" secondAttribute=\"bottom\" constant=\"8\" id=\"mU4-lk-Unq\"/>\n                            <constraint firstItem=\"X9s-MA-NXj\" firstAttribute=\"centerY\" secondItem=\"bP3-QH-gOb\" secondAttribute=\"centerY\" id=\"oGg-4n-cna\"/>\n                            <constraint firstItem=\"bP3-QH-gOb\" firstAttribute=\"top\" secondItem=\"RDN-19-Rfe\" secondAttribute=\"bottom\" constant=\"8\" id=\"vCv-Hz-Bx7\"/>\n                            <constraint firstItem=\"bP3-QH-gOb\" firstAttribute=\"leading\" secondItem=\"X9s-MA-NXj\" secondAttribute=\"trailing\" constant=\"8\" id=\"wpa-lv-qp5\"/>\n                            <constraint firstItem=\"PJD-Yg-D6c\" firstAttribute=\"top\" secondItem=\"Phk-y9-qRO\" secondAttribute=\"bottom\" constant=\"8\" id=\"y47-kq-bRv\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Adding numbers\" id=\"AVl-Ce-Uct\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"number1\" destination=\"f0C-TG-nVm\" id=\"DeO-fx-KHN\"/>\n                        <outlet property=\"number2\" destination=\"RDN-19-Rfe\" id=\"U9U-2m-wPq\"/>\n                        <outlet property=\"number3\" destination=\"bP3-QH-gOb\" id=\"66w-lF-Db1\"/>\n                        <outlet property=\"result\" destination=\"PJD-Yg-D6c\" id=\"Fn5-wX-r2C\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"meV-AH-8TC\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"392\" y=\"-376\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/Numbers/NumbersViewController.swift",
    "content": "//\n//  NumbersViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass NumbersViewController: ViewController {\n    @IBOutlet var number1: UITextField!\n    @IBOutlet var number2: UITextField!\n    @IBOutlet var number3: UITextField!\n\n    @IBOutlet var result: UILabel!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        Observable.combineLatest(number1.rx.text.orEmpty, number2.rx.text.orEmpty, number3.rx.text.orEmpty) { textValue1, textValue2, textValue3 -> Int in\n            return (Int(textValue1) ?? 0) + (Int(textValue2) ?? 0) + (Int(textValue3) ?? 0)\n        }\n        .map(\\.description)\n        .bind(to: result.rx.text)\n        .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExample.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"qWW-x9-Zbp\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Simple table view-->\n        <scene sceneID=\"izH-Qd-edR\">\n            <objects>\n                <viewController id=\"qWW-x9-Zbp\" customClass=\"SimpleTableViewExampleViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"1y8-Fk-Gic\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"XUO-ew-ZtS\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"zge-xs-GDo\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qNE-6R-MvR\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <prototypes>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"detailButton\" indentationWidth=\"10\" reuseIdentifier=\"Cell\" textLabel=\"9Fo-Rp-Wwk\" style=\"IBUITableViewCellStyleDefault\" id=\"kaN-dy-Y5z\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"28\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"kaN-dy-Y5z\" id=\"KPQ-ob-TwJ\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"328\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Title\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"9Fo-Rp-Wwk\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"313\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                    </tableViewCell>\n                                </prototypes>\n                            </tableView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"XUO-ew-ZtS\" firstAttribute=\"top\" secondItem=\"qNE-6R-MvR\" secondAttribute=\"bottom\" id=\"DJV-zw-mee\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"qNE-6R-MvR\" secondAttribute=\"trailing\" id=\"PK6-k5-7h7\"/>\n                            <constraint firstItem=\"qNE-6R-MvR\" firstAttribute=\"leading\" secondItem=\"zge-xs-GDo\" secondAttribute=\"leading\" id=\"VnO-zb-Cbi\"/>\n                            <constraint firstItem=\"qNE-6R-MvR\" firstAttribute=\"top\" secondItem=\"1y8-Fk-Gic\" secondAttribute=\"bottom\" id=\"lCE-Kj-eg7\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Simple table view\" id=\"fep-qN-rNI\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"tableView\" destination=\"qNE-6R-MvR\" id=\"8lo-Sr-rtJ\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"71c-mO-RX3\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-2066\" y=\"429\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleTableViewExample/SimpleTableViewExampleViewController.swift",
    "content": "//\n//  SimpleTableViewExampleViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass SimpleTableViewExampleViewController: ViewController, UITableViewDelegate {\n    @IBOutlet var tableView: UITableView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let items = Observable.just(\n            (0 ..< 20).map { \"\\($0)\" }\n        )\n\n        items\n            .bind(to: tableView.rx.items(cellIdentifier: \"Cell\", cellType: UITableViewCell.self)) { row, element, cell in\n                cell.textLabel?.text = \"\\(element) @ row \\(row)\"\n            }\n            .disposed(by: disposeBag)\n\n        tableView.rx\n            .modelSelected(String.self)\n            .subscribe(onNext: { value in\n                DefaultWireframe.presentAlert(\"Tapped `\\(value)`\")\n            })\n            .disposed(by: disposeBag)\n\n        tableView.rx\n            .itemAccessoryButtonTapped\n            .subscribe(onNext: { indexPath in\n                DefaultWireframe.presentAlert(\"Tapped Detail @ \\(indexPath.section),\\(indexPath.row)\")\n            })\n            .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectioned.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"EW8-kl-QYb\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Simple table view-->\n        <scene sceneID=\"sDd-Z1-24L\">\n            <objects>\n                <viewController id=\"EW8-kl-QYb\" customClass=\"SimpleTableViewExampleSectionedViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"QcG-si-EiX\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"iag-Mo-1sS\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"o9U-oe-Ccw\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Cdd-na-Ezi\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <prototypes>\n                                    <tableViewCell clipsSubviews=\"YES\" contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" reuseIdentifier=\"Cell\" textLabel=\"Z3B-kH-AMX\" style=\"IBUITableViewCellStyleDefault\" id=\"xzT-oa-UhT\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"28\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"xzT-oa-UhT\" id=\"wH7-Gy-rvk\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Title\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"Z3B-kH-AMX\">\n                                                    <rect key=\"frame\" x=\"15\" y=\"0.0\" width=\"345\" height=\"43.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                    </tableViewCell>\n                                </prototypes>\n                            </tableView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"Cdd-na-Ezi\" firstAttribute=\"leading\" secondItem=\"o9U-oe-Ccw\" secondAttribute=\"leading\" id=\"CW3-Ie-rB9\"/>\n                            <constraint firstItem=\"Cdd-na-Ezi\" firstAttribute=\"top\" secondItem=\"QcG-si-EiX\" secondAttribute=\"bottom\" id=\"ISl-Af-rJw\"/>\n                            <constraint firstItem=\"iag-Mo-1sS\" firstAttribute=\"top\" secondItem=\"Cdd-na-Ezi\" secondAttribute=\"bottom\" id=\"QuM-6A-ixf\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"Cdd-na-Ezi\" secondAttribute=\"trailing\" id=\"pXg-hW-PhE\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Simple table view\" id=\"cpi-Og-iyq\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"tableView\" destination=\"Cdd-na-Ezi\" id=\"k4e-S9-afQ\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"OfL-B0-nzO\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-834\" y=\"793\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleTableViewExampleSectioned/SimpleTableViewExampleSectionedViewController.swift",
    "content": "//\n//  SimpleTableViewExampleSectionedViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass SimpleTableViewExampleSectionedViewController:\n    ViewController,\n    UITableViewDelegate\n{\n    @IBOutlet var tableView: UITableView!\n\n    let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, Double>>(\n        configureCell: { _, tv, indexPath, element in\n            let cell = tv.dequeueReusableCell(withIdentifier: \"Cell\")!\n            cell.textLabel?.text = \"\\(element) @ row \\(indexPath.row)\"\n            return cell\n        },\n        titleForHeaderInSection: { dataSource, sectionIndex in\n            dataSource[sectionIndex].model\n        }\n    )\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        let dataSource = dataSource\n\n        let items = Observable.just([\n            SectionModel(model: \"First section\", items: [\n                1.0,\n                2.0,\n                3.0\n            ]),\n            SectionModel(model: \"Second section\", items: [\n                1.0,\n                2.0,\n                3.0\n            ]),\n            SectionModel(model: \"Third section\", items: [\n                1.0,\n                2.0,\n                3.0\n            ])\n        ])\n\n        items\n            .bind(to: tableView.rx.items(dataSource: dataSource))\n            .disposed(by: disposeBag)\n\n        tableView.rx\n            .itemSelected\n            .map { indexPath in\n                (indexPath, dataSource[indexPath])\n            }\n            .subscribe(onNext: { pair in\n                DefaultWireframe.presentAlert(\"Tapped `\\(pair.1)` @ \\(pair.0)\")\n            })\n            .disposed(by: disposeBag)\n\n        tableView.rx\n            .setDelegate(self)\n            .disposed(by: disposeBag)\n    }\n\n    // to prevent swipe to delete behavior\n    func tableView(_: UITableView, editingStyleForRowAt _: IndexPath) -> UITableViewCell.EditingStyle {\n        .none\n    }\n\n    func tableView(_: UITableView, heightForHeaderInSection _: Int) -> CGFloat {\n        40\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleValidation/SimpleValidation.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"hFV-LH-THc\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Simple validation-->\n        <scene sceneID=\"M9D-Xl-vEQ\">\n            <objects>\n                <viewController id=\"hFV-LH-THc\" customClass=\"SimpleValidationViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"fCf-hH-f2B\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"AE5-po-zjy\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"KQc-te-SbR\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"natural\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"DxN-4p-IlC\">\n                                <rect key=\"frame\" x=\"16\" y=\"54.5\" width=\"343\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\"/>\n                            </textField>\n                            <textField opaque=\"NO\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"natural\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"9IA-eg-Rhf\">\n                                <rect key=\"frame\" x=\"16\" y=\"149.5\" width=\"343\" height=\"30\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                <textInputTraits key=\"textInputTraits\"/>\n                            </textField>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Username\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QXR-74-64e\">\n                                <rect key=\"frame\" x=\"16\" y=\"26\" width=\"343\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Password\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"w3Q-7d-PAK\">\n                                <rect key=\"frame\" x=\"16\" y=\"121\" width=\"343\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"nZR-mS-TBY\">\n                                <rect key=\"frame\" x=\"16\" y=\"216\" width=\"343\" height=\"44\"/>\n                                <color key=\"backgroundColor\" red=\"0.45835767445182407\" green=\"1\" blue=\"0.50599050155048486\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"44\" id=\"Twt-zJ-ndu\"/>\n                                </constraints>\n                                <state key=\"normal\" title=\"Do something\">\n                                    <color key=\"titleColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                                <state key=\"disabled\">\n                                    <color key=\"titleColor\" red=\"0.98431372549999996\" green=\"0.98431372549999996\" blue=\"0.94901960780000005\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                </state>\n                            </button>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"IGP-gu-Gxt\">\n                                <rect key=\"frame\" x=\"16\" y=\"187.5\" width=\"343\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.98726278540000001\" green=\"0.23694899680000001\" blue=\"0.26975026730000001\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" textAlignment=\"natural\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5Qq-LW-zbl\">\n                                <rect key=\"frame\" x=\"16\" y=\"92.5\" width=\"343\" height=\"20.5\"/>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.9872627854347229\" green=\"0.23694899678230286\" blue=\"0.26975026726722717\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"nZR-mS-TBY\" firstAttribute=\"top\" secondItem=\"IGP-gu-Gxt\" secondAttribute=\"bottom\" constant=\"8\" id=\"1O8-Wz-Fxb\"/>\n                            <constraint firstItem=\"IGP-gu-Gxt\" firstAttribute=\"top\" secondItem=\"9IA-eg-Rhf\" secondAttribute=\"bottom\" constant=\"8\" id=\"48Q-lH-0Uh\"/>\n                            <constraint firstItem=\"QXR-74-64e\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"58I-UM-6oe\"/>\n                            <constraint firstItem=\"IGP-gu-Gxt\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"5aA-GJ-ENa\"/>\n                            <constraint firstItem=\"nZR-mS-TBY\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"6RC-V5-X9k\"/>\n                            <constraint firstItem=\"w3Q-7d-PAK\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"6lV-Bk-fXy\"/>\n                            <constraint firstItem=\"w3Q-7d-PAK\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"6mh-MY-zEU\"/>\n                            <constraint firstItem=\"9IA-eg-Rhf\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"8KV-A4-ONw\"/>\n                            <constraint firstItem=\"5Qq-LW-zbl\" firstAttribute=\"top\" secondItem=\"DxN-4p-IlC\" secondAttribute=\"bottom\" constant=\"8\" id=\"HnD-jH-oCG\"/>\n                            <constraint firstItem=\"nZR-mS-TBY\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"Ipf-Xv-mQ8\"/>\n                            <constraint firstItem=\"9IA-eg-Rhf\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"Otc-1e-wWJ\"/>\n                            <constraint firstItem=\"DxN-4p-IlC\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"P8J-WN-gZj\"/>\n                            <constraint firstItem=\"w3Q-7d-PAK\" firstAttribute=\"top\" secondItem=\"5Qq-LW-zbl\" secondAttribute=\"bottom\" constant=\"8\" id=\"PTl-VX-Ov4\"/>\n                            <constraint firstItem=\"DxN-4p-IlC\" firstAttribute=\"top\" secondItem=\"QXR-74-64e\" secondAttribute=\"bottom\" constant=\"8\" id=\"Qxc-2g-oK8\"/>\n                            <constraint firstItem=\"DxN-4p-IlC\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"SPj-xG-xI8\"/>\n                            <constraint firstItem=\"IGP-gu-Gxt\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"bfv-D8-XVC\"/>\n                            <constraint firstItem=\"5Qq-LW-zbl\" firstAttribute=\"trailing\" secondItem=\"KQc-te-SbR\" secondAttribute=\"trailingMargin\" id=\"fcZ-fc-7MT\"/>\n                            <constraint firstItem=\"9IA-eg-Rhf\" firstAttribute=\"top\" secondItem=\"w3Q-7d-PAK\" secondAttribute=\"bottom\" constant=\"8\" id=\"gq3-kK-XiF\"/>\n                            <constraint firstItem=\"5Qq-LW-zbl\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"jXL-aZ-5Se\"/>\n                            <constraint firstItem=\"QXR-74-64e\" firstAttribute=\"leading\" secondItem=\"KQc-te-SbR\" secondAttribute=\"leadingMargin\" id=\"jvs-Hk-41C\"/>\n                            <constraint firstItem=\"QXR-74-64e\" firstAttribute=\"top\" secondItem=\"fCf-hH-f2B\" secondAttribute=\"bottom\" constant=\"26\" id=\"vi0-t7-BCf\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Simple validation\" id=\"NVn-Oj-Qaw\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"doSomethingOutlet\" destination=\"nZR-mS-TBY\" id=\"LqW-lT-ueq\"/>\n                        <outlet property=\"passwordOutlet\" destination=\"9IA-eg-Rhf\" id=\"6LY-l0-i1j\"/>\n                        <outlet property=\"passwordValidOutlet\" destination=\"IGP-gu-Gxt\" id=\"ghg-Pm-q5W\"/>\n                        <outlet property=\"usernameOutlet\" destination=\"DxN-4p-IlC\" id=\"bbN-cX-6ur\"/>\n                        <outlet property=\"usernameValidOutlet\" destination=\"5Qq-LW-zbl\" id=\"WhG-5Q-hnS\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"fYF-0j-N0j\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-1627\" y=\"588\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/SimpleValidation/SimpleValidationViewController.swift",
    "content": "//\n//  SimpleValidationViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nprivate let minimalUsernameLength = 5\nprivate let minimalPasswordLength = 5\n\nclass SimpleValidationViewController: ViewController {\n    @IBOutlet var usernameOutlet: UITextField!\n    @IBOutlet var usernameValidOutlet: UILabel!\n\n    @IBOutlet var passwordOutlet: UITextField!\n    @IBOutlet var passwordValidOutlet: UILabel!\n\n    @IBOutlet var doSomethingOutlet: UIButton!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        usernameValidOutlet.text = \"Username has to be at least \\(minimalUsernameLength) characters\"\n        passwordValidOutlet.text = \"Password has to be at least \\(minimalPasswordLength) characters\"\n\n        let usernameValid = usernameOutlet.rx.text.orEmpty\n            .map { $0.count >= minimalUsernameLength }\n            .share(replay: 1) // without this map would be executed once for each binding, rx is stateless by default\n\n        let passwordValid = passwordOutlet.rx.text.orEmpty\n            .map { $0.count >= minimalPasswordLength }\n            .share(replay: 1)\n\n        let everythingValid = Observable.combineLatest(usernameValid, passwordValid) { $0 && $1 }\n            .share(replay: 1)\n\n        usernameValid\n            .bind(to: passwordOutlet.rx.isEnabled)\n            .disposed(by: disposeBag)\n\n        usernameValid\n            .bind(to: usernameValidOutlet.rx.isHidden)\n            .disposed(by: disposeBag)\n\n        passwordValid\n            .bind(to: passwordValidOutlet.rx.isHidden)\n            .disposed(by: disposeBag)\n\n        everythingValid\n            .bind(to: doSomethingOutlet.rx.isEnabled)\n            .disposed(by: disposeBag)\n\n        doSomethingOutlet.rx.tap\n            .subscribe(onNext: { [weak self] _ in self?.showAlert() })\n            .disposed(by: disposeBag)\n    }\n\n    func showAlert() {\n        let alert = UIAlertController(\n            title: \"RxExample\",\n            message: \"This is wonderful\",\n            preferredStyle: .alert\n        )\n        let defaultAction = UIAlertAction(\n            title: \"Ok\",\n            style: .default,\n            handler: nil\n        )\n        alert.addAction(defaultAction)\n        present(alert, animated: true, completion: nil)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewPartialUpdates/NumberCell.swift",
    "content": "//\n//  NumberCell.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 7/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport UIKit\n\nclass NumberCell: UICollectionViewCell {\n    @IBOutlet var value: UILabel?\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewPartialUpdates/NumberSectionView.swift",
    "content": "//\n//  NumberSectionView.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 7/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport UIKit\n\nclass NumberSectionView: UICollectionReusableView {\n    @IBOutlet var value: UILabel?\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdates.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12120\" systemVersion=\"16E195\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"HRf-Xk-9iT\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12088\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Partial Updates View Controller-->\n        <scene sceneID=\"7Pq-0W-ati\">\n            <objects>\n                <viewController id=\"HRf-Xk-9iT\" customClass=\"PartialUpdatesViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"rR0-FR-HFT\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"t4S-nP-d6Z\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Q1a-BU-VHX\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"22\" sectionFooterHeight=\"22\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hUq-CB-rKx\" userLabel=\"partial\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"125\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </tableView>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"22\" sectionFooterHeight=\"22\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6z9-hh-u3N\" userLabel=\"fullreload\">\n                                <rect key=\"frame\" x=\"125\" y=\"0.0\" width=\"125\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                            </tableView>\n                            <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hob-nw-Jrs\">\n                                <rect key=\"frame\" x=\"250\" y=\"0.0\" width=\"125\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <collectionViewFlowLayout key=\"collectionViewLayout\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"m51-be-PcL\">\n                                    <size key=\"itemSize\" width=\"55\" height=\"35\"/>\n                                    <size key=\"headerReferenceSize\" width=\"50\" height=\"25\"/>\n                                    <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                                    <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                                </collectionViewFlowLayout>\n                                <cells>\n                                    <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"Cell\" id=\"aNq-h7-r3z\" customClass=\"NumberCell\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"25\" width=\"55\" height=\"35\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"55\" height=\"35\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"vIm-V4-xJI\">\n                                                    <rect key=\"frame\" x=\"6.5\" y=\"7.5\" width=\"42\" height=\"20.5\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </view>\n                                        <constraints>\n                                            <constraint firstAttribute=\"centerY\" secondItem=\"vIm-V4-xJI\" secondAttribute=\"centerY\" id=\"YGd-7r-pFG\"/>\n                                            <constraint firstAttribute=\"centerX\" secondItem=\"vIm-V4-xJI\" secondAttribute=\"centerX\" id=\"xYP-q1-t0x\"/>\n                                        </constraints>\n                                        <connections>\n                                            <outlet property=\"value\" destination=\"vIm-V4-xJI\" id=\"tvT-Yw-4jy\"/>\n                                        </connections>\n                                    </collectionViewCell>\n                                </cells>\n                                <collectionReusableView key=\"sectionHeaderView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"Section\" id=\"myv-cg-TS9\" customClass=\"NumberSectionView\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"125\" height=\"25\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                    <subviews>\n                                        <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Dob-Ct-qBk\">\n                                            <rect key=\"frame\" x=\"41.5\" y=\"2.5\" width=\"42\" height=\"20.5\"/>\n                                            <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                            <color key=\"textColor\" red=\"0.98431372549999996\" green=\"0.98431372549999996\" blue=\"0.94901960780000005\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                            <nil key=\"highlightedColor\"/>\n                                        </label>\n                                    </subviews>\n                                    <color key=\"backgroundColor\" red=\"0.66666666666666663\" green=\"0.66666666666666663\" blue=\"0.66666666666666663\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <color key=\"tintColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"centerY\" secondItem=\"Dob-Ct-qBk\" secondAttribute=\"centerY\" id=\"3Hw-f1-oiE\"/>\n                                        <constraint firstAttribute=\"centerX\" secondItem=\"Dob-Ct-qBk\" secondAttribute=\"centerX\" id=\"QpP-Og-cie\"/>\n                                    </constraints>\n                                    <connections>\n                                        <outlet property=\"value\" destination=\"Dob-Ct-qBk\" id=\"rza-4K-3kY\"/>\n                                    </connections>\n                                </collectionReusableView>\n                            </collectionView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"t4S-nP-d6Z\" firstAttribute=\"top\" secondItem=\"6z9-hh-u3N\" secondAttribute=\"bottom\" id=\"1ND-bT-lhz\"/>\n                            <constraint firstItem=\"t4S-nP-d6Z\" firstAttribute=\"top\" secondItem=\"hob-nw-Jrs\" secondAttribute=\"bottom\" id=\"4xo-Zu-Zc6\"/>\n                            <constraint firstAttribute=\"width\" secondItem=\"6z9-hh-u3N\" secondAttribute=\"width\" multiplier=\"3:1\" id=\"7uY-6Y-Ysj\"/>\n                            <constraint firstItem=\"hob-nw-Jrs\" firstAttribute=\"leading\" secondItem=\"6z9-hh-u3N\" secondAttribute=\"trailing\" id=\"Au7-K7-3Eh\"/>\n                            <constraint firstItem=\"hUq-CB-rKx\" firstAttribute=\"width\" secondItem=\"Q1a-BU-VHX\" secondAttribute=\"width\" multiplier=\"1:3\" id=\"NzB-dU-JxT\"/>\n                            <constraint firstItem=\"hUq-CB-rKx\" firstAttribute=\"leading\" secondItem=\"Q1a-BU-VHX\" secondAttribute=\"leading\" id=\"P2V-Og-auw\"/>\n                            <constraint firstItem=\"6z9-hh-u3N\" firstAttribute=\"top\" secondItem=\"rR0-FR-HFT\" secondAttribute=\"bottom\" id=\"SvY-f7-lg0\"/>\n                            <constraint firstItem=\"t4S-nP-d6Z\" firstAttribute=\"top\" secondItem=\"hUq-CB-rKx\" secondAttribute=\"bottom\" id=\"Y18-RM-6WM\"/>\n                            <constraint firstItem=\"hUq-CB-rKx\" firstAttribute=\"top\" secondItem=\"Q1a-BU-VHX\" secondAttribute=\"topMargin\" id=\"egs-zL-uq3\"/>\n                            <constraint firstItem=\"hob-nw-Jrs\" firstAttribute=\"top\" secondItem=\"rR0-FR-HFT\" secondAttribute=\"bottom\" id=\"mhG-uk-0Mw\"/>\n                            <constraint firstItem=\"6z9-hh-u3N\" firstAttribute=\"leading\" secondItem=\"hUq-CB-rKx\" secondAttribute=\"trailing\" id=\"mvK-ZN-p0d\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"hob-nw-Jrs\" secondAttribute=\"trailing\" id=\"zCf-tB-0ls\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"atr-kQ-uig\">\n                        <barButtonItem key=\"rightBarButtonItem\" title=\"Randomize\" id=\"RZR-kL-iad\" userLabel=\"Randomize\">\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"string\" keyPath=\"accessibilityIdentifier\" value=\"Randomize\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"randomize\" destination=\"HRf-Xk-9iT\" id=\"f3p-BY-UTg\"/>\n                            </connections>\n                        </barButtonItem>\n                    </navigationItem>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"partialUpdatesCollectionViewOutlet\" destination=\"hob-nw-Jrs\" id=\"hnV-ZZ-8yp\"/>\n                        <outlet property=\"partialUpdatesTableViewOutlet\" destination=\"hUq-CB-rKx\" id=\"eqg-1H-Jgp\"/>\n                        <outlet property=\"reloadTableViewOutlet\" destination=\"6z9-hh-u3N\" id=\"tzH-oy-3T1\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iOF-ih-lLu\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"23\" y=\"1528\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewPartialUpdates/PartialUpdatesViewController.swift",
    "content": "//\n//  PartialUpdatesViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 6/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nlet generateCustomSize = true\nlet runAutomatically = false\nlet useAnimatedUpdateForCollectionView = false\n\n/**\n Code for reactive data sources is packed in [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources) project.\n */\nclass PartialUpdatesViewController: ViewController {\n    @IBOutlet var reloadTableViewOutlet: UITableView!\n    @IBOutlet var partialUpdatesTableViewOutlet: UITableView!\n    @IBOutlet var partialUpdatesCollectionViewOutlet: UICollectionView!\n\n    var timer: Foundation.Timer?\n\n    static let initialValue: [AnimatableSectionModel<String, Int>] = [\n        NumberSection(model: \"section 1\", items: [1, 2, 3]),\n        NumberSection(model: \"section 2\", items: [4, 5, 6]),\n        NumberSection(model: \"section 3\", items: [7, 8, 9]),\n        NumberSection(model: \"section 4\", items: [10, 11, 12]),\n        NumberSection(model: \"section 5\", items: [13, 14, 15]),\n        NumberSection(model: \"section 6\", items: [16, 17, 18]),\n        NumberSection(model: \"section 7\", items: [19, 20, 21]),\n        NumberSection(model: \"section 8\", items: [22, 23, 24]),\n        NumberSection(model: \"section 9\", items: [25, 26, 27]),\n        NumberSection(model: \"section 10\", items: [28, 29, 30])\n    ]\n\n    static let firstChange: [AnimatableSectionModel<String, Int>]? = nil\n\n    var generator = Randomizer(rng: PseudoRandomGenerator(4, 3), sections: initialValue)\n\n    var sections = BehaviorRelay(value: [NumberSection]())\n\n    /**\n     Code for reactive data sources is packed in [RxDataSources](https://github.com/RxSwiftCommunity/RxDataSources) project.\n     */\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        navigationItem.rightBarButtonItem?.accessibilityLabel = \"Randomize\"\n\n        // For UICollectionView, if another animation starts before previous one is finished, it will sometimes crash :(\n        // It's not deterministic (because Randomizer generates deterministic updates), and if you click fast\n        // It sometimes will and sometimes wont crash, depending on tapping speed.\n        // I guess you can maybe try some tricks with timeout, hard to tell :( That's on Apple side.\n\n        if generateCustomSize {\n            let nSections = UIApplication.isInUITest ? 5 : 10\n            let nItems = UIApplication.isInUITest ? 10 : 100\n\n            var sections = [AnimatableSectionModel<String, Int>]()\n\n            for i in 0 ..< nSections {\n                sections.append(AnimatableSectionModel(model: \"Section \\(i + 1)\", items: Array(i * nItems ..< (i + 1) * nItems)))\n            }\n\n            generator = Randomizer(rng: PseudoRandomGenerator(4, 3), sections: sections)\n        }\n\n        #if runAutomatically\n        timer = NSTimer.scheduledTimerWithTimeInterval(0.6, target: self, selector: \"randomize\", userInfo: nil, repeats: true)\n        #endif\n\n        sections.accept(generator.sections)\n\n        let (configureCell, titleForSection) = PartialUpdatesViewController.tableViewDataSourceUI()\n        let tvAnimatedDataSource = RxTableViewSectionedAnimatedDataSource<NumberSection>(\n            configureCell: configureCell,\n            titleForHeaderInSection: titleForSection\n        )\n        let reloadDataSource = RxTableViewSectionedReloadDataSource<NumberSection>(\n            configureCell: configureCell,\n            titleForHeaderInSection: titleForSection\n        )\n\n        sections.asObservable()\n            .bind(to: partialUpdatesTableViewOutlet.rx.items(dataSource: tvAnimatedDataSource))\n            .disposed(by: disposeBag)\n\n        sections.asObservable()\n            .bind(to: reloadTableViewOutlet.rx.items(dataSource: reloadDataSource))\n            .disposed(by: disposeBag)\n\n        // Collection view logic works, but when clicking fast because of internal bugs\n        // collection view will sometimes get confused. I know what you are thinking,\n        // but this is really not a bug in the algorithm. The generated changes are\n        // pseudorandom, and crash happens depending on clicking speed.\n        //\n        // More info in `RxDataSourceStarterKit/README.md`\n        //\n        // If you want, turn this to true, just click slow :)\n        //\n        // While `useAnimatedUpdateForCollectionView` is false, you can click as fast as\n        // you want, table view doesn't seem to have same issues like collection view.\n        let (configureCollectionViewCell, configureSupplementaryView) = PartialUpdatesViewController.collectionViewDataSourceUI()\n        #if useAnimatedUpdateForCollectionView\n        let cvAnimatedDataSource = RxCollectionViewSectionedAnimatedDataSource(\n            configureCell: configureCollectionViewCell,\n            configureSupplementaryView: configureSupplementaryView\n        )\n\n        sections.asObservable()\n            .bind(to: partialUpdatesCollectionViewOutlet.rx.itemsWithDataSource(cvAnimatedDataSource))\n            .disposed(by: disposeBag)\n        #else\n        let cvReloadDataSource = RxCollectionViewSectionedReloadDataSource(\n            configureCell: configureCollectionViewCell,\n            configureSupplementaryView: configureSupplementaryView\n        )\n        sections.asObservable()\n            .bind(to: partialUpdatesCollectionViewOutlet.rx.items(dataSource: cvReloadDataSource))\n            .disposed(by: disposeBag)\n        #endif\n\n        // touches\n\n        partialUpdatesCollectionViewOutlet.rx.itemSelected\n            .subscribe(onNext: { [weak self] i in\n                print(\"Let me guess, it's .... It's \\(String(describing: self?.generator.sections[i.section].items[i.item])), isn't it? Yeah, I've got it.\")\n            })\n            .disposed(by: disposeBag)\n\n        Observable.of(partialUpdatesTableViewOutlet.rx.itemSelected, reloadTableViewOutlet.rx.itemSelected)\n            .merge()\n            .subscribe(onNext: { [weak self] i in\n                print(\"I have a feeling it's .... \\(String(describing: self?.generator.sections[i.section].items[i.item]))?\")\n            })\n            .disposed(by: disposeBag)\n    }\n\n    override func viewWillDisappear(_: Bool) {\n        timer?.invalidate()\n    }\n\n    @IBAction func randomize() {\n        generator.randomize()\n        var values = generator.sections\n\n        // useful for debugging\n        if PartialUpdatesViewController.firstChange != nil {\n            values = PartialUpdatesViewController.firstChange!\n        }\n\n        // print(values)\n\n        sections.accept(values)\n    }\n}\n\nextension PartialUpdatesViewController {\n    static func tableViewDataSourceUI() -> (\n        TableViewSectionedDataSource<NumberSection>.ConfigureCell,\n        TableViewSectionedDataSource<NumberSection>.TitleForHeaderInSection\n    ) {\n        (\n            { _, tv, _, i in\n                let cell = tv.dequeueReusableCell(withIdentifier: \"Cell\") ?? UITableViewCell(style: .default, reuseIdentifier: \"Cell\")\n                cell.textLabel!.text = \"\\(i)\"\n                return cell\n            },\n            { ds, section -> String? in\n                return ds[section].model\n            }\n        )\n    }\n\n    static func collectionViewDataSourceUI() -> (\n        CollectionViewSectionedDataSource<NumberSection>.ConfigureCell,\n        CollectionViewSectionedDataSource<NumberSection>.ConfigureSupplementaryView\n    ) {\n        (\n            { _, cv, ip, i in\n                let cell = cv.dequeueReusableCell(withReuseIdentifier: \"Cell\", for: ip) as! NumberCell\n                cell.value!.text = \"\\(i)\"\n                return cell\n\n            },\n            { ds, cv, kind, ip in\n                let section = cv.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: \"Section\", for: ip) as! NumberSectionView\n                section.value!.text = \"\\(ds[ip.section].model)\"\n                return section\n            }\n        )\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/DetailViewController.swift",
    "content": "//\n//  DetailViewController.swift\n//  RxExample\n//\n//  Created by carlos on 26/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport UIKit\n\nclass DetailViewController: ViewController {\n    var user: User!\n\n    let `$` = Dependencies.sharedDependencies\n\n    @IBOutlet var imageView: UIImageView!\n    @IBOutlet var label: UILabel!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        imageView.makeRoundedCorners(40)\n\n        let url = URL(string: user.imageURL)!\n        let request = URLRequest(url: url)\n\n        URLSession.shared.rx.data(request: request)\n            .map { data in\n                UIImage(data: data)\n            }\n            .observe(on: `$`.mainScheduler)\n            .catchAndReturn(nil)\n            .subscribe(imageView.rx.image)\n            .disposed(by: disposeBag)\n\n        label.text = user.firstName + \" \" + user.lastName\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/RandomUserAPI.swift",
    "content": "//\n//  RandomUserAPI.swift\n//  RxExample\n//\n//  Created by carlos on 28/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\nclass RandomUserAPI {\n    static let sharedAPI = RandomUserAPI()\n\n    private init() {}\n\n    func getExampleUserResultSet() -> Observable<[User]> {\n        let url = URL(string: \"http://api.randomuser.me/?results=20\")!\n        return URLSession.shared.rx.json(url: url)\n            .map { json in\n                guard let json = json as? [String: AnyObject] else {\n                    throw exampleError(\"Casting to dictionary failed\")\n                }\n\n                return try self.parseJSON(json)\n            }\n    }\n\n    private func parseJSON(_ json: [String: AnyObject]) throws -> [User] {\n        guard let results = json[\"results\"] as? [[String: AnyObject]] else {\n            throw exampleError(\"Can't find results\")\n        }\n\n        let userParsingError = exampleError(\"Can't parse user\")\n\n        let searchResults: [User] = try results.map { user in\n            let name = user[\"name\"] as? [String: String]\n            let pictures = user[\"picture\"] as? [String: String]\n\n            guard let firstName = name?[\"first\"], let lastName = name?[\"last\"], let imageURL = pictures?[\"medium\"] else {\n                throw userParsingError\n            }\n\n            let returnUser = User(\n                firstName: firstName.capitalized,\n                lastName: lastName.capitalized,\n                imageURL: imageURL\n            )\n            return returnUser\n        }\n\n        return searchResults\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommands.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"bZo-ey-Nha\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Table View With Editing Commands View Controller-->\n        <scene sceneID=\"Mhm-lU-Uhj\">\n            <objects>\n                <viewController id=\"bZo-ey-Nha\" customClass=\"TableViewWithEditingCommandsViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"uYL-wL-0i2\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"LL7-L6-PAN\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"SVj-VH-wgI\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"603\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"22\" sectionFooterHeight=\"22\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Ykd-ED-72a\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                                <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <prototypes>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" reuseIdentifier=\"Cell\" id=\"Pbx-dk-7Jc\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"22\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Pbx-dk-7Jc\" id=\"gCd-uh-Y2z\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                        </tableViewCellContentView>\n                                        <accessibility key=\"accessibilityConfiguration\">\n                                            <bool key=\"isElement\" value=\"YES\"/>\n                                        </accessibility>\n                                    </tableViewCell>\n                                </prototypes>\n                            </tableView>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"Ykd-ED-72a\" firstAttribute=\"bottom\" secondItem=\"LL7-L6-PAN\" secondAttribute=\"top\" id=\"1l8-Du-X1S\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"Ykd-ED-72a\" secondAttribute=\"trailing\" id=\"2jg-pR-iuD\"/>\n                            <constraint firstItem=\"Ykd-ED-72a\" firstAttribute=\"top\" secondItem=\"SVj-VH-wgI\" secondAttribute=\"top\" id=\"Q5a-et-oZ4\"/>\n                            <constraint firstItem=\"Ykd-ED-72a\" firstAttribute=\"leading\" secondItem=\"SVj-VH-wgI\" secondAttribute=\"leading\" id=\"oly-BI-P6E\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" id=\"2Vl-fK-l12\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"tableView\" destination=\"Ykd-ED-72a\" id=\"Ro3-pa-MeU\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"yYr-Cu-KXe\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"295\" y=\"-1118\"/>\n        </scene>\n        <!--Detail View Controller-->\n        <scene sceneID=\"hue-hf-XEc\">\n            <objects>\n                <viewController storyboardIdentifier=\"DetailViewController\" id=\"j3Q-Os-jYD\" customClass=\"DetailViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"jaw-q0-yp5\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"Dby-WF-YS7\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"s41-uG-n8S\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"La4-5R-bWA\">\n                                <rect key=\"frame\" x=\"113\" y=\"83\" width=\"150\" height=\"150\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"150\" id=\"9jV-4C-B8a\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"150\" id=\"cSl-DK-iUd\"/>\n                                </constraints>\n                            </imageView>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"s2J-Wz-k0n\">\n                                <rect key=\"frame\" x=\"16\" y=\"241\" width=\"343\" height=\"30\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"30\" id=\"HRY-mh-Gwy\"/>\n                                </constraints>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                                <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"0.66666666669999997\" green=\"0.66666666669999997\" blue=\"0.66666666669999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"s2J-Wz-k0n\" firstAttribute=\"top\" secondItem=\"La4-5R-bWA\" secondAttribute=\"bottom\" constant=\"8\" id=\"9nF-zj-hl2\"/>\n                            <constraint firstItem=\"s2J-Wz-k0n\" firstAttribute=\"leading\" secondItem=\"s41-uG-n8S\" secondAttribute=\"leadingMargin\" id=\"JIF-b2-bjl\"/>\n                            <constraint firstAttribute=\"centerX\" secondItem=\"La4-5R-bWA\" secondAttribute=\"centerX\" id=\"Jtp-fO-8HV\"/>\n                            <constraint firstItem=\"La4-5R-bWA\" firstAttribute=\"top\" secondItem=\"jaw-q0-yp5\" secondAttribute=\"bottom\" constant=\"19\" id=\"bMj-Z1-Rcx\"/>\n                            <constraint firstItem=\"s2J-Wz-k0n\" firstAttribute=\"trailing\" secondItem=\"s41-uG-n8S\" secondAttribute=\"trailingMargin\" id=\"zRS-YE-Usz\"/>\n                        </constraints>\n                    </view>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"imageView\" destination=\"La4-5R-bWA\" id=\"BAA-jt-p2H\"/>\n                        <outlet property=\"label\" destination=\"s2J-Wz-k0n\" id=\"8jH-NF-ezM\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"I0a-XI-SOi\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"766\" y=\"-1119\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/TableViewWithEditingCommandsViewController.swift",
    "content": "//\n//  TableViewWithEditingCommandsViewController.swift\n//  RxExample\n//\n//  Created by carlos on 26/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\n/**\n Another way to do \"MVVM\". There are different ideas what does MVVM mean depending on your background.\n  It's kind of similar like FRP.\n\n  In the end, it doesn't really matter what jargon are you using.\n\n  This would be the ideal case, but it's really hard to model complex views this way\n  because it's not possible to observe partial model changes.\n */\nstruct TableViewEditingCommandsViewModel {\n    let favoriteUsers: [User]\n    let users: [User]\n\n    static func executeCommand(state: TableViewEditingCommandsViewModel, _ command: TableViewEditingCommand) -> TableViewEditingCommandsViewModel {\n        switch command {\n        case let .setUsers(users):\n            return TableViewEditingCommandsViewModel(favoriteUsers: state.favoriteUsers, users: users)\n        case let .setFavoriteUsers(favoriteUsers):\n            return TableViewEditingCommandsViewModel(favoriteUsers: favoriteUsers, users: state.users)\n        case let .deleteUser(indexPath):\n            var all = [state.favoriteUsers, state.users]\n            all[indexPath.section].remove(at: indexPath.row)\n            return TableViewEditingCommandsViewModel(favoriteUsers: all[0], users: all[1])\n        case let .moveUser(from, to):\n            var all = [state.favoriteUsers, state.users]\n            let user = all[from.section][from.row]\n            all[from.section].remove(at: from.row)\n            all[to.section].insert(user, at: to.row)\n\n            return TableViewEditingCommandsViewModel(favoriteUsers: all[0], users: all[1])\n        }\n    }\n}\n\nenum TableViewEditingCommand {\n    case setUsers(users: [User])\n    case setFavoriteUsers(favoriteUsers: [User])\n    case deleteUser(indexPath: IndexPath)\n    case moveUser(from: IndexPath, to: IndexPath)\n}\n\nclass TableViewWithEditingCommandsViewController: ViewController, UITableViewDelegate {\n    @IBOutlet var tableView: UITableView!\n\n    let dataSource = TableViewWithEditingCommandsViewController.configureDataSource()\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        typealias Feedback = (ObservableSchedulerContext<TableViewEditingCommandsViewModel>) -> Observable<TableViewEditingCommand>\n\n        navigationItem.rightBarButtonItem = editButtonItem\n\n        let superMan = User(\n            firstName: \"Super\",\n            lastName: \"Man\",\n            imageURL: \"http://nerdreactor.com/wp-content/uploads/2015/02/Superman1.jpg\"\n        )\n\n        let watMan = User(\n            firstName: \"Wat\",\n            lastName: \"Man\",\n            imageURL: \"http://www.iri.upc.edu/files/project/98/main.GIF\"\n        )\n\n        let loadFavoriteUsers = RandomUserAPI.sharedAPI\n            .getExampleUserResultSet()\n            .map(TableViewEditingCommand.setUsers)\n            .catchAndReturn(TableViewEditingCommand.setUsers(users: []))\n\n        let initialLoadCommand = Observable.just(TableViewEditingCommand.setFavoriteUsers(favoriteUsers: [superMan, watMan]))\n            .concat(loadFavoriteUsers)\n            .observe(on: MainScheduler.instance)\n\n        let uiFeedback: Feedback = bind(self) { this, state in\n            let subscriptions = [\n                state.map {\n                    [\n                        SectionModel(model: \"Favorite Users\", items: $0.favoriteUsers),\n                        SectionModel(model: \"Normal Users\", items: $0.users)\n                    ]\n                }\n                .bind(to: this.tableView.rx.items(dataSource: this.dataSource)),\n                this.tableView.rx.itemSelected\n                    .withLatestFrom(state) { i, latestState in\n                        let all = [latestState.favoriteUsers, latestState.users]\n                        return all[i.section][i.row]\n                    }\n                    .subscribe(onNext: { [weak this] user in\n                        this?.showDetailsForUser(user)\n                    })\n            ]\n\n            let events: [Observable<TableViewEditingCommand>] = [\n                this.tableView.rx.itemDeleted.map(TableViewEditingCommand.deleteUser),\n                this.tableView.rx.itemMoved.map { val in TableViewEditingCommand.moveUser(from: val.0, to: val.1) }\n            ]\n\n            return Bindings(subscriptions: subscriptions, events: events)\n        }\n\n        let initialLoadFeedback: Feedback = { _ in initialLoadCommand }\n\n        Observable.system(\n            initialState: TableViewEditingCommandsViewModel(favoriteUsers: [], users: []),\n            reduce: TableViewEditingCommandsViewModel.executeCommand,\n            scheduler: MainScheduler.instance,\n            scheduledFeedback: uiFeedback, initialLoadFeedback\n        )\n        .subscribe()\n        .disposed(by: disposeBag)\n\n        // customization using delegate\n        // RxTableViewDelegateBridge will forward correct messages\n        tableView.rx.setDelegate(self)\n            .disposed(by: disposeBag)\n    }\n\n    override func setEditing(_ editing: Bool, animated: Bool) {\n        super.setEditing(editing, animated: animated)\n        tableView.isEditing = editing\n    }\n\n    // MARK: Table view delegate ;)\n\n    func tableView(_: UITableView, viewForHeaderInSection section: Int) -> UIView? {\n        let title = dataSource[section]\n\n        let label = UILabel(frame: CGRect.zero)\n        // hacky I know :)\n        label.text = \"  \\(title)\"\n        label.textColor = UIColor.white\n        label.backgroundColor = UIColor.darkGray\n        label.alpha = 0.9\n\n        return label\n    }\n\n    func tableView(_: UITableView, heightForHeaderInSection _: Int) -> CGFloat {\n        40\n    }\n\n    // MARK: Navigation\n\n    private func showDetailsForUser(_ user: User) {\n        let storyboard = UIStoryboard(name: \"TableViewWithEditingCommands\", bundle: Bundle(identifier: \"RxExample-iOS\"))\n        let viewController = storyboard.instantiateViewController(withIdentifier: \"DetailViewController\") as! DetailViewController\n        viewController.user = user\n        navigationController?.pushViewController(viewController, animated: true)\n    }\n\n    // MARK: Work over Variable\n\n    static func configureDataSource() -> RxTableViewSectionedReloadDataSource<SectionModel<String, User>> {\n        let dataSource = RxTableViewSectionedReloadDataSource<SectionModel<String, User>>(\n            configureCell: { (_, tv, _, user: User) in\n                let cell = tv.dequeueReusableCell(withIdentifier: \"Cell\")!\n                cell.textLabel?.text = user.firstName + \" \" + user.lastName\n                return cell\n            },\n            titleForHeaderInSection: { dataSource, sectionIndex in\n                dataSource[sectionIndex].model\n            },\n            canEditRowAtIndexPath: { _, _ in\n                true\n            },\n            canMoveRowAtIndexPath: { _, _ in\n                true\n            }\n        )\n\n        return dataSource\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/UIImageView+Extensions.swift",
    "content": "//\n//  UIImageView+Extensions.swift\n//  RxExample\n//\n//  Created by carlos on 28/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport UIKit\n\nextension UIImageView {\n    func makeRoundedCorners(_ radius: CGFloat) {\n        layer.cornerRadius = radius\n        layer.masksToBounds = true\n    }\n\n    func makeRoundedCorners() {\n        makeRoundedCorners(frame.size.width / 2)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/TableViewWithEditingCommands/User.swift",
    "content": "//\n//  User.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct User: Equatable, CustomDebugStringConvertible {\n    var firstName: String\n    var lastName: String\n    var imageURL: String\n\n    init(firstName: String, lastName: String, imageURL: String) {\n        self.firstName = firstName\n        self.lastName = lastName\n        self.imageURL = imageURL\n    }\n}\n\nextension User {\n    var debugDescription: String {\n        firstName + \" \" + lastName\n    }\n}\n\nfunc == (lhs: User, rhs: User) -> Bool {\n    lhs.firstName == rhs.firstName &&\n        lhs.lastName == rhs.lastName &&\n        lhs.imageURL == rhs.imageURL\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/UIPickerViewExample/CustomPickerViewAdapterExampleViewController.swift",
    "content": "//\n//  CustomPickerViewAdapterExampleViewController.swift\n//  RxExample\n//\n//  Created by Sergey Shulga on 12/07/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nfinal class CustomPickerViewAdapterExampleViewController: ViewController {\n    @IBOutlet var pickerView: UIPickerView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        Observable.just([[1, 2, 3], [5, 8, 13], [21, 34]])\n            .bind(to: pickerView.rx.items(adapter: PickerViewViewAdapter()))\n            .disposed(by: disposeBag)\n\n        pickerView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { models in\n                print(models)\n            })\n            .disposed(by: disposeBag)\n    }\n}\n\nfinal class PickerViewViewAdapter:\n    NSObject,\n    UIPickerViewDataSource,\n    UIPickerViewDelegate,\n    RxPickerViewDataSourceType,\n    SectionedViewDataSourceType\n{\n    typealias Element = [[CustomStringConvertible]]\n    private var items: [[CustomStringConvertible]] = []\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        items[indexPath.section][indexPath.row]\n    }\n\n    func numberOfComponents(in _: UIPickerView) -> Int {\n        items.count\n    }\n\n    func pickerView(_: UIPickerView, numberOfRowsInComponent component: Int) -> Int {\n        items[component].count\n    }\n\n    func pickerView(_: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing _: UIView?) -> UIView {\n        let label = UILabel()\n        label.text = items[component][row].description\n        label.textColor = UIColor.orange\n        label.font = UIFont.preferredFont(forTextStyle: .headline)\n        label.textAlignment = .center\n        return label\n    }\n\n    func pickerView(_ pickerView: UIPickerView, observedEvent: Event<Element>) {\n        Binder(self) { adapter, items in\n            adapter.items = items\n            pickerView.reloadAllComponents()\n        }.on(observedEvent)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/UIPickerViewExample/SimplePickerViewExampleViewController.swift",
    "content": "//\n//  SimplePickerViewExampleViewController.swift\n//  RxExample\n//\n//  Created by sergdort on 10/07/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nfinal class SimplePickerViewExampleViewController: ViewController {\n    @IBOutlet var pickerView1: UIPickerView!\n    @IBOutlet var pickerView2: UIPickerView!\n    @IBOutlet var pickerView3: UIPickerView!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        Observable.just([1, 2, 3])\n            .bind(to: pickerView1.rx.itemTitles) { _, item in\n                \"\\(item)\"\n            }\n            .disposed(by: disposeBag)\n\n        pickerView1.rx.modelSelected(Int.self)\n            .subscribe(onNext: { models in\n                print(\"models selected 1: \\(models)\")\n            })\n            .disposed(by: disposeBag)\n\n        Observable.just([1, 2, 3])\n            .bind(to: pickerView2.rx.itemAttributedTitles) { _, item in\n                NSAttributedString(\n                    string: \"\\(item)\",\n                    attributes: [\n                        NSAttributedString.Key.foregroundColor: UIColor.cyan,\n                        NSAttributedString.Key.underlineStyle: NSUnderlineStyle.double.rawValue\n                    ]\n                )\n            }\n            .disposed(by: disposeBag)\n\n        pickerView2.rx.modelSelected(Int.self)\n            .subscribe(onNext: { models in\n                print(\"models selected 2: \\(models)\")\n            })\n            .disposed(by: disposeBag)\n\n        Observable.just([UIColor.red, UIColor.green, UIColor.blue])\n            .bind(to: pickerView3.rx.items) { _, item, _ in\n                let view = UIView()\n                view.backgroundColor = item\n                return view\n            }\n            .disposed(by: disposeBag)\n\n        pickerView3.rx.modelSelected(UIColor.self)\n            .subscribe(onNext: { models in\n                print(\"models selected 3: \\(models)\")\n            })\n            .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/UIPickerViewExample/SimpleUIPickerViewExample.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"12121\" systemVersion=\"16F73\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\" initialViewController=\"h29-lJ-Sgs\">\n    <device id=\"retina4_7\" orientation=\"portrait\">\n        <adaptation id=\"fullscreen\"/>\n    </device>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"12089\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Custom Adapters-->\n        <scene sceneID=\"iy0-gg-lTJ\">\n            <objects>\n                <viewController id=\"U76-um-TqZ\" customClass=\"CustomPickerViewAdapterExampleViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"61a-Hs-mqd\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"I6Z-oN-WS8\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8lm-KZ-WhU\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <pickerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7Qw-EC-A7z\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"20\" width=\"375\" height=\"597.5\"/>\n                            </pickerView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"I6Z-oN-WS8\" firstAttribute=\"top\" secondItem=\"7Qw-EC-A7z\" secondAttribute=\"bottom\" constant=\"0.5\" id=\"9BL-qX-gl5\"/>\n                            <constraint firstItem=\"7Qw-EC-A7z\" firstAttribute=\"top\" secondItem=\"61a-Hs-mqd\" secondAttribute=\"bottom\" id=\"Q5C-UX-P9i\"/>\n                            <constraint firstItem=\"7Qw-EC-A7z\" firstAttribute=\"leading\" secondItem=\"8lm-KZ-WhU\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"Suo-sl-F3b\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"7Qw-EC-A7z\" secondAttribute=\"trailing\" constant=\"-16\" id=\"ltJ-CE-JjD\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Custom Adapters\" id=\"F7B-2F-A59\"/>\n                    <connections>\n                        <outlet property=\"pickerView\" destination=\"7Qw-EC-A7z\" id=\"Zd4-ee-qEP\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"eYS-P5-6qD\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1062\" y=\"-133\"/>\n        </scene>\n        <!--Convenience extensions-->\n        <scene sceneID=\"dKW-5U-XRa\">\n            <objects>\n                <viewController id=\"bb0-Kk-jbm\" customClass=\"SimplePickerViewExampleViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"zPw-9z-E4v\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"RbS-HM-i7Z\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"XyH-DW-rmd\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <pickerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QBe-yO-jyK\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"222.5\"/>\n                            </pickerView>\n                            <pickerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hzc-8t-K6t\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"222\" width=\"375\" height=\"222.5\"/>\n                            </pickerView>\n                            <pickerView contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7fN-bc-LPj\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"395\" width=\"375\" height=\"222.5\"/>\n                            </pickerView>\n                        </subviews>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <constraints>\n                            <constraint firstItem=\"hzc-8t-K6t\" firstAttribute=\"top\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"bottom\" constant=\"-0.5\" id=\"ASQ-6I-6B9\"/>\n                            <constraint firstItem=\"7fN-bc-LPj\" firstAttribute=\"height\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"height\" id=\"Ba2-An-Qif\"/>\n                            <constraint firstItem=\"QBe-yO-jyK\" firstAttribute=\"top\" secondItem=\"zPw-9z-E4v\" secondAttribute=\"bottom\" constant=\"-20\" id=\"LXY-YK-DIB\"/>\n                            <constraint firstItem=\"7fN-bc-LPj\" firstAttribute=\"leading\" secondItem=\"hzc-8t-K6t\" secondAttribute=\"leading\" id=\"Mdq-ZW-aoa\"/>\n                            <constraint firstItem=\"7fN-bc-LPj\" firstAttribute=\"trailing\" secondItem=\"hzc-8t-K6t\" secondAttribute=\"trailing\" id=\"X1j-D8-XmG\"/>\n                            <constraint firstItem=\"hzc-8t-K6t\" firstAttribute=\"leading\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"leading\" id=\"aBI-hm-ahZ\"/>\n                            <constraint firstItem=\"QBe-yO-jyK\" firstAttribute=\"height\" secondItem=\"XyH-DW-rmd\" secondAttribute=\"height\" multiplier=\"1:3\" id=\"aGt-FT-o7y\"/>\n                            <constraint firstItem=\"hzc-8t-K6t\" firstAttribute=\"height\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"height\" id=\"fiZ-eT-NCZ\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"trailing\" constant=\"-16\" id=\"oCb-Tr-TtV\"/>\n                            <constraint firstItem=\"hzc-8t-K6t\" firstAttribute=\"trailing\" secondItem=\"QBe-yO-jyK\" secondAttribute=\"trailing\" id=\"ucm-WJ-yeM\"/>\n                            <constraint firstItem=\"QBe-yO-jyK\" firstAttribute=\"leading\" secondItem=\"XyH-DW-rmd\" secondAttribute=\"leadingMargin\" constant=\"-16\" id=\"yAS-ao-rSB\"/>\n                            <constraint firstItem=\"7fN-bc-LPj\" firstAttribute=\"top\" secondItem=\"hzc-8t-K6t\" secondAttribute=\"bottom\" constant=\"-49.5\" id=\"z2R-bB-k9I\"/>\n                        </constraints>\n                    </view>\n                    <tabBarItem key=\"tabBarItem\" title=\"Convenience extensions\" id=\"oja-Y3-fA6\"/>\n                    <connections>\n                        <outlet property=\"pickerView1\" destination=\"QBe-yO-jyK\" id=\"aUO-pc-9H8\"/>\n                        <outlet property=\"pickerView2\" destination=\"hzc-8t-K6t\" id=\"GSU-b9-hXx\"/>\n                        <outlet property=\"pickerView3\" destination=\"7fN-bc-LPj\" id=\"qe7-K3-tYM\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"LJ1-QM-DVZ\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"1063\" y=\"527\"/>\n        </scene>\n        <!--Tab Bar Controller-->\n        <scene sceneID=\"TkB-eb-AbF\">\n            <objects>\n                <tabBarController id=\"h29-lJ-Sgs\" sceneMemberID=\"viewController\">\n                    <tabBar key=\"tabBar\" contentMode=\"scaleToFill\" id=\"gFe-GF-DNl\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"49\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n                    </tabBar>\n                    <connections>\n                        <segue destination=\"bb0-Kk-jbm\" kind=\"relationship\" relationship=\"viewControllers\" id=\"c2m-46-Eyd\"/>\n                        <segue destination=\"U76-um-TqZ\" kind=\"relationship\" relationship=\"viewControllers\" id=\"wkV-6X-gki\"/>\n                    </connections>\n                </tabBarController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"yvT-7g-jbk\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"113\" y=\"201\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/ViewModels/SearchResultViewModel.swift",
    "content": "//\n//  SearchResultViewModel.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/3/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\nclass SearchResultViewModel {\n    let searchResult: WikipediaSearchResult\n\n    var title: Driver<String>\n    var imageURLs: Driver<[URL]>\n\n    let API = DefaultWikipediaAPI.sharedAPI\n    let `$`: Dependencies = .sharedDependencies\n\n    init(searchResult: WikipediaSearchResult) {\n        self.searchResult = searchResult\n\n        title = Driver.never()\n        imageURLs = Driver.never()\n\n        let URLs = configureImageURLs()\n\n        imageURLs = URLs.asDriver(onErrorJustReturn: [])\n        title = configureTitle(URLs).asDriver(onErrorJustReturn: \"Error during fetching\")\n    }\n\n    // private methods\n\n    func configureTitle(_ imageURLs: Observable<[URL]>) -> Observable<String> {\n        let searchResult = searchResult\n\n        let loadingValue: [URL]? = nil\n\n        return imageURLs\n            .map(Optional.init)\n            .startWith(loadingValue)\n            .map { URLs in\n                if let URLs {\n                    \"\\(searchResult.title) (\\(URLs.count) pictures)\"\n                } else {\n                    \"\\(searchResult.title) (loading…)\"\n                }\n            }\n            .retryOnBecomesReachable(\"⚠️ Service offline ⚠️\", reachabilityService: `$`.reachabilityService)\n    }\n\n    func configureImageURLs() -> Observable<[URL]> {\n        let searchResult = searchResult\n        return API.articleContent(searchResult)\n            .observe(on: `$`.backgroundWorkScheduler)\n            .map { page in\n                do {\n                    return try parseImageURLsfromHTMLSuitableForDisplay(page.text as NSString)\n                } catch {\n                    return []\n                }\n            }\n            .share(replay: 1)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/Views/CollectionViewImageCell.swift",
    "content": "//\n//  CollectionViewImageCell.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\npublic class CollectionViewImageCell: UICollectionViewCell {\n    @IBOutlet var imageOutlet: UIImageView!\n\n    var disposeBag: DisposeBag?\n\n    var downloadableImage: Observable<DownloadableImage>? {\n        didSet {\n            let disposeBag = DisposeBag()\n\n            downloadableImage?\n                .asDriver(onErrorJustReturn: DownloadableImage.offlinePlaceholder)\n                .drive(imageOutlet.rx.downloadableImageAnimated(CATransitionType.fade.rawValue))\n                .disposed(by: disposeBag)\n\n            self.disposeBag = disposeBag\n        }\n    }\n\n    override public func prepareForReuse() {\n        super.prepareForReuse()\n\n        downloadableImage = nil\n        disposeBag = nil\n    }\n\n    deinit {}\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaImageCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7528.3\" systemVersion=\"14C1514\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7518.3\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <collectionViewCell opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" reuseIdentifier=\"ImageCell\" id=\"gDV-vk-5X6\" customClass=\"CollectionViewImageCell\" customModule=\"RxExample\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"112\" height=\"112\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <view key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\">\n                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"112\" height=\"112\"/>\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleAspectFit\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" fixedFrame=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"UFP-PL-ID0\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"119\" height=\"119\"/>\n                    </imageView>\n                </subviews>\n                <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"calibratedWhite\"/>\n            </view>\n            <connections>\n                <outlet property=\"imageOutlet\" destination=\"UFP-PL-ID0\" id=\"M3H-e4-zK9\"/>\n            </connections>\n            <point key=\"canvasLocation\" x=\"249\" y=\"290\"/>\n        </collectionViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.swift",
    "content": "//\n//  WikipediaSearchCell.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\npublic class WikipediaSearchCell: UITableViewCell {\n    @IBOutlet var titleOutlet: UILabel!\n    @IBOutlet var URLOutlet: UILabel!\n    @IBOutlet var imagesOutlet: UICollectionView!\n\n    var disposeBag: DisposeBag?\n\n    let imageService = DefaultImageService.sharedImageService\n\n    override public func awakeFromNib() {\n        super.awakeFromNib()\n\n        imagesOutlet.register(UINib(nibName: \"WikipediaImageCell\", bundle: nil), forCellWithReuseIdentifier: \"ImageCell\")\n    }\n\n    var viewModel: SearchResultViewModel? {\n        didSet {\n            let disposeBag = DisposeBag()\n\n            guard let viewModel else {\n                return\n            }\n\n            viewModel.title\n                .map(Optional.init)\n                .drive(titleOutlet.rx.text)\n                .disposed(by: disposeBag)\n\n            URLOutlet.text = viewModel.searchResult.URL.absoluteString\n\n            let reachabilityService = Dependencies.sharedDependencies.reachabilityService\n            viewModel.imageURLs\n                .drive(imagesOutlet.rx.items(cellIdentifier: \"ImageCell\", cellType: CollectionViewImageCell.self)) { [weak self] _, url, cell in\n                    cell.downloadableImage = self?.imageService.imageFromURL(url, reachabilityService: reachabilityService) ?? Observable.empty()\n\n                    #if DEBUG\n                    // cell.installHackBecauseOfAutomationLeaksOnIOS10(firstViewThatDoesntLeak: self!.superview!.superview!)\n                    #endif\n                }\n                .disposed(by: disposeBag)\n\n            self.disposeBag = disposeBag\n\n            #if DEBUG\n            installHackBecauseOfAutomationLeaksOnIOS10(firstViewThatDoesntLeak: superview!.superview!)\n            #endif\n        }\n    }\n\n    override public func prepareForReuse() {\n        super.prepareForReuse()\n\n        viewModel = nil\n        disposeBag = nil\n    }\n\n    deinit {}\n}\n\nprivate protocol ReusableView: AnyObject {\n    var disposeBag: DisposeBag? { get }\n    func prepareForReuse()\n}\n\nextension WikipediaSearchCell: ReusableView {}\n\nextension CollectionViewImageCell: ReusableView {}\n\nprivate extension ReusableView {\n    func installHackBecauseOfAutomationLeaksOnIOS10(firstViewThatDoesntLeak: UIView) {\n        if #available(iOS 10.0, *) {\n            if OSApplication.isInUITest {\n                // !!! on iOS 10 automation tests leak cells, 🍻 automation team\n                // !!! fugly workaround\n                // ... no, I'm not assuming prepareForReuse is always called before init, this is\n                // just a workaround because that method already has cleanup logic :(\n                // Remember that leaking UISwitch?\n                // https://github.com/ReactiveX/RxSwift/issues/842\n                // Well it just got some new buddies to hang around with\n                firstViewThatDoesntLeak.rx.deallocated.subscribe(onNext: { [weak self] _ in\n                    self?.prepareForReuse()\n                })\n                .disposed(by: disposeBag!)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchCell.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"7528.3\" systemVersion=\"14C1514\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"7518.3\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" indentationWidth=\"10\" reuseIdentifier=\"WikipediaSearchCell\" id=\"FFL-jj-OVs\" customClass=\"WikipediaSearchCell\" customModule=\"RxExample\" customModuleProvider=\"target\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"599\" height=\"194\"/>\n            <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n            <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"FFL-jj-OVs\" id=\"OTg-NH-M8e\">\n                <autoresizingMask key=\"autoresizingMask\"/>\n                <subviews>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"QYs-T3-gBc\">\n                        <rect key=\"frame\" x=\"8\" y=\"13\" width=\"583\" height=\"21\"/>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                        <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Label\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"GUZ-d0-gxH\">\n                        <rect key=\"frame\" x=\"8\" y=\"37\" width=\"583\" height=\"17\"/>\n                        <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                        <color key=\"textColor\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <nil key=\"highlightedColor\"/>\n                    </label>\n                    <collectionView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" dataMode=\"prototypes\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"udN-mT-LHB\">\n                        <rect key=\"frame\" x=\"8\" y=\"69\" width=\"583\" height=\"111\"/>\n                        <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                        <collectionViewFlowLayout key=\"collectionViewLayout\" scrollDirection=\"horizontal\" minimumLineSpacing=\"10\" minimumInteritemSpacing=\"10\" id=\"kLe-ym-7IW\">\n                            <size key=\"itemSize\" width=\"112\" height=\"112\"/>\n                            <size key=\"headerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                            <size key=\"footerReferenceSize\" width=\"0.0\" height=\"0.0\"/>\n                            <inset key=\"sectionInset\" minX=\"0.0\" minY=\"0.0\" maxX=\"0.0\" maxY=\"0.0\"/>\n                        </collectionViewFlowLayout>\n                        <cells/>\n                    </collectionView>\n                </subviews>\n                <constraints>\n                    <constraint firstItem=\"QYs-T3-gBc\" firstAttribute=\"top\" secondItem=\"OTg-NH-M8e\" secondAttribute=\"topMargin\" constant=\"5\" id=\"16n-PC-Lrn\"/>\n                    <constraint firstAttribute=\"trailingMargin\" secondItem=\"GUZ-d0-gxH\" secondAttribute=\"trailing\" id=\"PhA-W5-CaV\"/>\n                    <constraint firstItem=\"QYs-T3-gBc\" firstAttribute=\"leading\" secondItem=\"OTg-NH-M8e\" secondAttribute=\"leadingMargin\" id=\"RJn-Bi-T8A\"/>\n                    <constraint firstItem=\"udN-mT-LHB\" firstAttribute=\"top\" secondItem=\"GUZ-d0-gxH\" secondAttribute=\"bottom\" constant=\"15\" id=\"Yqs-Hd-PFm\"/>\n                    <constraint firstItem=\"GUZ-d0-gxH\" firstAttribute=\"top\" secondItem=\"QYs-T3-gBc\" secondAttribute=\"bottom\" constant=\"3\" id=\"Zrb-p4-dDE\"/>\n                    <constraint firstAttribute=\"bottomMargin\" secondItem=\"udN-mT-LHB\" secondAttribute=\"bottom\" constant=\"5\" id=\"c0W-Yt-Hw2\"/>\n                    <constraint firstAttribute=\"trailingMargin\" secondItem=\"udN-mT-LHB\" secondAttribute=\"trailing\" id=\"cs2-II-Bbi\"/>\n                    <constraint firstItem=\"udN-mT-LHB\" firstAttribute=\"leading\" secondItem=\"OTg-NH-M8e\" secondAttribute=\"leadingMargin\" id=\"kX7-dg-rET\"/>\n                    <constraint firstItem=\"GUZ-d0-gxH\" firstAttribute=\"top\" secondItem=\"QYs-T3-gBc\" secondAttribute=\"bottom\" constant=\"3\" id=\"lKK-ZE-Y4s\"/>\n                    <constraint firstAttribute=\"trailingMargin\" secondItem=\"QYs-T3-gBc\" secondAttribute=\"trailing\" id=\"qnF-6z-xsh\"/>\n                    <constraint firstItem=\"GUZ-d0-gxH\" firstAttribute=\"leading\" secondItem=\"OTg-NH-M8e\" secondAttribute=\"leadingMargin\" id=\"sXK-UC-Q3T\"/>\n                </constraints>\n            </tableViewCellContentView>\n            <connections>\n                <outlet property=\"URLOutlet\" destination=\"GUZ-d0-gxH\" id=\"ck1-0I-egY\"/>\n                <outlet property=\"imagesOutlet\" destination=\"udN-mT-LHB\" id=\"02i-Sh-zDH\"/>\n                <outlet property=\"titleOutlet\" destination=\"QYs-T3-gBc\" id=\"XUA-Z6-tzq\"/>\n            </connections>\n        </tableViewCell>\n    </objects>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/Views/WikipediaSearchViewController.swift",
    "content": "//\n//  WikipediaSearchViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nclass WikipediaSearchViewController: ViewController {\n    @IBOutlet var searchBar: UISearchBar!\n    @IBOutlet var resultsTableView: UITableView!\n    @IBOutlet var emptyView: UIView!\n\n    override func awakeFromNib() {\n        super.awakeFromNib()\n    }\n\n    // lifecycle\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        edgesForExtendedLayout = .all\n\n        configureTableDataSource()\n        configureKeyboardDismissesOnScroll()\n        configureNavigateOnRowClick()\n        configureActivityIndicatorsShow()\n    }\n\n    func configureTableDataSource() {\n        resultsTableView.register(UINib(nibName: \"WikipediaSearchCell\", bundle: nil), forCellReuseIdentifier: \"WikipediaSearchCell\")\n\n        resultsTableView.rowHeight = 194\n        resultsTableView.hideEmptyCells()\n\n        // This is for clarity only, don't use static dependencies\n        let API = DefaultWikipediaAPI.sharedAPI\n\n        let results = searchBar.rx.text.orEmpty\n            .asDriver()\n            .throttle(.milliseconds(300))\n            .distinctUntilChanged()\n            .flatMapLatest { query in\n                API.getSearchResults(query)\n                    .retry(3)\n                    .retryOnBecomesReachable([], reachabilityService: Dependencies.sharedDependencies.reachabilityService)\n                    .startWith([]) // clears results on new search term\n                    .asDriver(onErrorJustReturn: [])\n            }\n            .map { results in\n                results.map(SearchResultViewModel.init)\n            }\n\n        results\n            .drive(resultsTableView.rx.items(cellIdentifier: \"WikipediaSearchCell\", cellType: WikipediaSearchCell.self)) { _, viewModel, cell in\n                cell.viewModel = viewModel\n            }\n            .disposed(by: disposeBag)\n\n        results\n            .map { $0.count != 0 }\n            .drive(emptyView.rx.isHidden)\n            .disposed(by: disposeBag)\n    }\n\n    func configureKeyboardDismissesOnScroll() {\n        let searchBar = searchBar\n\n        resultsTableView.rx.contentOffset\n            .asDriver()\n            .drive(onNext: { _ in\n                if searchBar?.isFirstResponder ?? false {\n                    _ = searchBar?.resignFirstResponder()\n                }\n            })\n            .disposed(by: disposeBag)\n    }\n\n    func configureNavigateOnRowClick() {\n        let wireframe = DefaultWireframe.shared\n\n        resultsTableView.rx.modelSelected(SearchResultViewModel.self)\n            .asDriver()\n            .drive(onNext: { searchResult in\n                wireframe.open(url: searchResult.searchResult.URL)\n            })\n            .disposed(by: disposeBag)\n    }\n\n    func configureActivityIndicatorsShow() {\n        Driver.combineLatest(\n            DefaultWikipediaAPI.sharedAPI.loadingWikipediaData,\n            DefaultImageService.sharedImageService.loadingImage\n        ) { $0 || $1 }\n            .distinctUntilChanged()\n            .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible)\n            .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/WikipediaAPI/WikipediaAPI.swift",
    "content": "//\n//  WikipediaAPI.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\nfunc apiError(_ error: String) -> NSError {\n    NSError(domain: \"WikipediaAPI\", code: -1, userInfo: [NSLocalizedDescriptionKey: error])\n}\n\npublic let WikipediaParseError = apiError(\"Error during parsing\")\n\nprotocol WikipediaAPI {\n    func getSearchResults(_ query: String) -> Observable<[WikipediaSearchResult]>\n    func articleContent(_ searchResult: WikipediaSearchResult) -> Observable<WikipediaPage>\n}\n\nclass DefaultWikipediaAPI: WikipediaAPI {\n    static let sharedAPI = DefaultWikipediaAPI() // Singleton\n\n    let `$`: Dependencies = .sharedDependencies\n\n    let loadingWikipediaData = ActivityIndicator()\n\n    private init() {}\n\n    private func JSON(_ url: URL) -> Observable<Any> {\n        `$`.URLSession\n            .rx.json(url: url)\n            .trackActivity(loadingWikipediaData)\n    }\n\n    // Example wikipedia response http://en.wikipedia.org/w/api.php?action=opensearch&search=Rx\n    func getSearchResults(_ query: String) -> Observable<[WikipediaSearchResult]> {\n        let escapedQuery = query.URLEscaped\n        let urlContent = \"http://en.wikipedia.org/w/api.php?action=opensearch&search=\\(escapedQuery)\"\n        let url = URL(string: urlContent)!\n\n        return JSON(url)\n            .observe(on: `$`.backgroundWorkScheduler)\n            .map { json in\n                guard let json = json as? [AnyObject] else {\n                    throw exampleError(\"Parsing error\")\n                }\n\n                return try WikipediaSearchResult.parseJSON(json)\n            }\n            .observe(on: `$`.mainScheduler)\n    }\n\n    // http://en.wikipedia.org/w/api.php?action=parse&page=rx&format=json\n    func articleContent(_ searchResult: WikipediaSearchResult) -> Observable<WikipediaPage> {\n        let escapedPage = searchResult.title.URLEscaped\n        guard let url = URL(string: \"http://en.wikipedia.org/w/api.php?action=parse&page=\\(escapedPage)&format=json\") else {\n            return Observable.error(apiError(\"Can't create url\"))\n        }\n\n        return JSON(url)\n            .map { jsonResult in\n                guard let json = jsonResult as? NSDictionary else {\n                    throw exampleError(\"Parsing error\")\n                }\n\n                return try WikipediaPage.parseJSON(json)\n            }\n            .observe(on: `$`.mainScheduler)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/WikipediaAPI/WikipediaPage.swift",
    "content": "//\n//  WikipediaPage.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nimport Foundation\n\nstruct WikipediaPage {\n    let title: String\n    let text: String\n\n    // tedious parsing part\n    static func parseJSON(_ json: NSDictionary) throws -> WikipediaPage {\n        guard\n            let parse = json.value(forKey: \"parse\"),\n            let title = (parse as AnyObject).value(forKey: \"title\") as? String,\n            let t = (parse as AnyObject).value(forKey: \"text\"),\n            let text = (t as AnyObject).value(forKey: \"*\") as? String\n        else {\n            throw apiError(\"Error parsing page content\")\n        }\n\n        return WikipediaPage(title: title, text: text)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/WikipediaAPI/WikipediaSearchResult.swift",
    "content": "//\n//  WikipediaSearchResult.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nimport Foundation\n\nstruct WikipediaSearchResult: CustomDebugStringConvertible {\n    let title: String\n    let description: String\n    let URL: Foundation.URL\n\n    // tedious parsing part\n    static func parseJSON(_ json: [AnyObject]) throws -> [WikipediaSearchResult] {\n        let rootArrayTyped = json.compactMap { $0 as? [AnyObject] }\n\n        guard rootArrayTyped.count == 3 else {\n            throw WikipediaParseError\n        }\n\n        let (titles, descriptions, urls) = (rootArrayTyped[0], rootArrayTyped[1], rootArrayTyped[2])\n\n        let titleDescriptionAndUrl: [((AnyObject, AnyObject), AnyObject)] = Array(zip(zip(titles, descriptions), urls))\n\n        return try titleDescriptionAndUrl.map { result -> WikipediaSearchResult in\n            let ((title, description), url) = result\n\n            guard let titleString = title as? String,\n                  let descriptionString = description as? String,\n                  let urlString = url as? String,\n                  let URL = Foundation.URL(string: urlString)\n            else {\n                throw WikipediaParseError\n            }\n\n            return WikipediaSearchResult(title: titleString, description: descriptionString, URL: URL)\n        }\n    }\n}\n\nextension WikipediaSearchResult {\n    var debugDescription: String {\n        \"[\\(title)](\\(URL))\"\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Examples/WikipediaImageSearch/WikipediaSearch.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"Iwo-im-m6d\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"11524\"/>\n        <capability name=\"Constraints to layout margins\" minToolsVersion=\"6.0\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Search Wikipedia-->\n        <scene sceneID=\"W3v-Hb-gUk\">\n            <objects>\n                <viewController id=\"Iwo-im-m6d\" customClass=\"WikipediaSearchViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <layoutGuides>\n                        <viewControllerLayoutGuide type=\"top\" id=\"5dr-42-uib\"/>\n                        <viewControllerLayoutGuide type=\"bottom\" id=\"qRP-g3-i5K\"/>\n                    </layoutGuides>\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"rhi-Gj-NG4\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"64\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <subviews>\n                            <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"prototypes\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"SQ0-zH-6mv\">\n                                <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"603\"/>\n                                <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                <searchBar key=\"tableHeaderView\" contentMode=\"redraw\" misplaced=\"YES\" id=\"7Fb-Cu-tfn\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" flexibleMaxY=\"YES\"/>\n                                    <textInputTraits key=\"textInputTraits\"/>\n                                </searchBar>\n                            </tableView>\n                            <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"8\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"FeZ-zt-ZeK\">\n                                <rect key=\"frame\" x=\"29\" y=\"188.5\" width=\"318\" height=\"125.5\"/>\n                                <string key=\"text\">This app transforms Wikipedia into image search engine.\nIt uses Wikipedia search API to find content and scrapes the HTML of those pages for image URLs.\nThis is only showcase app, not intended for production purposes.</string>\n                                <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                <color key=\"textColor\" red=\"0.33333333333333331\" green=\"0.33333333333333331\" blue=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                <nil key=\"highlightedColor\"/>\n                            </label>\n                        </subviews>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <constraints>\n                            <constraint firstItem=\"FeZ-zt-ZeK\" firstAttribute=\"leading\" secondItem=\"rhi-Gj-NG4\" secondAttribute=\"leadingMargin\" constant=\"13\" id=\"MSu-fp-qv1\"/>\n                            <constraint firstItem=\"qRP-g3-i5K\" firstAttribute=\"top\" secondItem=\"SQ0-zH-6mv\" secondAttribute=\"bottom\" id=\"MfI-jt-Ji9\"/>\n                            <constraint firstAttribute=\"centerX\" secondItem=\"FeZ-zt-ZeK\" secondAttribute=\"centerX\" constant=\"-0.5\" id=\"UXX-0S-lap\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"SQ0-zH-6mv\" secondAttribute=\"trailing\" id=\"WHV-8Y-hRz\"/>\n                            <constraint firstItem=\"SQ0-zH-6mv\" firstAttribute=\"leading\" secondItem=\"rhi-Gj-NG4\" secondAttribute=\"leading\" id=\"Wh1-UD-KQJ\"/>\n                            <constraint firstAttribute=\"trailingMargin\" secondItem=\"FeZ-zt-ZeK\" secondAttribute=\"trailing\" constant=\"12\" id=\"ahS-rn-Gm5\"/>\n                            <constraint firstAttribute=\"centerY\" secondItem=\"FeZ-zt-ZeK\" secondAttribute=\"centerY\" multiplier=\"1.2\" id=\"d4B-SW-gN2\"/>\n                            <constraint firstItem=\"SQ0-zH-6mv\" firstAttribute=\"top\" secondItem=\"5dr-42-uib\" secondAttribute=\"bottom\" id=\"dPW-uH-cgE\"/>\n                        </constraints>\n                    </view>\n                    <navigationItem key=\"navigationItem\" title=\"Search Wikipedia\" id=\"QNG-ow-NDA\"/>\n                    <simulatedNavigationBarMetrics key=\"simulatedTopBarMetrics\" translucent=\"NO\" prompted=\"NO\"/>\n                    <connections>\n                        <outlet property=\"emptyView\" destination=\"FeZ-zt-ZeK\" id=\"uq0-id-3P3\"/>\n                        <outlet property=\"resultsTableView\" destination=\"SQ0-zH-6mv\" id=\"9v7-Yp-Gkn\"/>\n                        <outlet property=\"searchBar\" destination=\"7Fb-Cu-tfn\" id=\"UDO-sp-KZa\"/>\n                    </connections>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"mQm-27-dBN\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"520.5\" y=\"1742.5\"/>\n        </scene>\n    </scenes>\n    <simulatedMetricsContainer key=\"defaultSimulatedMetrics\">\n        <simulatedStatusBarMetrics key=\"statusBar\"/>\n        <simulatedOrientationMetrics key=\"orientation\"/>\n        <simulatedScreenMetrics key=\"destination\" type=\"retina4_7.fullscreen\"/>\n    </simulatedMetricsContainer>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/Examples/macOS simple example/IntroductionExampleViewController.swift",
    "content": "//\n//  IntroductionExampleViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 5/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport AppKit\nimport Cocoa\nimport RxCocoa\nimport RxSwift\n\nclass IntroductionExampleViewController: ViewController {\n    @IBOutlet var a: NSTextField!\n    @IBOutlet var b: NSTextField!\n    @IBOutlet var c: NSTextField!\n\n    @IBOutlet var leftTextView: NSTextView!\n    @IBOutlet var rightTextView: NSTextView!\n    @IBOutlet var speechEnabled: NSButton!\n    @IBOutlet var slider: NSSlider!\n    @IBOutlet var sliderValue: NSTextField!\n\n    @IBOutlet var disposeButton: NSButton!\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        // c = a + b\n        let sum = Observable.combineLatest(a.rx.text.orEmpty, b.rx.text.orEmpty) { (a: String, b: String) -> (a: Int, b: Int) in\n            return (Int(a) ?? 0, Int(b) ?? 0)\n        }\n\n        // bind result to UI\n        sum\n            .map { pair in\n                \"\\(pair.a + pair.b)\"\n            }\n            .bind(to: c.rx.text)\n            .disposed(by: disposeBag)\n\n        // Also, tell it out loud\n        let speech = NSSpeechSynthesizer()\n\n        Observable.combineLatest(sum, speechEnabled.rx.state) { (operands: $0, state: $1) }\n            .flatMapLatest { pair -> Observable<String> in\n                let (a, b) = pair.operands\n                if pair.state == NSControl.StateValue.off {\n                    return .empty()\n                }\n\n                return .just(\"\\(a) + \\(b) = \\(a + b)\")\n            }\n            .subscribe(onNext: { result in\n                if speech.isSpeaking {\n                    speech.stopSpeaking()\n                }\n\n                speech.startSpeaking(result)\n            })\n            .disposed(by: disposeBag)\n\n        slider.rx.value\n            .subscribe(onNext: { value in\n                self.sliderValue.stringValue = \"\\(Int(value))\"\n            })\n            .disposed(by: disposeBag)\n\n        sliderValue.rx.text.orEmpty\n            .subscribe(onNext: { value in\n                let doubleValue = value.toDouble() ?? 0.0\n                self.slider.doubleValue = doubleValue\n                self.sliderValue.stringValue = \"\\(Int(doubleValue))\"\n            })\n            .disposed(by: disposeBag)\n\n        // Synchronize text in two different textviews.\n        let textViewValue = BehaviorRelay(value: \"System Truth\")\n\n        _ = leftTextView.rx.string <-> textViewValue\n        _ = rightTextView.rx.string <-> textViewValue\n        textViewValue.asObservable()\n            .subscribe(onNext: { value in\n                print(\"Text: \\(value)\")\n            })\n            .disposed(by: disposeBag)\n\n        disposeButton.rx.tap\n            .subscribe(onNext: { [weak self] _ in\n                print(\"Unbind everything\")\n                self?.disposeBag = DisposeBag()\n            })\n            .disposed(by: disposeBag)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Feedbacks.swift",
    "content": "//\n//  Feedbacks.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 5/1/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\n// Taken from RxFeedback repo\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter areEqual: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Query?,\n    areEqual: @escaping (Query, Query) -> Bool,\n    effects: @escaping (Query) -> Observable<Event>\n) -> (ObservableSchedulerContext<State>) -> Observable<Event> {\n    { state in\n        state.map(query)\n            .distinctUntilChanged { lhs, rhs in\n                switch (lhs, rhs) {\n                case (.none, .none): true\n                case (.none, .some): false\n                case (.some, .none): false\n                case let (.some(lhs), .some(rhs)): areEqual(lhs, rhs)\n                }\n            }\n            .flatMapLatest { (control: Query?) -> Observable<Event> in\n                guard let control else {\n                    return Observable<Event>.empty()\n                }\n\n                return effects(control)\n                    .enqueue(state.scheduler)\n            }\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query: Equatable, Event>(\n    query: @escaping (State) -> Query?,\n    effects: @escaping (Query) -> Observable<Event>\n) -> (ObservableSchedulerContext<State>) -> Observable<Event> {\n    react(query: query, areEqual: { $0 == $1 }, effects: effects)\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter areEqual: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Query?,\n    areEqual: @escaping (Query, Query) -> Bool,\n    effects: @escaping (Query) -> Signal<Event>\n) -> (Driver<State>) -> Signal<Event> {\n    { state in\n        let observableSchedulerContext = ObservableSchedulerContext<State>(\n            source: state.asObservable(),\n            scheduler: Signal<Event>.SharingStrategy.scheduler.async\n        )\n        return react(query: query, areEqual: areEqual, effects: { effects($0).asObservable() })(observableSchedulerContext)\n            .asSignal(onErrorSignalWith: .empty())\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query: Equatable, Event>(\n    query: @escaping (State) -> Query?,\n    effects: @escaping (Query) -> Signal<Event>\n) -> (Driver<State>) -> Signal<Event> {\n    { state in\n        let observableSchedulerContext = ObservableSchedulerContext<State>(\n            source: state.asObservable(),\n            scheduler: Signal<Event>.SharingStrategy.scheduler.async\n        )\n        return react(query: query, effects: { effects($0).asObservable() })(observableSchedulerContext)\n            .asSignal(onErrorSignalWith: .empty())\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Query?,\n    effects: @escaping (Query) -> Observable<Event>\n) -> (ObservableSchedulerContext<State>) -> Observable<Event> {\n    { state in\n        state.map(query)\n            .distinctUntilChanged { $0 != nil }\n            .flatMapLatest { (control: Query?) -> Observable<Event> in\n                guard let control else {\n                    return Observable<Event>.empty()\n                }\n\n                return effects(control)\n                    .enqueue(state.scheduler)\n            }\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns a value, that value is being passed into `effects` lambda to decide which effects should be performed.\n In case new `query` is different from the previous one, new effects are calculated by using `effects` lambda and then performed.\n\n When `query` returns `nil`, feedback loops doesn't perform any effect.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query result.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Query?,\n    effects: @escaping (Query) -> Signal<Event>\n) -> (Driver<State>) -> Signal<Event> {\n    { state in\n        let observableSchedulerContext = ObservableSchedulerContext<State>(\n            source: state.asObservable(),\n            scheduler: Signal<Event>.SharingStrategy.scheduler.async\n        )\n        return react(query: query, effects: { effects($0).asObservable() })(observableSchedulerContext)\n            .asSignal(onErrorSignalWith: .empty())\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns some set of values, each value is being passed into `effects` lambda to decide which effects should be performed.\n\n * Effects are not interrupted for elements in the new `query` that were present in the `old` query.\n * Effects are cancelled for elements present in `old` query but not in `new` query.\n * In case new elements are present in `new` query (and not in `old` query) they are being passed to the `effects` lambda and resulting effects are being performed.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query element.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Set<Query>,\n    effects: @escaping (Query) -> Observable<Event>\n) -> (ObservableSchedulerContext<State>) -> Observable<Event> {\n    { state in\n        let query = state.map(query)\n            .share(replay: 1)\n\n        let newQueries = Observable.zip(query, query.startWith(Set())) { $0.subtracting($1) }\n        let asyncScheduler = state.scheduler.async\n\n        return newQueries.flatMap { controls in\n            Observable<Event>.merge(controls.map { control -> Observable<Event> in\n                return effects(control)\n                    .enqueue(state.scheduler)\n                    .takeUntilWithCompletedAsync(query.filter { !$0.contains(control) }, scheduler: asyncScheduler)\n            })\n        }\n    }\n}\n\nprivate extension ObservableType {\n    // This is important to avoid reentrancy issues. Completed event is only used for cleanup\n    func takeUntilWithCompletedAsync(_ other: Observable<some Any>, scheduler: ImmediateSchedulerType) -> Observable<Element> {\n        // this little piggy will delay completed event\n        let completeAsSoonAsPossible = Observable<Element>.empty().observe(on: scheduler)\n        return other\n            .take(1)\n            .map { _ in completeAsSoonAsPossible }\n            // this little piggy will ensure self is being run first\n            .startWith(asObservable())\n            // this little piggy will ensure that new events are being blocked immediately\n            .switchLatest()\n    }\n}\n\n/**\n * State: State type of the system.\n * Query: Subset of state used to control the feedback loop.\n\n When `query` returns some set of values, each value is being passed into `effects` lambda to decide which effects should be performed.\n\n * Effects are not interrupted for elements in the new `query` that were present in the `old` query.\n * Effects are cancelled for elements present in `old` query but not in `new` query.\n * In case new elements are present in `new` query (and not in `old` query) they are being passed to the `effects` lambda and resulting effects are being performed.\n\n - parameter query: Part of state that controls feedback loop.\n - parameter effects: Chooses which effects to perform for certain query element.\n - returns: Feedback loop performing the effects.\n */\npublic func react<State, Query, Event>(\n    query: @escaping (State) -> Set<Query>,\n    effects: @escaping (Query) -> Signal<Event>\n) -> (Driver<State>) -> Signal<Event> {\n    { (state: Driver<State>) -> Signal<Event> in\n        let observableSchedulerContext = ObservableSchedulerContext<State>(\n            source: state.asObservable(),\n            scheduler: Signal<Event>.SharingStrategy.scheduler.async\n        )\n        return react(query: query, effects: { effects($0).asObservable() })(observableSchedulerContext)\n            .asSignal(onErrorSignalWith: .empty())\n    }\n}\n\nprivate extension Observable {\n    func enqueue(_ scheduler: ImmediateSchedulerType) -> Observable<Element> {\n        self\n            // observe on is here because results should be cancelable\n            .observe(on: scheduler.async)\n            // subscribe on is here because side-effects also need to be cancelable\n            // (smooths out any glitches caused by start-cancel immediately)\n            .subscribe(on: scheduler.async)\n    }\n}\n\n/**\n Contains subscriptions and events.\n - `subscriptions` map a system state to UI presentation.\n - `events` map events from UI to events of a given system.\n */\npublic class Bindings<Event>: Disposable {\n    private let subscriptions: [Disposable]\n    fileprivate let events: [Observable<Event>]\n\n    /**\n     - parameters:\n     - subscriptions: mappings of a system state to UI presentation.\n     - events: mappings of events from UI to events of a given system\n     */\n    public init(subscriptions: [Disposable], events: [Observable<Event>]) {\n        self.subscriptions = subscriptions\n        self.events = events\n    }\n\n    /**\n     - parameters:\n     - subscriptions: mappings of a system state to UI presentation.\n     - events: mappings of events from UI to events of a given system\n     */\n    public init(subscriptions: [Disposable], events: [Signal<Event>]) {\n        self.subscriptions = subscriptions\n        self.events = events.map { $0.asObservable() }\n    }\n\n    public func dispose() {\n        for subscription in subscriptions {\n            subscription.dispose()\n        }\n    }\n}\n\n/**\n Bi-directional binding of a system State to external state machine and events from it.\n */\npublic func bind<State, Event>(_ bindings: @escaping (ObservableSchedulerContext<State>) -> (Bindings<Event>)) -> (ObservableSchedulerContext<State>) -> Observable<Event> {\n    { (state: ObservableSchedulerContext<State>) -> Observable<Event> in\n        return Observable<Event>.using { () -> Bindings<Event> in\n            return bindings(state)\n        } observableFactory: { (bindings: Bindings<Event>) -> Observable<Event> in\n            return Observable<Event>.merge(bindings.events)\n                .enqueue(state.scheduler)\n        }\n    }\n}\n\n/**\n Bi-directional binding of a system State to external state machine and events from it.\n Strongify owner.\n */\npublic func bind<State, Event, WeakOwner>(_ owner: WeakOwner, _ bindings: @escaping (WeakOwner, ObservableSchedulerContext<State>) -> (Bindings<Event>))\n    -> (ObservableSchedulerContext<State>) -> Observable<Event> where WeakOwner: AnyObject\n{\n    bind(bindingsStrongify(owner, bindings))\n}\n\n/**\n Bi-directional binding of a system State to external state machine and events from it.\n */\npublic func bind<State, Event>(_ bindings: @escaping (Driver<State>) -> (Bindings<Event>)) -> (Driver<State>) -> Signal<Event> {\n    { (state: Driver<State>) -> Signal<Event> in\n        return Observable<Event>.using { () -> Bindings<Event> in\n            return bindings(state)\n        } observableFactory: { (bindings: Bindings<Event>) -> Observable<Event> in\n            return Observable<Event>.merge(bindings.events)\n        }\n        .enqueue(Signal<Event>.SharingStrategy.scheduler)\n        .asSignal(onErrorSignalWith: .empty())\n    }\n}\n\n/**\n Bi-directional binding of a system State to external state machine and events from it.\n Strongify owner.\n */\npublic func bind<State, Event, WeakOwner>(_ owner: WeakOwner, _ bindings: @escaping (WeakOwner, Driver<State>) -> (Bindings<Event>))\n    -> (Driver<State>) -> Signal<Event> where WeakOwner: AnyObject\n{\n    bind(bindingsStrongify(owner, bindings))\n}\n\nprivate func bindingsStrongify<Event, O, WeakOwner>(_ owner: WeakOwner, _ bindings: @escaping (WeakOwner, O) -> (Bindings<Event>))\n    -> (O) -> (Bindings<Event>) where WeakOwner: AnyObject\n{\n    { [weak owner] state -> Bindings<Event> in\n        guard let strongOwner = owner else {\n            return Bindings(subscriptions: [], events: [Observable<Event>]())\n        }\n        return bindings(strongOwner, state)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Images.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-Small@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-40@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-60@2x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"57x57\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"57x57\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-60@2x-1.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"60x60\",\n      \"idiom\" : \"iphone\",\n      \"filename\" : \"Icon-60@3x.png\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-Small.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-40.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-40@2x-1.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"50x50\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"50x50\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"72x72\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"72x72\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-76.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"76x76\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Icon-76@2x.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"83.5x83.5\",\n      \"idiom\" : \"ipad\",\n      \"filename\" : \"Rx_Logo-iPad.png\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"1024x1024\",\n      \"idiom\" : \"ios-marketing\",\n      \"filename\" : \"Rx_Logo_L.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"size\" : \"24x24\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"notificationCenter\",\n      \"subtype\" : \"38mm\"\n    },\n    {\n      \"size\" : \"27.5x27.5\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"notificationCenter\",\n      \"subtype\" : \"42mm\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"watch\",\n      \"filename\" : \"Icon-Small@2x-1.png\",\n      \"role\" : \"companionSettings\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"29x29\",\n      \"idiom\" : \"watch\",\n      \"role\" : \"companionSettings\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"size\" : \"40x40\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"appLauncher\",\n      \"subtype\" : \"38mm\"\n    },\n    {\n      \"size\" : \"44x44\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"appLauncher\",\n      \"subtype\" : \"40mm\"\n    },\n    {\n      \"size\" : \"50x50\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"appLauncher\",\n      \"subtype\" : \"44mm\"\n    },\n    {\n      \"size\" : \"86x86\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"quickLook\",\n      \"subtype\" : \"38mm\"\n    },\n    {\n      \"size\" : \"98x98\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"quickLook\",\n      \"subtype\" : \"42mm\"\n    },\n    {\n      \"size\" : \"108x108\",\n      \"idiom\" : \"watch\",\n      \"scale\" : \"2x\",\n      \"role\" : \"quickLook\",\n      \"subtype\" : \"44mm\"\n    },\n    {\n      \"idiom\" : \"watch-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"16x16\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"32x32\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"32x32\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"128x128\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"128x128\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"256x256\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"256x256\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"size\" : \"512x512\",\n      \"idiom\" : \"mac\",\n      \"filename\" : \"Rx_Logo_M.png\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"mac\",\n      \"size\" : \"512x512\",\n      \"scale\" : \"2x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "RxExample/RxExample/Images.xcassets/ReactiveExtensionsLogo.imageset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"2x\",\n      \"filename\" : \"ReactiveExtensionsLogo.png\"\n    },\n    {\n      \"idiom\" : \"universal\",\n      \"scale\" : \"3x\",\n      \"filename\" : \"ReactiveExtensionsLogo-2.png\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "RxExample/RxExample/Info-iOS.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>UIUserInterfaceStyle</key>\n\t<string>Light</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>NSAppTransportSecurity</key>\n\t<dict>\n\t\t<key>NSAllowsArbitraryLoads</key>\n\t\t<true/>\n\t</dict>\n\t<key>NSCameraUsageDescription</key>\n\t<string>We need camera</string>\n\t<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>\n\t<string>We need location</string>\n\t<key>NSLocationAlwaysUsageDescription</key>\n\t<string>We need location</string>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string>We need location</string>\n\t<key>NSPhotoLibraryUsageDescription</key>\n\t<string>We need photo library</string>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample/Info-macOS.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>NSMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample/Lenses.swift",
    "content": "//\n//  Lenses.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 5/20/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n// These are kind of \"Swift\" lenses. We don't need to generate a lot of code this way and can just use Swift `var`.\nprotocol Mutable {}\n\nextension Mutable {\n    func mutateOne(transform: (inout Self) -> some Any) -> Self {\n        var newSelf = self\n        _ = transform(&newSelf)\n        return newSelf\n    }\n\n    func mutate(transform: (inout Self) -> Void) -> Self {\n        var newSelf = self\n        transform(&newSelf)\n        return newSelf\n    }\n\n    func mutate(transform: (inout Self) throws -> Void) rethrows -> Self {\n        var newSelf = self\n        try transform(&newSelf)\n        return newSelf\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Observable+Extensions.swift",
    "content": "//\n//  Observable+Extensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/14/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\n// taken from RxFeedback repo\n\npublic extension ObservableType where Element == Any {\n    /// Feedback loop\n    typealias Feedback<State, Event> = (ObservableSchedulerContext<State>) -> Observable<Event>\n    typealias FeedbackLoop = Feedback\n\n    /**\n     System simulation will be started upon subscription and stopped after subscription is disposed.\n\n     System state is represented as a `State` parameter.\n     Events are represented by `Event` parameter.\n\n     - parameter initialState: Initial state of the system.\n     - parameter reduce: Calculates new system state from existing state and a transition event (system integrator, reducer).\n     - parameter scheduler: Scheduler on which observable sequence receives elements\n     - parameter scheduledFeedback: Feedback loops that produce events depending on current system state.\n     - returns: Current state of the system.\n     */\n    static func system<State, Event>(\n        initialState: State,\n        reduce: @escaping (State, Event) -> State,\n        scheduler: ImmediateSchedulerType,\n        scheduledFeedback: [Feedback<State, Event>]\n    ) -> Observable<State> {\n        Observable<State>.deferred {\n            let replaySubject = ReplaySubject<State>.create(bufferSize: 1)\n\n            let asyncScheduler = scheduler.async\n\n            let events: Observable<Event> = Observable.merge(scheduledFeedback.map { feedback in\n                let state = ObservableSchedulerContext(source: replaySubject.asObservable(), scheduler: asyncScheduler)\n                return feedback(state)\n            })\n            // This is protection from accidental ignoring of scheduler so\n            // reentracy errors can be avoided\n            .observe(on: CurrentThreadScheduler.instance)\n\n            return events.scan(initialState, accumulator: reduce)\n                .do(onNext: { output in\n                    replaySubject.onNext(output)\n                }, onSubscribed: {\n                    replaySubject.onNext(initialState)\n                })\n                .subscribe(on: scheduler)\n                .startWith(initialState)\n                .observe(on: scheduler)\n        }\n    }\n\n    static func system<State, Event>(\n        initialState: State,\n        reduce: @escaping (State, Event) -> State,\n        scheduler: ImmediateSchedulerType,\n        scheduledFeedback: Feedback<State, Event>...\n    ) -> Observable<State> {\n        system(initialState: initialState, reduce: reduce, scheduler: scheduler, scheduledFeedback: scheduledFeedback)\n    }\n}\n\npublic extension SharedSequenceConvertibleType where Element == Any, SharingStrategy == DriverSharingStrategy {\n    /// Feedback loop\n    typealias Feedback<State, Event> = (Driver<State>) -> Signal<Event>\n\n    /**\n     System simulation will be started upon subscription and stopped after subscription is disposed.\n\n     System state is represented as a `State` parameter.\n     Events are represented by `Event` parameter.\n\n     - parameter initialState: Initial state of the system.\n     - parameter reduce: Calculates new system state from existing state and a transition event (system integrator, reducer).\n     - parameter feedback: Feedback loops that produce events depending on current system state.\n     - returns: Current state of the system.\n     */\n    static func system<State, Event>(\n        initialState: State,\n        reduce: @escaping (State, Event) -> State,\n        feedback: [Feedback<State, Event>]\n    ) -> Driver<State> {\n        let observableFeedbacks: [(ObservableSchedulerContext<State>) -> Observable<Event>] = feedback.map { feedback in\n            { sharedSequence in\n                feedback(sharedSequence.source.asDriver(onErrorDriveWith: Driver<State>.empty()))\n                    .asObservable()\n            }\n        }\n\n        return Observable<Any>.system(\n            initialState: initialState,\n            reduce: reduce,\n            scheduler: SharingStrategy.scheduler,\n            scheduledFeedback: observableFeedbacks\n        )\n        .asDriver(onErrorDriveWith: .empty())\n    }\n\n    static func system<State, Event>(\n        initialState: State,\n        reduce: @escaping (State, Event) -> State,\n        feedback: Feedback<State, Event>...\n    ) -> Driver<State> {\n        system(initialState: initialState, reduce: reduce, feedback: feedback)\n    }\n}\n\nextension ImmediateSchedulerType {\n    var async: ImmediateSchedulerType {\n        // This is a hack because of reentrancy. We need to make sure events are being sent async.\n        // In case MainScheduler is being used MainScheduler.asyncInstance is used to make sure state is modified async.\n        // If there is some unknown scheduler instance (like TestScheduler), just use it.\n        (self as? MainScheduler).map { _ in MainScheduler.asyncInstance } ?? self\n    }\n}\n\n/// Tuple of observable sequence and corresponding scheduler context on which that observable\n/// sequence receives elements.\npublic struct ObservableSchedulerContext<Element>: ObservableType {\n    public typealias Element = Element\n\n    /// Source observable sequence\n    public let source: Observable<Element>\n\n    /// Scheduler on which observable sequence receives elements\n    public let scheduler: ImmediateSchedulerType\n\n    /// Initializes self with source observable sequence and scheduler\n    ///\n    /// - parameter source: Source observable sequence.\n    /// - parameter scheduler: Scheduler on which source observable sequence receives elements.\n    public init(source: Observable<Element>, scheduler: ImmediateSchedulerType) {\n        self.source = source\n        self.scheduler = scheduler\n    }\n\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        source.subscribe(observer)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Operators.swift",
    "content": "//\n//  Operators.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport AppKit\n#endif\n\n// Two way binding operator between control property and relay, that's all it takes.\n\ninfix operator <->: DefaultPrecedence\n\n#if os(iOS)\nfunc nonMarkedText(_ textInput: UITextInput) -> String? {\n    let start = textInput.beginningOfDocument\n    let end = textInput.endOfDocument\n\n    guard let rangeAll = textInput.textRange(from: start, to: end),\n          let text = textInput.text(in: rangeAll)\n    else {\n        return nil\n    }\n\n    guard let markedTextRange = textInput.markedTextRange else {\n        return text\n    }\n\n    guard let startRange = textInput.textRange(from: start, to: markedTextRange.start),\n          let endRange = textInput.textRange(from: markedTextRange.end, to: end)\n    else {\n        return text\n    }\n\n    return (textInput.text(in: startRange) ?? \"\") + (textInput.text(in: endRange) ?? \"\")\n}\n\nfunc <-> (textInput: TextInput<some Any>, relay: BehaviorRelay<String>) -> Disposable {\n    let bindToUIDisposable = relay.bind(to: textInput.text)\n\n    let bindToRelay = textInput.text\n        .subscribe(onNext: { [weak base = textInput.base] _ in\n            guard let base else {\n                return\n            }\n\n            let nonMarkedTextValue = nonMarkedText(base)\n\n            /**\n             In some cases `textInput.textRangeFromPosition(start, toPosition: end)` will return nil even though the underlying\n             value is not nil. This appears to be an Apple bug. If it's not, and we are doing something wrong, please let us know.\n             The can be reproduced easily if replace bottom code with\n\n             if nonMarkedTextValue != relay.value {\n                relay.accept(nonMarkedTextValue ?? \"\")\n             }\n\n             and you hit \"Done\" button on keyboard.\n             */\n            if let nonMarkedTextValue, nonMarkedTextValue != relay.value {\n                relay.accept(nonMarkedTextValue)\n            }\n        }, onCompleted: {\n            bindToUIDisposable.dispose()\n        })\n\n    return Disposables.create(bindToUIDisposable, bindToRelay)\n}\n#endif\n\nfunc <-> <T>(property: ControlProperty<T>, relay: BehaviorRelay<T>) -> Disposable {\n    if T.self == String.self {\n        #if DEBUG && !os(macOS)\n        fatalError(\n            \"It is ok to delete this message, but this is here to warn that you are maybe trying to bind to some `rx.text` property directly to relay.\\n\" +\n                \"That will usually work ok, but for some languages that use IME, that simplistic method could cause unexpected issues because it will return intermediate results while text is being inputed.\\n\" +\n                \"REMEDY: Just use `textField <-> relay` instead of `textField.rx.text <-> relay`.\\n\" +\n                \"Find out more here: https://github.com/ReactiveX/RxSwift/issues/649\\n\"\n        )\n        #endif\n    }\n\n    let bindToUIDisposable = relay.bind(to: property)\n    let bindToRelay = property\n        .subscribe(onNext: { n in\n            relay.accept(n)\n        }, onCompleted: {\n            bindToUIDisposable.dispose()\n        })\n\n    return Disposables.create(bindToUIDisposable, bindToRelay)\n}\n"
  },
  {
    "path": "RxExample/RxExample/RxExample.xcdatamodeld/.xccurrentversion",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict/>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample/RxExample.xcdatamodeld/RxExample.xcdatamodel/contents",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<model name=\"Test1.xcdatamodel\" userDefinedModelVersionIdentifier=\"\" type=\"com.apple.IDECoreDataModeler.DataModel\" documentVersion=\"1.0\" lastSavedToolsVersion=\"1\" systemVersion=\"11A491\" minimumToolsVersion=\"Automatic\" macOSVersion=\"Automatic\" iOSVersion=\"Automatic\">\n    <elements/>\n</model>"
  },
  {
    "path": "RxExample/RxExample/Services/ActivityIndicator.swift",
    "content": "//\n//  ActivityIndicator.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 10/18/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\nprivate struct ActivityToken<E>: ObservableConvertibleType, Disposable {\n    private let _source: Observable<E>\n    private let _dispose: Cancelable\n\n    init(source: Observable<E>, disposeAction: @escaping () -> Void) {\n        _source = source\n        _dispose = Disposables.create(with: disposeAction)\n    }\n\n    func dispose() {\n        _dispose.dispose()\n    }\n\n    func asObservable() -> Observable<E> {\n        _source\n    }\n}\n\n/**\n Enables monitoring of sequence computation.\n\n If there is at least one sequence computation in progress, `true` will be sent.\n When all activities complete `false` will be sent.\n */\npublic class ActivityIndicator: SharedSequenceConvertibleType {\n    public typealias Element = Bool\n    public typealias SharingStrategy = DriverSharingStrategy\n\n    private let _lock = NSRecursiveLock()\n    private let _relay = BehaviorRelay(value: 0)\n    private let _loading: SharedSequence<SharingStrategy, Bool>\n\n    public init() {\n        _loading = _relay.asDriver()\n            .map { $0 > 0 }\n            .distinctUntilChanged()\n    }\n\n    fileprivate func trackActivityOfObservable<Source: ObservableConvertibleType>(_ source: Source) -> Observable<Source.Element> {\n        Observable.using({ () -> ActivityToken<Source.Element> in\n            self.increment()\n            return ActivityToken(source: source.asObservable(), disposeAction: self.decrement)\n        }) { t in\n            t.asObservable()\n        }\n    }\n\n    private func increment() {\n        _lock.lock()\n        _relay.accept(_relay.value + 1)\n        _lock.unlock()\n    }\n\n    private func decrement() {\n        _lock.lock()\n        _relay.accept(_relay.value - 1)\n        _lock.unlock()\n    }\n\n    public func asSharedSequence() -> SharedSequence<SharingStrategy, Element> {\n        _loading\n    }\n}\n\npublic extension ObservableConvertibleType {\n    func trackActivity(_ activityIndicator: ActivityIndicator) -> Observable<Element> {\n        activityIndicator.trackActivityOfObservable(self)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/DownloadableImage.swift",
    "content": "//\n//  DownloadableImage.swift\n//  RxExample\n//\n//  Created by Vodovozov Gleb on 10/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport Cocoa\n#endif\n\nenum DownloadableImage {\n    case content(image: Image)\n    case offlinePlaceholder\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/GeolocationService.swift",
    "content": "//\n//  GeolocationService.swift\n//  RxExample\n//\n//  Created by Carlos García on 19/01/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxSwift\n\nclass GeolocationService {\n    static let instance = GeolocationService()\n    private(set) var authorized: Driver<Bool>\n    private(set) var location: Driver<CLLocationCoordinate2D>\n\n    private let locationManager = CLLocationManager()\n\n    private init() {\n        locationManager.distanceFilter = kCLDistanceFilterNone\n        locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation\n\n        authorized = Observable.deferred { [weak locationManager] in\n            let status = CLLocationManager.authorizationStatus()\n            guard let locationManager else {\n                return Observable.just(status)\n            }\n            return locationManager\n                .rx.didChangeAuthorizationStatus\n                .startWith(status)\n        }\n        .asDriver(onErrorJustReturn: CLAuthorizationStatus.notDetermined)\n        .map {\n            switch $0 {\n            case .authorizedAlways:\n                true\n            case .authorizedWhenInUse:\n                true\n            default:\n                false\n            }\n        }\n\n        location = locationManager.rx.didUpdateLocations\n            .asDriver(onErrorJustReturn: [])\n            .flatMap {\n                $0.last.map(Driver.just) ?? Driver.empty()\n            }\n            .map(\\.coordinate)\n\n        locationManager.requestAlwaysAuthorization()\n        locationManager.startUpdatingLocation()\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/HtmlParsing.swift",
    "content": "//\n//  HtmlParsing.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nfunc parseImageURLsfromHTML(_ html: NSString) throws -> [URL] {\n    let regularExpression = try NSRegularExpression(pattern: \"<img[^>]*src=\\\"([^\\\"]+)\\\"[^>]*>\", options: [])\n\n    let matches = regularExpression.matches(in: html as String, options: [], range: NSMakeRange(0, html.length))\n\n    return matches.map { match -> URL? in\n        if match.numberOfRanges != 2 {\n            return nil\n        }\n\n        let url = html.substring(with: match.range(at: 1))\n\n        var absoluteURLString = url\n        if url.hasPrefix(\"//\") {\n            absoluteURLString = \"http:\" + url\n        }\n\n        return URL(string: absoluteURLString)\n    }.filter { $0 != nil }.map { $0! }\n}\n\nfunc parseImageURLsfromHTMLSuitableForDisplay(_ html: NSString) throws -> [URL] {\n    try parseImageURLsfromHTML(html).filter {\n        $0.absoluteString.range(of: \".svg.\") == nil\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/ImageService.swift",
    "content": "//\n//  ImageService.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\n\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport Cocoa\n#endif\n\nprotocol ImageService {\n    func imageFromURL(_ url: URL, reachabilityService: ReachabilityService) -> Observable<DownloadableImage>\n}\n\nclass DefaultImageService: ImageService {\n    static let sharedImageService = DefaultImageService() // Singleton\n\n    let `$`: Dependencies = .sharedDependencies\n\n    // 1st level cache\n    private let _imageCache = NSCache<AnyObject, AnyObject>()\n\n    // 2nd level cache\n    private let _imageDataCache = NSCache<AnyObject, AnyObject>()\n\n    let loadingImage = ActivityIndicator()\n\n    private init() {\n        // cost is approx memory usage\n        _imageDataCache.totalCostLimit = 10 * MB\n\n        _imageCache.countLimit = 20\n    }\n\n    private func decodeImage(_ imageData: Data) -> Observable<Image> {\n        Observable.just(imageData)\n            .observe(on: `$`.backgroundWorkScheduler)\n            .map { data in\n                guard let image = Image(data: data) else {\n                    // some error\n                    throw apiError(\"Decoding image error\")\n                }\n                return image.forceLazyImageDecompression()\n            }\n    }\n\n    private func _imageFromURL(_ url: URL) -> Observable<Image> {\n        Observable.deferred {\n            let maybeImage = self._imageCache.object(forKey: url as AnyObject) as? Image\n\n            let decodedImage: Observable<Image>\n\n            // best case scenario, it's already decoded an in memory\n            if let image = maybeImage {\n                decodedImage = Observable.just(image)\n            } else {\n                let cachedData = self._imageDataCache.object(forKey: url as AnyObject) as? Data\n\n                // does image data cache contain anything\n                if let cachedData {\n                    decodedImage = self.decodeImage(cachedData)\n                } else {\n                    // fetch from network\n                    decodedImage = self.`$`.URLSession.rx.data(request: URLRequest(url: url))\n                        .do(onNext: { data in\n                            self._imageDataCache.setObject(data as AnyObject, forKey: url as AnyObject)\n                        })\n                        .flatMap(self.decodeImage)\n                        .trackActivity(self.loadingImage)\n                }\n            }\n\n            return decodedImage.do(onNext: { image in\n                self._imageCache.setObject(image, forKey: url as AnyObject)\n            })\n        }\n    }\n\n    /**\n     Service that tries to download image from URL.\n\n     In case there were some problems with network connectivity and image wasn't downloaded, automatic retry will be fired when networks becomes\n     available.\n\n     After image is successfully downloaded, sequence is completed.\n     */\n    func imageFromURL(_ url: URL, reachabilityService: ReachabilityService) -> Observable<DownloadableImage> {\n        _imageFromURL(url)\n            .map { DownloadableImage.content(image: $0) }\n            .retryOnBecomesReachable(DownloadableImage.offlinePlaceholder, reachabilityService: reachabilityService)\n            .startWith(.content(image: Image()))\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/PseudoRandomGenerator.swift",
    "content": "//\n//  PseudoRandomGenerator.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 6/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// https://en.wikipedia.org/wiki/Random_number_generation\nclass PseudoRandomGenerator {\n    var m_w: UInt32 /* must not be zero, nor 0x464fffff */\n    var m_z: UInt32 /* must not be zero, nor 0x9068ffff */\n\n    init(_ m_w: UInt32, _ m_z: UInt32) {\n        self.m_w = m_w\n        self.m_z = m_z\n    }\n\n    func get_random() -> Int {\n        m_z = 36969 &* (m_z & 65535) &+ (m_z >> 16)\n        m_w = 18000 &* (m_w & 65535) &+ (m_w >> 16)\n        let val = ((m_z << 16) &+ m_w)\n        return Int(val % (1 << 30)) /* 32-bit result */\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/Randomizer.swift",
    "content": "//\n//  Randomizer.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 6/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\ntypealias NumberSection = AnimatableSectionModel<String, Int>\n\nlet insertItems = true\nlet deleteItems = true\nlet moveItems = true\nlet reloadItems = true\n\nlet deleteSections = true\nlet insertSections = true\nlet explicitlyMoveSections = true\nlet reloadSections = true\n\nclass Randomizer {\n    var sections: [NumberSection]\n\n    var rng: PseudoRandomGenerator\n\n    var unusedItems: [Int]\n    var unusedSections: [String]\n\n    init(rng: PseudoRandomGenerator, sections: [NumberSection]) {\n        self.rng = rng\n        self.sections = sections\n\n        unusedSections = []\n        unusedItems = []\n    }\n\n    func countTotalItemsInSections(_ sections: [NumberSection]) -> Int {\n        sections.reduce(0) { p, s in\n            p + s.items.count\n        }\n    }\n\n    func randomize() {\n        var nextUnusedSections = [String]()\n        var nextUnusedItems = [Int]()\n\n        let sectionCount = sections.count\n        let itemCount = countTotalItemsInSections(sections)\n\n        let startItemCount = itemCount + unusedItems.count\n        let startSectionCount = sections.count + unusedSections.count\n\n        // insert sections\n        for section in unusedSections {\n            let index = rng.get_random() % (sections.count + 1)\n            if insertSections {\n                sections.insert(NumberSection(model: section, items: []), at: index)\n            } else {\n                nextUnusedSections.append(section)\n            }\n        }\n\n        // insert/reload items\n        for unusedValue in unusedItems {\n            let sectionIndex = rng.get_random() % sections.count\n            let section = sections[sectionIndex]\n            let itemCount = section.items.count\n\n            // insert\n            if rng.get_random() % 2 == 0 {\n                let itemIndex = rng.get_random() % (itemCount + 1)\n                if insertItems {\n                    sections[sectionIndex].items.insert(unusedValue, at: itemIndex)\n                } else {\n                    nextUnusedItems.append(unusedValue)\n                }\n            }\n            // update\n            else {\n                if itemCount == 0 {\n                    sections[sectionIndex].items.insert(unusedValue, at: 0)\n                    continue\n                }\n\n                let itemIndex = rng.get_random() % itemCount\n                if reloadItems {\n                    nextUnusedItems.append(sections[sectionIndex].items.remove(at: itemIndex))\n                    sections[sectionIndex].items.insert(unusedValue, at: itemIndex)\n                } else {\n                    nextUnusedItems.append(unusedValue)\n                }\n            }\n        }\n\n        assert(countTotalItemsInSections(sections) + nextUnusedItems.count == startItemCount)\n        assert(sections.count + nextUnusedSections.count == startSectionCount)\n\n        let itemActionCount = itemCount / 7\n        let sectionActionCount = sectionCount / 3\n\n        // move items\n        for _ in 0 ..< itemActionCount {\n            if sections.count == 0 {\n                continue\n            }\n\n            let sourceSectionIndex = rng.get_random() % sections.count\n            let destinationSectionIndex = rng.get_random() % sections.count\n\n            let sectionItemCount = sections[sourceSectionIndex].items.count\n\n            if sectionItemCount == 0 {\n                continue\n            }\n\n            let sourceItemIndex = rng.get_random() % sectionItemCount\n\n            let nextRandom = rng.get_random()\n\n            if moveItems {\n                let item = sections[sourceSectionIndex].items.remove(at: sourceItemIndex)\n                let targetItemIndex = nextRandom % (sections[destinationSectionIndex].items.count + 1)\n                sections[destinationSectionIndex].items.insert(item, at: targetItemIndex)\n            }\n        }\n\n        assert(countTotalItemsInSections(sections) + nextUnusedItems.count == startItemCount)\n        assert(sections.count + nextUnusedSections.count == startSectionCount)\n\n        // delete items\n        for _ in 0 ..< itemActionCount {\n            if sections.count == 0 {\n                continue\n            }\n\n            let sourceSectionIndex = rng.get_random() % sections.count\n\n            let sectionItemCount = sections[sourceSectionIndex].items.count\n\n            if sectionItemCount == 0 {\n                continue\n            }\n\n            let sourceItemIndex = rng.get_random() % sectionItemCount\n\n            if deleteItems {\n                nextUnusedItems.append(sections[sourceSectionIndex].items.remove(at: sourceItemIndex))\n            }\n        }\n\n        assert(countTotalItemsInSections(sections) + nextUnusedItems.count == startItemCount)\n        assert(sections.count + nextUnusedSections.count == startSectionCount)\n\n        // move sections\n        for _ in 0 ..< sectionActionCount {\n            if sections.count == 0 {\n                continue\n            }\n\n            let sectionIndex = rng.get_random() % sections.count\n            let targetIndex = rng.get_random() % sections.count\n\n            if explicitlyMoveSections {\n                let section = sections.remove(at: sectionIndex)\n                sections.insert(section, at: targetIndex)\n            }\n        }\n\n        assert(countTotalItemsInSections(sections) + nextUnusedItems.count == startItemCount)\n        assert(sections.count + nextUnusedSections.count == startSectionCount)\n\n        // delete sections\n        for _ in 0 ..< sectionActionCount {\n            if sections.count == 0 {\n                continue\n            }\n\n            let sectionIndex = rng.get_random() % sections.count\n\n            if deleteSections {\n                let section = sections.remove(at: sectionIndex)\n\n                for item in section.items {\n                    nextUnusedItems.append(item)\n                }\n\n                nextUnusedSections.append(section.model)\n            }\n        }\n\n        assert(countTotalItemsInSections(sections) + nextUnusedItems.count == startItemCount)\n        assert(sections.count + nextUnusedSections.count == startSectionCount)\n\n        unusedSections = nextUnusedSections\n        unusedItems = nextUnusedItems\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/Reachability.swift",
    "content": "/*\n Copyright © 2014, Ashley Mills\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions are met:\n\n 1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n POSSIBILITY OF SUCH DAMAGE.\n */\n\nimport Foundation\nimport SystemConfiguration\n\npublic enum ReachabilityError: Error {\n    case failedToCreateWithAddress(sockaddr_in)\n    case failedToCreateWithHostname(String)\n    case unableToSetCallback\n    case unableToSetDispatchQueue\n}\n\npublic let ReachabilityChangedNotification = Notification.Name(\"ReachabilityChangedNotification\")\n\nfunc callback(reachability _: SCNetworkReachability, flags _: SCNetworkReachabilityFlags, info: UnsafeMutableRawPointer?) {\n    guard let info else { return }\n\n    let reachability = Unmanaged<Reachability>.fromOpaque(info).takeUnretainedValue()\n\n    DispatchQueue.main.async {\n        reachability.reachabilityChanged()\n    }\n}\n\npublic class Reachability {\n    public typealias NetworkReachable = (Reachability) -> Void\n    public typealias NetworkUnreachable = (Reachability) -> Void\n\n    public enum NetworkStatus: CustomStringConvertible {\n        case notReachable, reachableViaWiFi, reachableViaWWAN\n\n        public var description: String {\n            switch self {\n            case .reachableViaWWAN: \"Cellular\"\n            case .reachableViaWiFi: \"WiFi\"\n            case .notReachable: \"No Connection\"\n            }\n        }\n    }\n\n    public var whenReachable: NetworkReachable?\n    public var whenUnreachable: NetworkUnreachable?\n    public var reachableOnWWAN: Bool\n\n    // The notification center on which \"reachability changed\" events are being posted\n    public var notificationCenter: NotificationCenter = .default\n\n    public var currentReachabilityString: String {\n        \"\\(currentReachabilityStatus)\"\n    }\n\n    public var currentReachabilityStatus: NetworkStatus {\n        guard isReachable else { return .notReachable }\n\n        if isReachableViaWiFi {\n            return .reachableViaWiFi\n        }\n        if isRunningOnDevice {\n            return .reachableViaWWAN\n        }\n\n        return .notReachable\n    }\n\n    private var previousFlags: SCNetworkReachabilityFlags?\n\n    private var isRunningOnDevice: Bool = {\n        #if targetEnvironment(simulator)\n        return false\n        #else\n        return true\n        #endif\n    }()\n\n    private var notifierRunning = false\n    private var reachabilityRef: SCNetworkReachability?\n\n    private let reachabilitySerialQueue = DispatchQueue(label: \"uk.co.ashleymills.reachability\")\n\n    public required init(reachabilityRef: SCNetworkReachability) {\n        reachableOnWWAN = true\n        self.reachabilityRef = reachabilityRef\n    }\n\n    public convenience init?(hostname: String) {\n        guard let ref = SCNetworkReachabilityCreateWithName(nil, hostname) else { return nil }\n\n        self.init(reachabilityRef: ref)\n    }\n\n    public convenience init?() {\n        var zeroAddress = sockaddr()\n        zeroAddress.sa_len = UInt8(MemoryLayout<sockaddr>.size)\n        zeroAddress.sa_family = sa_family_t(AF_INET)\n\n        guard let ref: SCNetworkReachability = withUnsafePointer(to: &zeroAddress, {\n            SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))\n        }) else { return nil }\n\n        self.init(reachabilityRef: ref)\n    }\n\n    deinit {\n        stopNotifier()\n\n        reachabilityRef = nil\n        whenReachable = nil\n        whenUnreachable = nil\n    }\n}\n\npublic extension Reachability {\n    // MARK: - *** Notifier methods ***\n\n    func startNotifier() throws {\n        guard let reachabilityRef, !notifierRunning else { return }\n\n        var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil)\n        context.info = UnsafeMutableRawPointer(Unmanaged<Reachability>.passUnretained(self).toOpaque())\n        if !SCNetworkReachabilitySetCallback(reachabilityRef, callback, &context) {\n            stopNotifier()\n            throw ReachabilityError.unableToSetCallback\n        }\n\n        if !SCNetworkReachabilitySetDispatchQueue(reachabilityRef, reachabilitySerialQueue) {\n            stopNotifier()\n            throw ReachabilityError.unableToSetDispatchQueue\n        }\n\n        // Perform an initial check\n        reachabilitySerialQueue.async {\n            self.reachabilityChanged()\n        }\n\n        notifierRunning = true\n    }\n\n    func stopNotifier() {\n        defer { notifierRunning = false }\n        guard let reachabilityRef else { return }\n\n        SCNetworkReachabilitySetCallback(reachabilityRef, nil, nil)\n        SCNetworkReachabilitySetDispatchQueue(reachabilityRef, nil)\n    }\n\n    // MARK: - *** Connection test methods ***\n\n    var isReachable: Bool {\n        guard isReachableFlagSet else { return false }\n\n        if isConnectionRequiredAndTransientFlagSet {\n            return false\n        }\n\n        if isRunningOnDevice {\n            if isOnWWANFlagSet, !reachableOnWWAN {\n                // We don't want to connect when on 3G.\n                return false\n            }\n        }\n\n        return true\n    }\n\n    var isReachableViaWWAN: Bool {\n        // Check we're not on the simulator, we're REACHABLE and check we're on WWAN\n        isRunningOnDevice && isReachableFlagSet && isOnWWANFlagSet\n    }\n\n    var isReachableViaWiFi: Bool {\n        // Check we're reachable\n        guard isReachableFlagSet else { return false }\n\n        // If reachable we're reachable, but not on an iOS device (i.e. simulator), we must be on WiFi\n        guard isRunningOnDevice else { return true }\n\n        // Check we're NOT on WWAN\n        return !isOnWWANFlagSet\n    }\n\n    var description: String {\n        let W = isRunningOnDevice ? (isOnWWANFlagSet ? \"W\" : \"-\") : \"X\"\n        let R = isReachableFlagSet ? \"R\" : \"-\"\n        let c = isConnectionRequiredFlagSet ? \"c\" : \"-\"\n        let t = isTransientConnectionFlagSet ? \"t\" : \"-\"\n        let i = isInterventionRequiredFlagSet ? \"i\" : \"-\"\n        let C = isConnectionOnTrafficFlagSet ? \"C\" : \"-\"\n        let D = isConnectionOnDemandFlagSet ? \"D\" : \"-\"\n        let l = isLocalAddressFlagSet ? \"l\" : \"-\"\n        let d = isDirectFlagSet ? \"d\" : \"-\"\n\n        return \"\\(W)\\(R) \\(c)\\(t)\\(i)\\(C)\\(D)\\(l)\\(d)\"\n    }\n}\n\nprivate extension Reachability {\n    func reachabilityChanged() {\n        let flags = reachabilityFlags\n\n        guard previousFlags != flags else { return }\n\n        let block = isReachable ? whenReachable : whenUnreachable\n        block?(self)\n\n        notificationCenter.post(name: ReachabilityChangedNotification, object: self)\n\n        previousFlags = flags\n    }\n\n    var isOnWWANFlagSet: Bool {\n        #if os(iOS)\n        return reachabilityFlags.contains(.isWWAN)\n        #else\n        return false\n        #endif\n    }\n\n    var isReachableFlagSet: Bool {\n        reachabilityFlags.contains(.reachable)\n    }\n\n    var isConnectionRequiredFlagSet: Bool {\n        reachabilityFlags.contains(.connectionRequired)\n    }\n\n    var isInterventionRequiredFlagSet: Bool {\n        reachabilityFlags.contains(.interventionRequired)\n    }\n\n    var isConnectionOnTrafficFlagSet: Bool {\n        reachabilityFlags.contains(.connectionOnTraffic)\n    }\n\n    var isConnectionOnDemandFlagSet: Bool {\n        reachabilityFlags.contains(.connectionOnDemand)\n    }\n\n    var isConnectionOnTrafficOrDemandFlagSet: Bool {\n        !reachabilityFlags.intersection([.connectionOnTraffic, .connectionOnDemand]).isEmpty\n    }\n\n    var isTransientConnectionFlagSet: Bool {\n        reachabilityFlags.contains(.transientConnection)\n    }\n\n    var isLocalAddressFlagSet: Bool {\n        reachabilityFlags.contains(.isLocalAddress)\n    }\n\n    var isDirectFlagSet: Bool {\n        reachabilityFlags.contains(.isDirect)\n    }\n\n    var isConnectionRequiredAndTransientFlagSet: Bool {\n        reachabilityFlags.intersection([.connectionRequired, .transientConnection]) == [.connectionRequired, .transientConnection]\n    }\n\n    var reachabilityFlags: SCNetworkReachabilityFlags {\n        guard let reachabilityRef else { return SCNetworkReachabilityFlags() }\n\n        var flags = SCNetworkReachabilityFlags()\n        let gotFlags = withUnsafeMutablePointer(to: &flags) {\n            SCNetworkReachabilityGetFlags(reachabilityRef, UnsafeMutablePointer($0))\n        }\n\n        if gotFlags {\n            return flags\n        } else {\n            return SCNetworkReachabilityFlags()\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/ReachabilityService.swift",
    "content": "//\n//  ReachabilityService.swift\n//  RxExample\n//\n//  Created by Vodovozov Gleb on 10/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\n\npublic enum ReachabilityStatus {\n    case reachable(viaWiFi: Bool)\n    case unreachable\n}\n\nextension ReachabilityStatus {\n    var reachable: Bool {\n        switch self {\n        case .reachable:\n            true\n        case .unreachable:\n            false\n        }\n    }\n}\n\nprotocol ReachabilityService {\n    var reachability: Observable<ReachabilityStatus> { get }\n}\n\nenum ReachabilityServiceError: Error {\n    case failedToCreate\n}\n\nclass DefaultReachabilityService:\n    ReachabilityService\n{\n    private let _reachabilitySubject: BehaviorSubject<ReachabilityStatus>\n\n    var reachability: Observable<ReachabilityStatus> {\n        _reachabilitySubject.asObservable()\n    }\n\n    let _reachability: Reachability\n\n    init() throws {\n        guard let reachabilityRef = Reachability() else { throw ReachabilityServiceError.failedToCreate }\n        let reachabilitySubject = BehaviorSubject<ReachabilityStatus>(value: .unreachable)\n\n        // so main thread isn't blocked when reachability via WiFi is checked\n        let backgroundQueue = DispatchQueue(label: \"reachability.wificheck\")\n\n        reachabilityRef.whenReachable = { _ in\n            backgroundQueue.async {\n                reachabilitySubject.on(.next(.reachable(viaWiFi: reachabilityRef.isReachableViaWiFi)))\n            }\n        }\n\n        reachabilityRef.whenUnreachable = { _ in\n            backgroundQueue.async {\n                reachabilitySubject.on(.next(.unreachable))\n            }\n        }\n\n        try reachabilityRef.startNotifier()\n        _reachability = reachabilityRef\n        _reachabilitySubject = reachabilitySubject\n    }\n\n    deinit {\n        _reachability.stopNotifier()\n    }\n}\n\nextension ObservableConvertibleType {\n    func retryOnBecomesReachable(_ valueOnFailure: Element, reachabilityService: ReachabilityService) -> Observable<Element> {\n        asObservable()\n            .catch { e -> Observable<Element> in\n                reachabilityService.reachability\n                    .skip(1)\n                    .filter(\\.reachable)\n                    .flatMap { _ in\n                        Observable.error(e)\n                    }\n                    .startWith(valueOnFailure)\n            }\n            .retry()\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/UIImage+Extensions.swift",
    "content": "//\n//  UIImage+Extensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 11/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\nimport UIKit\n#endif\n\nextension Image {\n    func forceLazyImageDecompression() -> Image {\n        #if os(iOS)\n        UIGraphicsBeginImageContext(CGSize(width: 1, height: 1))\n        draw(at: CGPoint.zero)\n        UIGraphicsEndImageContext()\n        #endif\n        return self\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Services/UIImageView+DownloadableImage.swift",
    "content": "//\n//  UIImageView+DownloadableImage.swift\n//  RxExample\n//\n//  Created by Vodovozov Gleb on 11/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\nextension Reactive where Base: UIImageView {\n    var downloadableImage: Binder<DownloadableImage> {\n        downloadableImageAnimated(nil)\n    }\n\n    func downloadableImageAnimated(_: String?) -> Binder<DownloadableImage> {\n        Binder(base) { imageView, image in\n            for subview in imageView.subviews {\n                subview.removeFromSuperview()\n            }\n            switch image {\n            case let .content(image):\n                (imageView as UIImageView).rx.image.on(.next(image))\n            case .offlinePlaceholder:\n                let label = UILabel(frame: imageView.bounds)\n                label.textAlignment = .center\n                label.font = UIFont.systemFont(ofSize: 35)\n                label.text = \"⚠️\"\n                imageView.addSubview(label)\n            }\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxExample/RxExample/Services/Wireframe.swift",
    "content": "//\n//  Wireframe.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/3/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport Cocoa\n#endif\n\nenum RetryResult {\n    case retry\n    case cancel\n}\n\nprotocol Wireframe {\n    func open(url: URL)\n    func promptFor<Action: CustomStringConvertible>(_ message: String, cancelAction: Action, actions: [Action]) -> Observable<Action>\n}\n\nclass DefaultWireframe: Wireframe {\n    static let shared = DefaultWireframe()\n\n    func open(url: URL) {\n        #if os(iOS)\n        UIApplication.shared.open(url)\n        #elseif os(macOS)\n        NSWorkspace.shared.open(url)\n        #endif\n    }\n\n    #if os(iOS)\n    private static func rootViewController() -> UIViewController {\n        // cheating, I know\n        UIApplication.shared.keyWindow!.rootViewController!\n    }\n    #endif\n\n    static func presentAlert(_ message: String) {\n        #if os(iOS)\n        let alertView = UIAlertController(title: \"RxExample\", message: message, preferredStyle: .alert)\n        alertView.addAction(UIAlertAction(title: \"OK\", style: .cancel) { _ in\n        })\n        rootViewController().present(alertView, animated: true, completion: nil)\n        #endif\n    }\n\n    func promptFor<Action: CustomStringConvertible>(_ message: String, cancelAction: Action, actions: [Action]) -> Observable<Action> {\n        #if os(iOS)\n        return Observable.create { observer in\n            let alertView = UIAlertController(title: \"RxExample\", message: message, preferredStyle: .alert)\n            alertView.addAction(UIAlertAction(title: cancelAction.description, style: .cancel) { _ in\n                observer.on(.next(cancelAction))\n            })\n\n            for action in actions {\n                alertView.addAction(UIAlertAction(title: action.description, style: .default) { _ in\n                    observer.on(.next(action))\n                })\n            }\n\n            DefaultWireframe.rootViewController().present(alertView, animated: true, completion: nil)\n\n            return Disposables.create {\n                alertView.dismiss(animated: false, completion: nil)\n            }\n        }\n        #elseif os(macOS)\n        return Observable.error(NSError(domain: \"Unimplemented\", code: -1, userInfo: nil))\n        #endif\n    }\n}\n\nextension RetryResult: CustomStringConvertible {\n    var description: String {\n        switch self {\n        case .retry:\n            \"Retry\"\n        case .cancel:\n            \"Cancel\"\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/String+URL.swift",
    "content": "//\n//  String+URL.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nextension String {\n    var URLEscaped: String {\n        addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) ?? \"\"\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/Version.swift",
    "content": "//\n//  Version.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 5/20/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nclass Unique: NSObject {}\n\nstruct Version<Value>: Hashable {\n    private let _unique: Unique\n    let value: Value\n\n    init(_ value: Value) {\n        _unique = Unique()\n        self.value = value\n    }\n\n    func hash(into hasher: inout Hasher) {\n        hasher.combine(_unique)\n    }\n\n    static func == (lhs: Version<Value>, rhs: Version<Value>) -> Bool {\n        lhs._unique === rhs._unique\n    }\n}\n\nextension Version {\n    func mutate(transform: (inout Value) -> Void) -> Version<Value> {\n        var newSelf = value\n        transform(&newSelf)\n        return Version(newSelf)\n    }\n\n    func mutate(transform: (inout Value) throws -> Void) rethrows -> Version<Value> {\n        var newSelf = value\n        try transform(&newSelf)\n        return Version(newSelf)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/ViewController.swift",
    "content": "//\n//  ViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n#if os(iOS)\nimport UIKit\n\ntypealias OSViewController = UIViewController\n#elseif os(macOS)\nimport Cocoa\n\ntypealias OSViewController = NSViewController\n#endif\n\nclass ViewController: OSViewController {\n    var disposeBag = DisposeBag()\n}\n"
  },
  {
    "path": "RxExample/RxExample/iOS/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport UIKit\n\n@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    var window: UIWindow?\n\n    func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {\n        if UIApplication.isInUITest {\n            UIView.setAnimationsEnabled(false)\n        }\n\n        RxImagePickerDelegateProxy.register { RxImagePickerDelegateProxy(imagePicker: $0) }\n\n        #if DEBUG\n        _ = Observable<Int>.interval(.seconds(1), scheduler: MainScheduler.instance)\n            .subscribe(onNext: { _ in\n                print(\"Resource count \\(RxSwift.Resources.total)\")\n            })\n        #endif\n\n        return true\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/iOS/BaseNavigationController.swift",
    "content": "//\n//  BaseNavigationController.swift\n//  RxExample\n//\n//  Created by Volodymyr Andriienko on 17/07/2024.\n//  Copyright © 2024 Krunoslav Zaher. All rights reserved.\n//\n\nimport UIKit\n\nopen class BaseNavigationController: UINavigationController {\n    override open func viewDidLoad() {\n        super.viewDidLoad()\n\n        if #available(iOS 13.0, *) {\n            let appearance = UINavigationBarAppearance()\n            appearance.configureWithOpaqueBackground()\n            navigationBar.standardAppearance = appearance\n            navigationBar.scrollEdgeAppearance = appearance\n            navigationBar.compactAppearance = appearance\n            if #available(iOS 15.0, *) {\n                navigationBar.compactScrollEdgeAppearance = appearance\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/iOS/LaunchScreen.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"8191\" systemVersion=\"14F27\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"8154\"/>\n        <capability name=\"Constraints with non-1.0 multipliers\" minToolsVersion=\"5.1\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\"/>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view contentMode=\"scaleToFill\" id=\"iN0-l3-epB\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"480\" height=\"480\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"  Copyright (c) 2015 Krunoslav Zaher. All rights reserved.\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"9\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"8ie-xW-0ye\">\n                    <rect key=\"frame\" x=\"20\" y=\"439\" width=\"441\" height=\"21\"/>\n                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"17\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <label opaque=\"NO\" clipsSubviews=\"YES\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"Rx Example\" textAlignment=\"center\" lineBreakMode=\"middleTruncation\" baselineAdjustment=\"alignBaselines\" minimumFontSize=\"18\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kId-c2-rCX\">\n                    <rect key=\"frame\" x=\"20\" y=\"140\" width=\"441\" height=\"43\"/>\n                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"36\"/>\n                    <color key=\"textColor\" cocoaTouchSystemColor=\"darkTextColor\"/>\n                    <nil key=\"highlightedColor\"/>\n                </label>\n                <imageView userInteractionEnabled=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" image=\"ReactiveExtensionsLogo\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"HYT-bZ-Ylb\">\n                    <rect key=\"frame\" x=\"215\" y=\"215\" width=\"50\" height=\"50\"/>\n                    <constraints>\n                        <constraint firstAttribute=\"height\" constant=\"50\" id=\"OKO-dn-znv\"/>\n                        <constraint firstAttribute=\"width\" constant=\"50\" id=\"ej7-uJ-Azr\"/>\n                    </constraints>\n                </imageView>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"calibratedWhite\"/>\n            <constraints>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerY\" secondItem=\"iN0-l3-epB\" secondAttribute=\"bottom\" multiplier=\"1/3\" constant=\"1\" id=\"5cJ-9S-tgC\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"kId-c2-rCX\" secondAttribute=\"centerX\" id=\"Koa-jz-hwk\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"bottom\" constant=\"20\" id=\"Kzo-t9-V3l\"/>\n                <constraint firstItem=\"8ie-xW-0ye\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"MfP-vx-nX0\"/>\n                <constraint firstAttribute=\"centerX\" secondItem=\"8ie-xW-0ye\" secondAttribute=\"centerX\" id=\"ZEH-qu-HZ9\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"centerX\" secondItem=\"HYT-bZ-Ylb\" secondAttribute=\"centerX\" constant=\"0.5\" id=\"a3c-JK-ZFl\"/>\n                <constraint firstItem=\"kId-c2-rCX\" firstAttribute=\"leading\" secondItem=\"iN0-l3-epB\" secondAttribute=\"leading\" constant=\"20\" symbolic=\"YES\" id=\"fvb-Df-36g\"/>\n                <constraint firstItem=\"HYT-bZ-Ylb\" firstAttribute=\"top\" secondItem=\"kId-c2-rCX\" secondAttribute=\"bottom\" constant=\"32\" id=\"h8Z-TK-iu5\"/>\n            </constraints>\n            <nil key=\"simulatedStatusBarMetrics\"/>\n            <freeformSimulatedSizeMetrics key=\"simulatedDestinationMetrics\"/>\n            <point key=\"canvasLocation\" x=\"548\" y=\"455\"/>\n        </view>\n    </objects>\n    <resources>\n        <image name=\"ReactiveExtensionsLogo\" width=\"50\" height=\"50\"/>\n    </resources>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/iOS/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"20037\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" colorMatched=\"YES\" initialViewController=\"E5v-jn-n2n\">\n    <device id=\"retina4_7\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"20020\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Base Navigation Controller-->\n        <scene sceneID=\"eu0-Rq-LY9\">\n            <objects>\n                <navigationController extendedLayoutIncludesOpaqueBars=\"YES\" id=\"E5v-jn-n2n\" customClass=\"BaseNavigationController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <navigationBar key=\"navigationBar\" contentMode=\"scaleToFill\" translucent=\"NO\" id=\"q9W-TG-AP1\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"44\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                    </navigationBar>\n                    <connections>\n                        <segue destination=\"t5K-0k-3cp\" kind=\"relationship\" relationship=\"rootViewController\" id=\"RGv-9S-meA\"/>\n                    </connections>\n                </navigationController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"gzH-a2-9UK\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-1840.5797101449277\" y=\"-525.66964285714289\"/>\n        </scene>\n        <!--Rx Examples-->\n        <scene sceneID=\"TnT-xx-y5Q\">\n            <objects>\n                <tableViewController id=\"t5K-0k-3cp\" customClass=\"RootViewController\" customModule=\"RxExample_iOS\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <tableView key=\"view\" clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" dataMode=\"static\" style=\"grouped\" separatorStyle=\"default\" rowHeight=\"44\" sectionHeaderHeight=\"10\" sectionFooterHeight=\"10\" id=\"UYP-Va-Aja\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"623\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"0.93725490196078431\" green=\"0.93725490196078431\" blue=\"0.95686274509803926\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <sections>\n                            <tableViewSection footerTitle=\"Showcase examples for Rx. You can easily test for proper resource cleanup during popping of the navigation stack\" id=\"Cvx-8U-SpN\">\n                                <cells/>\n                            </tableViewSection>\n                            <tableViewSection headerTitle=\"iPhone Examples\" id=\"QC3-bK-dI7\" userLabel=\"Simple iPhone Examples\">\n                                <cells>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"XlM-5z-et7\" detailTextLabel=\"qzf-wg-hsM\" style=\"IBUITableViewCellStyleSubtitle\" id=\"zvA-oc-vHk\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"82.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"zvA-oc-vHk\" id=\"JoK-c2-Jg5\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Adding numbers\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"XlM-5z-et7\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"119.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Bindings\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"qzf-wg-hsM\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"45.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"Yfw-ua-4De\" kind=\"push\" id=\"3HW-FS-2EI\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"XEn-YS-GnU\" detailTextLabel=\"zBe-n6-i5V\" style=\"IBUITableViewCellStyleSubtitle\" id=\"BQL-5R-fty\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"126.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"BQL-5R-fty\" id=\"nj7-Ko-iPj\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simple validation\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"XEn-YS-GnU\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"123\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Bindings\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"zBe-n6-i5V\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"45.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"cEK-zF-Nu0\" kind=\"push\" id=\"DBo-Tn-u3l\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"j1q-2d-R02\" detailTextLabel=\"pxC-nY-kap\" style=\"IBUITableViewCellStyleSubtitle\" id=\"0UH-Rf-apt\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"170.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"0UH-Rf-apt\" id=\"nDe-UH-zD4\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Geolocation Subscription\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"j1q-2d-R02\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"182.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Observers, service and Drive example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"pxC-nY-kap\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"198.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"BHp-d4-Rzx\" kind=\"push\" id=\"f5G-sv-YVM\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"LN4-l3-ara\" detailTextLabel=\"BaB-5r-hmY\" style=\"IBUITableViewCellStyleSubtitle\" id=\"Hab-23-dUs\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"214.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Hab-23-dUs\" id=\"5ox-J8-FhR\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"GitHub Signup - Vanilla Observables\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"LN4-l3-ara\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"263.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simple MVVM example \" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"BaB-5r-hmY\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"123\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"KfW-wF-8XP\" kind=\"push\" id=\"rAe-JJ-Q7U\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"xR6-uz-2HS\" detailTextLabel=\"kFo-00-iCj\" style=\"IBUITableViewCellStyleSubtitle\" id=\"bd6-tg-GeQ\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"258.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"bd6-tg-GeQ\" id=\"5Rg-v9-4ee\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"GitHub Signup - Using Driver\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"xR6-uz-2HS\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"210.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simple MVVM example \" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"kFo-00-iCj\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"123\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"Lb9-no-d2C\" kind=\"push\" id=\"e9W-RE-5Ze\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"siT-mr-b8A\" detailTextLabel=\"BSH-sG-bpY\" style=\"IBUITableViewCellStyleSubtitle\" id=\"VBq-7j-4vQ\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"302.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"VBq-7j-4vQ\" id=\"m7h-NW-UnD\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"API wrappers\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"siT-mr-b8A\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"96.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"API wrappers Example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"BSH-sG-bpY\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"117\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"h5u-oy-LNi\" kind=\"push\" id=\"jyD-mL-MWs\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"ufL-YX-dKF\" detailTextLabel=\"efq-eT-ETM\" style=\"IBUITableViewCellStyleSubtitle\" id=\"Egb-OL-S5e\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"346.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"Egb-OL-S5e\" id=\"Y1z-Y7-dLh\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Calculator\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"ufL-YX-dKF\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"74\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Stateless calculator example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"efq-eT-ETM\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"150.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"uIg-z9-IfB\" kind=\"push\" id=\"3is-Gn-lDH\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"Bxx-sK-jOc\" detailTextLabel=\"DjH-cD-3C4\" style=\"IBUITableViewCellStyleSubtitle\" id=\"692-oJ-jzR\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"390.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"692-oJ-jzR\" id=\"Mv8-yU-G0e\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"ImagePicker\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"Bxx-sK-jOc\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"89.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"UIImagePickerController example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"DjH-cD-3C4\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"174.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"Ijo-w2-WVs\" kind=\"push\" id=\"I1X-2J-ol0\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"uGq-CE-e5J\" detailTextLabel=\"nc4-nI-reV\" style=\"IBUITableViewCellStyleSubtitle\" id=\"PqI-7H-9bU\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"434.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"PqI-7H-9bU\" id=\"bZ0-ZX-DAz\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"UIPickerView\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"uGq-CE-e5J\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"95.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"UIPickerView example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"nc4-nI-reV\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"116\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"j8n-8b-eKg\" kind=\"push\" id=\"z5Z-TK-gaJ\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                            <tableViewSection headerTitle=\"Table/Collection view examples\" id=\"guj-4N-WZg\" userLabel=\"TableView/CollectionView example\">\n                                <cells>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"kRJ-td-Wjf\" detailTextLabel=\"ctN-th-VB8\" style=\"IBUITableViewCellStyleSubtitle\" id=\"YE3-Dn-DSf\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"520.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"YE3-Dn-DSf\" id=\"SOl-vI-kLK\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simplest table view example\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"kRJ-td-Wjf\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"205\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Basic\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"ctN-th-VB8\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"28.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"K4u-Zp-yfj\" kind=\"push\" id=\"qMR-wL-fZ8\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"MxU-oS-7a8\" detailTextLabel=\"wQk-uP-pgO\" style=\"IBUITableViewCellStyleSubtitle\" id=\"1YT-MH-mkD\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"564.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"1YT-MH-mkD\" id=\"O4c-r4-rcr\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Simplest table view example with sections\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"MxU-oS-7a8\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"305\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Basic\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"wQk-uP-pgO\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"28.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"OMd-9V-mKL\" kind=\"push\" id=\"mvz-6o-97I\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"x4u-zK-muO\" detailTextLabel=\"nuf-1K-ITV\" style=\"IBUITableViewCellStyleSubtitle\" id=\"HTx-Ei-Vlj\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"608.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"HTx-Ei-Vlj\" id=\"kc9-g3-Zfl\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"TableView with editing\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"x4u-zK-muO\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"161.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Model editing using observable sequences, master/detail\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"nuf-1K-ITV\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"298.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"tuE-zK-IdR\" kind=\"push\" id=\"S82-xv-fWe\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"1M3-wJ-NDW\" detailTextLabel=\"To0-TG-0Fv\" style=\"IBUITableViewCellStyleSubtitle\" id=\"kbO-Dk-wEU\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"652.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"kbO-Dk-wEU\" id=\"55g-Qh-WS3\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"350.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Table/CollectionView partial updates\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"1M3-wJ-NDW\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"6\" width=\"263\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" text=\"Table and Collection view with partial updates\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"To0-TG-0Fv\">\n                                                    <rect key=\"frame\" x=\"16\" y=\"25.5\" width=\"240.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"75T-3M-1ne\" kind=\"push\" id=\"8ge-9T-JVm\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                            <tableViewSection headerTitle=\"Complex examples\" id=\"lxd-sR-NIF\" userLabel=\"Complex examples\">\n                                <cells>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"pxT-4B-gDc\" detailTextLabel=\"xZJ-Xt-MqD\" style=\"IBUITableViewCellStyleSubtitle\" id=\"yAf-eB-mRo\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"738.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"yAf-eB-mRo\" id=\"M3Y-AJ-f8i\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"356.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" ambiguous=\"YES\" text=\"Search Wikipedia\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"pxT-4B-gDc\">\n                                                    <rect key=\"frame\" x=\"8\" y=\"6\" width=\"125.5\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" ambiguous=\"YES\" text=\"Complex async, activity indicator\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"xZJ-Xt-MqD\">\n                                                    <rect key=\"frame\" x=\"8\" y=\"25.5\" width=\"173.5\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"Ijz-Xf-fD1\" kind=\"push\" identifier=\"ShowWikipediaSearch\" id=\"Gfh-zm-u0w\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                    <tableViewCell contentMode=\"scaleToFill\" selectionStyle=\"default\" accessoryType=\"disclosureIndicator\" indentationWidth=\"10\" textLabel=\"8FC-s3-ejV\" detailTextLabel=\"ECT-7x-66c\" style=\"IBUITableViewCellStyleSubtitle\" id=\"0Xj-JL-bdb\">\n                                        <rect key=\"frame\" x=\"0.0\" y=\"782.5\" width=\"375\" height=\"44\"/>\n                                        <autoresizingMask key=\"autoresizingMask\"/>\n                                        <tableViewCellContentView key=\"contentView\" opaque=\"NO\" clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"center\" tableViewCell=\"0Xj-JL-bdb\" id=\"buE-3J-RLs\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"356.5\" height=\"44\"/>\n                                            <autoresizingMask key=\"autoresizingMask\"/>\n                                            <subviews>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" ambiguous=\"YES\" text=\"GitHub Search Repositories\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"8FC-s3-ejV\">\n                                                    <rect key=\"frame\" x=\"8\" y=\"6\" width=\"200\" height=\"19.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                                <label opaque=\"NO\" multipleTouchEnabled=\"YES\" contentMode=\"left\" ambiguous=\"YES\" text=\"Paging, activity indicator\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" id=\"ECT-7x-66c\">\n                                                    <rect key=\"frame\" x=\"8\" y=\"25.5\" width=\"130\" height=\"13.5\"/>\n                                                    <autoresizingMask key=\"autoresizingMask\" flexibleMaxX=\"YES\" flexibleMaxY=\"YES\"/>\n                                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"11\"/>\n                                                    <color key=\"textColor\" red=\"0.0\" green=\"0.0\" blue=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                                    <nil key=\"highlightedColor\"/>\n                                                </label>\n                                            </subviews>\n                                        </tableViewCellContentView>\n                                        <connections>\n                                            <segue destination=\"uiN-ZC-aD4\" kind=\"push\" id=\"ADd-I9-9RO\"/>\n                                        </connections>\n                                    </tableViewCell>\n                                </cells>\n                            </tableViewSection>\n                        </sections>\n                        <connections>\n                            <outlet property=\"dataSource\" destination=\"t5K-0k-3cp\" id=\"pVD-Un-sBa\"/>\n                            <outlet property=\"delegate\" destination=\"t5K-0k-3cp\" id=\"Wpn-ZO-wKV\"/>\n                        </connections>\n                    </tableView>\n                    <navigationItem key=\"navigationItem\" title=\"Rx Examples\" id=\"UN2-W8-jFx\"/>\n                </tableViewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Bt6-Sf-4JF\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-1111.5942028985507\" y=\"-525\"/>\n        </scene>\n        <!--GitHubSignup1-->\n        <scene sceneID=\"bmF-4V-Gey\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"GitHubSignup1\" id=\"KfW-wF-8XP\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"DiQ-r3-vXX\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"Xfi-Qi-HJR\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-472.46376811594206\" y=\"-658.25892857142856\"/>\n        </scene>\n        <!--TableViewWithEditingCommands-->\n        <scene sceneID=\"8Bi-Gs-3Ui\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"TableViewWithEditingCommands\" id=\"tuE-zK-IdR\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"Rnz-Mz-Ma8\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"5cy-b0-5CK\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-391.304347826087\" y=\"-421.20535714285711\"/>\n        </scene>\n        <!--GitHubSignup2-->\n        <scene sceneID=\"hsq-iX-1Kh\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"GitHubSignup2\" id=\"Lb9-no-d2C\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"AUU-sn-edl\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"wxc-Y2-1Ey\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-471.01449275362324\" y=\"-630.80357142857144\"/>\n        </scene>\n        <!--Numbers-->\n        <scene sceneID=\"hvb-Nl-POd\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"Numbers\" id=\"Yfw-ua-4De\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"B61-aa-DYv\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"BpG-fA-Qaz\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-498.55072463768118\" y=\"-748.66071428571422\"/>\n        </scene>\n        <!--Calculator-->\n        <scene sceneID=\"t4R-H4-x31\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"Calculator\" id=\"uIg-z9-IfB\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"HZA-1G-rUg\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"1F9-Ms-B0H\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-492.75362318840581\" y=\"-571.875\"/>\n        </scene>\n        <!--ImagePicker-->\n        <scene sceneID=\"lrO-cR-pKx\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"ImagePicker\" id=\"Ijo-w2-WVs\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"wct-YW-0Ya\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"EHl-GD-NrC\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-484.05797101449281\" y=\"-541.07142857142856\"/>\n        </scene>\n        <!--Geolocation-->\n        <scene sceneID=\"Lbp-dH-734\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"Geolocation\" id=\"BHp-d4-Rzx\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"9Xc-4s-tU8\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"6jn-Xf-pW1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-485.50724637681162\" y=\"-686.38392857142856\"/>\n        </scene>\n        <!--SimpleUIPickerViewExample-->\n        <scene sceneID=\"mDE-MH-GG5\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"SimpleUIPickerViewExample\" id=\"j8n-8b-eKg\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"V4C-d3-9uF\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"cPP-7u-3nB\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-411.59420289855075\" y=\"-510.9375\"/>\n        </scene>\n        <!--SimpleTableViewExample-->\n        <scene sceneID=\"Hgo-1e-W9m\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"SimpleTableViewExample\" id=\"K4u-Zp-yfj\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"3sw-cB-EWy\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"5AF-nN-lC6\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-427.536231884058\" y=\"-480.13392857142856\"/>\n        </scene>\n        <!--SimpleValidation-->\n        <scene sceneID=\"AGc-1X-ilK\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"SimpleValidation\" id=\"cEK-zF-Nu0\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"C4x-rA-U28\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"h1w-fB-NiN\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-465.21739130434787\" y=\"-716.51785714285711\"/>\n        </scene>\n        <!--GitHubSearchRepositories-->\n        <scene sceneID=\"Abf-x4-eMN\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"GitHubSearchRepositories\" id=\"uiN-ZC-aD4\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"YkQ-ND-TUU\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"8y8-2O-Gkz\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-420.28985507246381\" y=\"-302.00892857142856\"/>\n        </scene>\n        <!--SimpleTableViewExampleSectioned-->\n        <scene sceneID=\"tsh-hV-zqB\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"SimpleTableViewExampleSectioned\" id=\"OMd-9V-mKL\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"yhg-dZ-wGQ\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"IUh-IB-MHp\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-381.15942028985512\" y=\"-452.00892857142856\"/>\n        </scene>\n        <!--APIWrappers-->\n        <scene sceneID=\"eYY-EN-hp0\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"APIWrappers\" id=\"h5u-oy-LNi\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"Szw-AC-6rR\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"y0z-Ms-FFI\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-478.26086956521743\" y=\"-602.67857142857144\"/>\n        </scene>\n        <!--PartialUpdates-->\n        <scene sceneID=\"4cG-cs-NwC\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"PartialUpdates\" id=\"75T-3M-1ne\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"amb-0q-Bhv\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"xOS-r4-yrO\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-472.46376811594206\" y=\"-390.40178571428572\"/>\n        </scene>\n        <!--WikipediaSearch-->\n        <scene sceneID=\"BcZ-ew-Ceo\">\n            <objects>\n                <viewControllerPlaceholder storyboardName=\"WikipediaSearch\" id=\"Ijz-Xf-fD1\" sceneMemberID=\"viewController\">\n                    <navigationItem key=\"navigationItem\" id=\"8xh-Oc-2E3\"/>\n                </viewControllerPlaceholder>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"rBj-Hr-NZt\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-463.768115942029\" y=\"-332.14285714285711\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample/iOS/RootViewController.swift",
    "content": "//\n//  RootViewController.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 4/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\npublic class RootViewController: UITableViewController {\n    override public func viewDidLoad() {\n        super.viewDidLoad()\n        // force load\n        _ = GitHubSearchRepositoriesAPI.sharedAPI\n        _ = DefaultWikipediaAPI.sharedAPI\n        _ = DefaultImageService.sharedImageService\n        _ = DefaultWireframe.shared\n        _ = MainScheduler.instance\n        _ = Dependencies.sharedDependencies.reachabilityService\n\n        let geoService = GeolocationService.instance\n        geoService.authorized.drive(onNext: { _ in\n        }).dispose()\n        geoService.location.drive(onNext: { _ in\n        }).dispose()\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/iOS/UITableView+Extensions.swift",
    "content": "//\n//  UITableView+Extensions.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 8/20/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport UIKit\n\nextension UITableView {\n    func hideEmptyCells() {\n        tableFooterView = UIView(frame: .zero)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/macOS/AppDelegate.swift",
    "content": "//\n//  AppDelegate.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 5/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Cocoa\n\n@main\nclass AppDelegate: NSObject, NSApplicationDelegate {\n    func applicationDidFinishLaunching(aNotification _: Notification) {\n        // Insert code here to initialize your application\n    }\n\n    func applicationWillTerminate(aNotification _: Notification) {\n        // Insert code here to tear down your application\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample/macOS/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.Cocoa.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"11542\" systemVersion=\"16B2555\" targetRuntime=\"MacOSX.Cocoa\" propertyAccessControl=\"none\" useAutolayout=\"YES\" initialViewController=\"B8D-0N-5wS\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.CocoaPlugin\" version=\"11542\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--Application-->\n        <scene sceneID=\"JPo-4y-FX3\">\n            <objects>\n                <application id=\"hnw-xV-0zn\" sceneMemberID=\"viewController\">\n                    <menu key=\"mainMenu\" title=\"Main Menu\" systemMenu=\"main\" id=\"AYu-sK-qS6\"/>\n                    <connections>\n                        <outlet property=\"delegate\" destination=\"Voe-Tx-rLC\" id=\"PrD-fu-P6m\"/>\n                    </connections>\n                </application>\n                <customObject id=\"Voe-Tx-rLC\" customClass=\"AppDelegate\" customModule=\"RxExample\" customModuleProvider=\"target\"/>\n                <customObject id=\"Ady-hI-5gd\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"75\" y=\"0.0\"/>\n        </scene>\n        <!--Window Controller-->\n        <scene sceneID=\"R2V-B0-nI4\">\n            <objects>\n                <windowController id=\"B8D-0N-5wS\" sceneMemberID=\"viewController\">\n                    <window key=\"window\" title=\"Window\" allowsToolTipsWhenApplicationIsInactive=\"NO\" autorecalculatesKeyViewLoop=\"NO\" oneShot=\"NO\" releasedWhenClosed=\"NO\" showsToolbarButton=\"NO\" visibleAtLaunch=\"NO\" animationBehavior=\"default\" id=\"IQv-IB-iLA\">\n                        <windowStyleMask key=\"styleMask\" titled=\"YES\" closable=\"YES\" miniaturizable=\"YES\" resizable=\"YES\"/>\n                        <windowPositionMask key=\"initialPositionMask\" leftStrut=\"YES\" rightStrut=\"YES\" topStrut=\"YES\" bottomStrut=\"YES\"/>\n                        <rect key=\"contentRect\" x=\"196\" y=\"240\" width=\"480\" height=\"271\"/>\n                        <rect key=\"screenRect\" x=\"0.0\" y=\"0.0\" width=\"1680\" height=\"1027\"/>\n                    </window>\n                    <connections>\n                        <segue destination=\"Tlu-jW-gv8\" kind=\"relationship\" relationship=\"window.shadowedContentViewController\" id=\"kor-6w-tbH\"/>\n                    </connections>\n                </windowController>\n                <customObject id=\"Oky-zY-oP4\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-69\" y=\"260.5\"/>\n        </scene>\n        <!--Introduction Example View Controller-->\n        <scene sceneID=\"nOp-ay-mKG\">\n            <objects>\n                <viewController id=\"Tlu-jW-gv8\" customClass=\"IntroductionExampleViewController\" customModule=\"RxExample\" customModuleProvider=\"target\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" id=\"15P-I4-Ofm\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"610\" height=\"403\"/>\n                        <autoresizingMask key=\"autoresizingMask\"/>\n                        <subviews>\n                            <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"6lb-zc-c5S\">\n                                <rect key=\"frame\" x=\"56\" y=\"317\" width=\"96\" height=\"22\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" relation=\"greaterThanOrEqual\" constant=\"22\" id=\"8b1-xe-OiV\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"96\" id=\"BQg-Qk-o9J\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"22\" id=\"HFj-1Z-bR9\"/>\n                                    <constraint firstAttribute=\"width\" relation=\"greaterThanOrEqual\" constant=\"96\" id=\"scr-4K-4db\"/>\n                                </constraints>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" title=\"1\" drawsBackground=\"YES\" id=\"z2u-0q-QId\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zhP-9C-de5\">\n                                <rect key=\"frame\" x=\"249\" y=\"318\" width=\"96\" height=\"22\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"96\" id=\"K4K-CE-gyz\"/>\n                                    <constraint firstAttribute=\"width\" relation=\"greaterThanOrEqual\" constant=\"96\" id=\"M1P-dU-Rxo\"/>\n                                    <constraint firstAttribute=\"height\" relation=\"greaterThanOrEqual\" constant=\"22\" id=\"UfF-4i-Nhp\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"22\" id=\"zCg-TT-kMP\"/>\n                                </constraints>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" title=\"2\" drawsBackground=\"YES\" id=\"1Ip-nW-mf1\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zEm-ia-8D5\">\n                                <rect key=\"frame\" x=\"194\" y=\"320\" width=\"13\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"+\" id=\"67K-Sn-nua\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Thn-ge-MNK\">\n                                <rect key=\"frame\" x=\"387\" y=\"320\" width=\"13\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"=\" id=\"Ms6-O6-Cle\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"OPN-Cj-AXY\">\n                                <rect key=\"frame\" x=\"440\" y=\"320\" width=\"42\" height=\"17\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"17\" id=\"ep0-fb-x50\"/>\n                                </constraints>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Result\" id=\"QmF-1C-UxZ\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <button verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"GIP-PK-nj4\">\n                                <rect key=\"frame\" x=\"221\" y=\"252\" width=\"152\" height=\"32\"/>\n                                <buttonCell key=\"cell\" type=\"push\" title=\"Unbind everything\" bezelStyle=\"rounded\" alignment=\"center\" borderStyle=\"border\" imageScaling=\"proportionallyDown\" inset=\"2\" id=\"OfL-Xk-Jww\">\n                                    <behavior key=\"behavior\" pushIn=\"YES\" lightByBackground=\"YES\" lightByGray=\"YES\"/>\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                </buttonCell>\n                            </button>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"2kf-g2-Xe7\">\n                                <rect key=\"frame\" x=\"56\" y=\"360\" width=\"466\" height=\"34\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"34\" id=\"OBy-a6-uQN\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"462\" id=\"WmX-9v-Ofs\"/>\n                                </constraints>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" alignment=\"center\" id=\"J8l-kR-821\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <string key=\"title\">Change values and see what happens.\n</string>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uvp-P6-I33\">\n                                <rect key=\"frame\" x=\"93\" y=\"228\" width=\"407\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Everything is unbound when `Unbind everything` button is clicked\" id=\"oNm-CU-Uq7\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <slider verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Wbs-Vv-RvG\">\n                                <rect key=\"frame\" x=\"54\" y=\"158\" width=\"502\" height=\"19\"/>\n                                <sliderCell key=\"cell\" continuous=\"YES\" state=\"on\" alignment=\"left\" maxValue=\"100\" doubleValue=\"50\" tickMarkPosition=\"above\" sliderType=\"linear\" id=\"0FL-dG-a0V\"/>\n                            </slider>\n                            <textField verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"35N-M1-mEj\">\n                                <rect key=\"frame\" x=\"208\" y=\"124\" width=\"96\" height=\"22\"/>\n                                <constraints>\n                                    <constraint firstAttribute=\"width\" constant=\"96\" id=\"UjJ-QN-7sX\"/>\n                                    <constraint firstAttribute=\"height\" constant=\"22\" id=\"p0d-PC-IYH\"/>\n                                </constraints>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" selectable=\"YES\" editable=\"YES\" sendsActionOnEndEditing=\"YES\" state=\"on\" borderStyle=\"bezel\" title=\"1\" drawsBackground=\"YES\" id=\"Gej-gH-W9B\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"textColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"textBackgroundColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"uJU-xc-Cnn\">\n                                <rect key=\"frame\" x=\"56\" y=\"127\" width=\"136\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"Slider Value (0 - 100):\" id=\"Pbz-ZR-CzF\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                            <button translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"lGZ-My-b3K\">\n                                <rect key=\"frame\" x=\"486\" y=\"319\" width=\"120\" height=\"18\"/>\n                                <buttonCell key=\"cell\" type=\"check\" title=\"Speech Enabled\" bezelStyle=\"regularSquare\" imagePosition=\"left\" inset=\"2\" id=\"ssU-Is-Hrt\">\n                                    <behavior key=\"behavior\" changeContents=\"YES\" doesNotDimImage=\"YES\" lightByContents=\"YES\"/>\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                </buttonCell>\n                            </button>\n                            <scrollView horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1OR-hU-htp\">\n                                <rect key=\"frame\" x=\"58\" y=\"26\" width=\"147\" height=\"54\"/>\n                                <clipView key=\"contentView\" id=\"gWx-fI-mXT\">\n                                    <rect key=\"frame\" x=\"1\" y=\"1\" width=\"145\" height=\"52\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <textView importsGraphics=\"NO\" usesFontPanel=\"YES\" findStyle=\"panel\" continuousSpellChecking=\"YES\" allowsUndo=\"YES\" usesRuler=\"YES\" allowsNonContiguousLayout=\"YES\" quoteSubstitution=\"YES\" dashSubstitution=\"YES\" smartInsertDelete=\"YES\" id=\"9nX-EI-UMF\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"145\" height=\"52\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                            <size key=\"minSize\" width=\"145\" height=\"52\"/>\n                                            <size key=\"maxSize\" width=\"463\" height=\"10000000\"/>\n                                            <color key=\"insertionPointColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                        </textView>\n                                    </subviews>\n                                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                </clipView>\n                                <constraints>\n                                    <constraint firstAttribute=\"height\" constant=\"54\" id=\"2Fi-ft-kze\"/>\n                                    <constraint firstAttribute=\"width\" constant=\"147\" id=\"Iha-ik-jFN\"/>\n                                </constraints>\n                                <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" doubleValue=\"1\" horizontal=\"YES\" id=\"FUf-0U-Mpx\">\n                                    <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"87\" height=\"18\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                                <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" doubleValue=\"1\" horizontal=\"NO\" id=\"6LN-c2-Aps\">\n                                    <rect key=\"frame\" x=\"130\" y=\"1\" width=\"16\" height=\"52\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                            </scrollView>\n                            <scrollView horizontalLineScroll=\"10\" horizontalPageScroll=\"10\" verticalLineScroll=\"10\" verticalPageScroll=\"10\" hasHorizontalScroller=\"NO\" usesPredominantAxisScrolling=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Eih-kn-NCC\">\n                                <rect key=\"frame\" x=\"364\" y=\"27\" width=\"145\" height=\"52\"/>\n                                <clipView key=\"contentView\" id=\"sRf-ms-io0\">\n                                    <rect key=\"frame\" x=\"1\" y=\"1\" width=\"143\" height=\"50\"/>\n                                    <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                    <subviews>\n                                        <textView importsGraphics=\"NO\" usesFontPanel=\"YES\" findStyle=\"panel\" continuousSpellChecking=\"YES\" allowsUndo=\"YES\" usesRuler=\"YES\" allowsNonContiguousLayout=\"YES\" quoteSubstitution=\"YES\" dashSubstitution=\"YES\" smartInsertDelete=\"YES\" id=\"F32-Tg-SgN\">\n                                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"143\" height=\"50\"/>\n                                            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                                            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                            <size key=\"minSize\" width=\"143\" height=\"50\"/>\n                                            <size key=\"maxSize\" width=\"463\" height=\"10000000\"/>\n                                            <color key=\"insertionPointColor\" name=\"controlTextColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                        </textView>\n                                    </subviews>\n                                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"calibratedWhite\"/>\n                                </clipView>\n                                <scroller key=\"horizontalScroller\" hidden=\"YES\" verticalHuggingPriority=\"750\" doubleValue=\"1\" horizontal=\"YES\" id=\"cJP-Qd-YpF\">\n                                    <rect key=\"frame\" x=\"-100\" y=\"-100\" width=\"87\" height=\"18\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                                <scroller key=\"verticalScroller\" verticalHuggingPriority=\"750\" doubleValue=\"1\" horizontal=\"NO\" id=\"urA-m6-7zR\">\n                                    <rect key=\"frame\" x=\"128\" y=\"1\" width=\"16\" height=\"50\"/>\n                                    <autoresizingMask key=\"autoresizingMask\"/>\n                                </scroller>\n                            </scrollView>\n                            <textField horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"750\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"foi-fP-Wpg\">\n                                <rect key=\"frame\" x=\"228\" y=\"44\" width=\"123\" height=\"17\"/>\n                                <textFieldCell key=\"cell\" scrollable=\"YES\" lineBreakMode=\"clipping\" sendsActionOnEndEditing=\"YES\" title=\"&lt;- Synchronized -&gt;\" id=\"jnS-vm-DF3\">\n                                    <font key=\"font\" metaFont=\"system\"/>\n                                    <color key=\"textColor\" name=\"labelColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                    <color key=\"backgroundColor\" name=\"controlColor\" catalog=\"System\" colorSpace=\"catalog\"/>\n                                </textFieldCell>\n                            </textField>\n                        </subviews>\n                        <constraints>\n                            <constraint firstItem=\"zhP-9C-de5\" firstAttribute=\"centerY\" secondItem=\"Thn-ge-MNK\" secondAttribute=\"centerY\" id=\"1hB-vb-8wU\"/>\n                            <constraint firstAttribute=\"centerY\" secondItem=\"6lb-zc-c5S\" secondAttribute=\"centerY\" constant=\"126.5\" id=\"3Es-uc-xme\"/>\n                            <constraint firstItem=\"zEm-ia-8D5\" firstAttribute=\"leading\" secondItem=\"6lb-zc-c5S\" secondAttribute=\"trailing\" constant=\"44\" id=\"4YD-Sv-3PW\"/>\n                            <constraint firstItem=\"zhP-9C-de5\" firstAttribute=\"centerY\" secondItem=\"zEm-ia-8D5\" secondAttribute=\"centerY\" id=\"6x6-ry-73f\"/>\n                            <constraint firstItem=\"lGZ-My-b3K\" firstAttribute=\"leading\" secondItem=\"OPN-Cj-AXY\" secondAttribute=\"trailing\" constant=\"8\" id=\"9IT-JY-nJn\"/>\n                            <constraint firstItem=\"lGZ-My-b3K\" firstAttribute=\"centerY\" secondItem=\"OPN-Cj-AXY\" secondAttribute=\"centerY\" id=\"Ats-Ca-cmV\"/>\n                            <constraint firstItem=\"foi-fP-Wpg\" firstAttribute=\"centerY\" secondItem=\"9nX-EI-UMF\" secondAttribute=\"centerY\" id=\"KbQ-uz-UMk\"/>\n                            <constraint firstAttribute=\"trailing\" secondItem=\"Wbs-Vv-RvG\" secondAttribute=\"trailing\" constant=\"56\" id=\"PVJ-9U-aoZ\"/>\n                            <constraint firstItem=\"uvp-P6-I33\" firstAttribute=\"top\" secondItem=\"GIP-PK-nj4\" secondAttribute=\"bottom\" constant=\"14\" id=\"Pp9-qm-Arb\"/>\n                            <constraint firstItem=\"6lb-zc-c5S\" firstAttribute=\"leading\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"leading\" constant=\"56\" id=\"PvR-bi-zxk\"/>\n                            <constraint firstItem=\"F32-Tg-SgN\" firstAttribute=\"leading\" secondItem=\"foi-fP-Wpg\" secondAttribute=\"trailing\" constant=\"16\" id=\"REI-3T-T4F\"/>\n                            <constraint firstItem=\"35N-M1-mEj\" firstAttribute=\"top\" secondItem=\"Wbs-Vv-RvG\" secondAttribute=\"bottom\" constant=\"14\" id=\"XjL-NS-FKB\"/>\n                            <constraint firstItem=\"6lb-zc-c5S\" firstAttribute=\"centerY\" secondItem=\"zEm-ia-8D5\" secondAttribute=\"centerY\" constant=\"0.5\" id=\"Yxd-Vc-Mha\"/>\n                            <constraint firstItem=\"uJU-xc-Cnn\" firstAttribute=\"top\" secondItem=\"Wbs-Vv-RvG\" secondAttribute=\"bottom\" constant=\"16\" id=\"aTW-iC-ZJu\"/>\n                            <constraint firstItem=\"2kf-g2-Xe7\" firstAttribute=\"leading\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"leading\" constant=\"58\" id=\"aUY-dz-Bkn\"/>\n                            <constraint firstItem=\"foi-fP-Wpg\" firstAttribute=\"leading\" secondItem=\"9nX-EI-UMF\" secondAttribute=\"trailing\" constant=\"26\" id=\"biw-Hz-9nq\"/>\n                            <constraint firstItem=\"OPN-Cj-AXY\" firstAttribute=\"centerY\" secondItem=\"Thn-ge-MNK\" secondAttribute=\"centerY\" id=\"cze-3D-fjj\"/>\n                            <constraint firstItem=\"2kf-g2-Xe7\" firstAttribute=\"top\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"top\" constant=\"9\" id=\"dVJ-tS-uK5\"/>\n                            <constraint firstItem=\"1OR-hU-htp\" firstAttribute=\"top\" secondItem=\"uJU-xc-Cnn\" secondAttribute=\"bottom\" constant=\"47\" id=\"eOB-YW-yLG\"/>\n                            <constraint firstItem=\"Wbs-Vv-RvG\" firstAttribute=\"top\" secondItem=\"uvp-P6-I33\" secondAttribute=\"bottom\" constant=\"53\" id=\"gJ8-k4-cPu\"/>\n                            <constraint firstItem=\"GIP-PK-nj4\" firstAttribute=\"top\" secondItem=\"zhP-9C-de5\" secondAttribute=\"bottom\" constant=\"38\" id=\"hP1-SO-AwZ\"/>\n                            <constraint firstItem=\"Eih-kn-NCC\" firstAttribute=\"top\" secondItem=\"9nX-EI-UMF\" secondAttribute=\"top\" id=\"ilL-Dk-XdY\"/>\n                            <constraint firstItem=\"zhP-9C-de5\" firstAttribute=\"centerX\" secondItem=\"GIP-PK-nj4\" secondAttribute=\"centerX\" id=\"jGy-4g-Az3\"/>\n                            <constraint firstItem=\"Eih-kn-NCC\" firstAttribute=\"height\" secondItem=\"9nX-EI-UMF\" secondAttribute=\"height\" id=\"nkQ-r9-ine\"/>\n                            <constraint firstItem=\"Wbs-Vv-RvG\" firstAttribute=\"leading\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"leading\" constant=\"56\" id=\"oZe-4i-rFT\"/>\n                            <constraint firstItem=\"uJU-xc-Cnn\" firstAttribute=\"leading\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"leading\" constant=\"58\" id=\"qNL-oi-8XY\"/>\n                            <constraint firstItem=\"35N-M1-mEj\" firstAttribute=\"leading\" secondItem=\"uJU-xc-Cnn\" secondAttribute=\"trailing\" constant=\"18\" id=\"rna-lY-yUb\"/>\n                            <constraint firstItem=\"Thn-ge-MNK\" firstAttribute=\"leading\" secondItem=\"zhP-9C-de5\" secondAttribute=\"trailing\" constant=\"44\" id=\"s0C-Xr-olp\"/>\n                            <constraint firstItem=\"OPN-Cj-AXY\" firstAttribute=\"leading\" secondItem=\"Thn-ge-MNK\" secondAttribute=\"trailing\" constant=\"44\" id=\"wsy-fG-oAX\"/>\n                            <constraint firstItem=\"1OR-hU-htp\" firstAttribute=\"leading\" secondItem=\"15P-I4-Ofm\" secondAttribute=\"leading\" constant=\"58\" id=\"wzX-Uc-OY3\"/>\n                            <constraint firstItem=\"uvp-P6-I33\" firstAttribute=\"centerX\" secondItem=\"GIP-PK-nj4\" secondAttribute=\"centerX\" id=\"y3H-7u-VYu\"/>\n                            <constraint firstItem=\"zhP-9C-de5\" firstAttribute=\"leading\" secondItem=\"zEm-ia-8D5\" secondAttribute=\"trailing\" constant=\"44\" id=\"zH7-w8-JmD\"/>\n                            <constraint firstItem=\"Eih-kn-NCC\" firstAttribute=\"width\" secondItem=\"9nX-EI-UMF\" secondAttribute=\"width\" id=\"zTN-i2-SRG\"/>\n                        </constraints>\n                    </view>\n                    <connections>\n                        <outlet property=\"a\" destination=\"6lb-zc-c5S\" id=\"I6G-my-Rr2\"/>\n                        <outlet property=\"b\" destination=\"zhP-9C-de5\" id=\"roc-0E-LNn\"/>\n                        <outlet property=\"c\" destination=\"OPN-Cj-AXY\" id=\"QWI-hj-WBi\"/>\n                        <outlet property=\"disposeButton\" destination=\"GIP-PK-nj4\" id=\"GRz-GM-yYC\"/>\n                        <outlet property=\"leftTextView\" destination=\"9nX-EI-UMF\" id=\"ghG-Sj-I19\"/>\n                        <outlet property=\"rightTextView\" destination=\"F32-Tg-SgN\" id=\"Fnc-WS-OAI\"/>\n                        <outlet property=\"slider\" destination=\"Wbs-Vv-RvG\" id=\"P4j-BE-GM4\"/>\n                        <outlet property=\"sliderValue\" destination=\"35N-M1-mEj\" id=\"sJI-D2-QJ8\"/>\n                        <outlet property=\"speechEnabled\" destination=\"lGZ-My-b3K\" id=\"vRT-G4-KIF\"/>\n                    </connections>\n                </viewController>\n                <customObject id=\"Q2y-PY-QrU\" userLabel=\"First Responder\" customClass=\"NSResponder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"-69\" y=\"799.5\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/CLLocationManager+RxTests.swift",
    "content": "//\n//  CLLocationManager+RxTests.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreLocation\nimport RxCocoa\nimport RxExample_iOS\nimport RxSwift\nimport XCTest\n\nclass CLLocationManagerTests: RxTest {}\n\n// delegate methods\n\nextension CLLocationManagerTests {\n    func testDidUpdateLocations() {\n        var completed = false\n        var location: CLLocation?\n\n        let targetLocation = CLLocation(latitude: 90, longitude: 180)\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didUpdateLocations.subscribe(onNext: { l in\n                location = l[0]\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didUpdateLocations: [targetLocation])\n        }\n\n        XCTAssertEqual(location?.coordinate.latitude, targetLocation.coordinate.latitude)\n        XCTAssertEqual(location?.coordinate.longitude, targetLocation.coordinate.longitude)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidFailWithError() {\n        var completed = false\n        var error: Error?\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didFailWithError.subscribe(onNext: { e in\n                error = e\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didFailWithError: testError)\n        }\n\n        XCTAssertEqual(error! as NSError, testError)\n        XCTAssertTrue(completed)\n    }\n\n    #if os(iOS) || os(macOS)\n\n    func testDidFinishDeferredUpdatesWithError() {\n        var completed = false\n        var error: Error?\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didFinishDeferredUpdatesWithError.subscribe(onNext: { e in\n                error = e\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didFinishDeferredUpdatesWithError: testError)\n        }\n\n        XCTAssertEqual(error! as NSError, testError)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidFinishDeferredUpdatesWithError_noError() {\n        var completed = false\n        var error: Error?\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didFinishDeferredUpdatesWithError.subscribe(onNext: { e in\n                error = e\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didFinishDeferredUpdatesWithError: nil)\n        }\n\n        XCTAssertEqual(error.map { $0 as NSError }, nil)\n        XCTAssertTrue(completed)\n    }\n\n    #endif\n\n    #if os(iOS)\n\n    func testDidPauseLocationUpdates() {\n        var completed = false\n        var updates: ()?\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didPauseLocationUpdates.subscribe(onNext: { u in\n                updates = u\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManagerDidPauseLocationUpdates!(manager)\n        }\n\n        XCTAssertTrue(updates != nil)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidResumeLocationUpdates() {\n        var completed = false\n        var updates: ()?\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didResumeLocationUpdates.subscribe(onNext: { _ in\n                updates = ()\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManagerDidResumeLocationUpdates!(manager)\n        }\n\n        XCTAssertTrue(updates != nil)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidUpdateHeading() {\n        var completed = false\n        var heading: CLHeading?\n\n        let targetHeading = CLHeading()\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didUpdateHeading.subscribe(onNext: { n in\n                heading = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didUpdateHeading: targetHeading)\n        }\n\n        XCTAssertEqual(heading, targetHeading)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidEnterRegion() {\n        var completed = false\n        var value: CLRegion?\n\n        let targetValue = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 90, longitude: 180), radius: 10, identifier: \"unit tests in cloud\")\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didEnterRegion.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didEnterRegion: targetValue)\n        }\n\n        XCTAssertEqual(value, targetValue)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidExitRegion() {\n        var completed = false\n        var value: CLRegion?\n\n        let targetValue = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 90, longitude: 180), radius: 10, identifier: \"unit tests in cloud\")\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didExitRegion.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didExitRegion: targetValue)\n        }\n\n        XCTAssertEqual(value, targetValue)\n        XCTAssertTrue(completed)\n    }\n\n    #endif\n\n    #if os(iOS) || os(macOS)\n\n    func testDidDetermineStateForRegion() {\n        var completed = false\n        var value: (CLRegionState, CLRegion)?\n\n        let targetValue = (CLRegionState.inside, CLCircularRegion(center: CLLocationCoordinate2D(latitude: 90, longitude: 180), radius: 10, identifier: \"unit tests in cloud\"))\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didDetermineStateForRegion.subscribe(onNext: { n in\n                value = (n.state, n.region)\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didDetermineState: targetValue.0, for: targetValue.1)\n        }\n\n        XCTAssertEqual(value?.0, targetValue.0)\n        XCTAssertEqual(value?.1, targetValue.1)\n        XCTAssertTrue(completed)\n    }\n\n    func testMonitorOfKnownRegionDidFailWithError() {\n        var completed = false\n        var region: CLRegion?\n        var error: Error?\n\n        let targetRegion = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 90, longitude: 180), radius: 10, identifier: \"unit tests in cloud\")\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.monitoringDidFailForRegionWithError.subscribe(onNext: { l in\n                region = l.region\n                error = l.error\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, monitoringDidFailFor: targetRegion, withError: testError)\n        }\n\n        XCTAssertEqual(targetRegion, region)\n        XCTAssertEqual(error! as NSError, testError)\n        XCTAssertTrue(completed)\n    }\n\n    func testMonitorOfUnknownRegionDidFailWithError() {\n        var completed = false\n        var region: CLRegion?\n        var error: Error?\n\n        let targetRegion: CLRegion? = nil\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.monitoringDidFailForRegionWithError.subscribe(onNext: { l in\n                region = l.region\n                error = l.error\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, monitoringDidFailFor: targetRegion, withError: testError)\n        }\n\n        XCTAssertEqual(targetRegion, region)\n        XCTAssertEqual(error! as NSError, testError)\n        XCTAssertTrue(completed)\n    }\n\n    func testStartMonitoringForRegion() {\n        var completed = false\n        var value: CLRegion?\n\n        let targetValue = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 90, longitude: 180), radius: 10, identifier: \"unit tests in cloud\")\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didStartMonitoringForRegion.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didStartMonitoringFor: targetValue)\n        }\n\n        XCTAssertEqual(value, targetValue)\n        XCTAssertTrue(completed)\n    }\n\n    #endif\n\n    #if os(iOS)\n    func testDidRangeBeaconsInRegion() {\n        var completed = false\n        var value: ([CLBeacon], CLBeaconRegion)?\n\n        let targetValue = (\n            // [CLBeacon()]\n            // TODO: This crashes on Xcode 8.0 beta version\n            // this is temporary workaround\n            [] as [CLBeacon],\n            CLBeaconRegion(proximityUUID: UUID(uuidString: \"68753A44-4D6F-1226-9C60-0050E4C00067\")!, identifier: \"1231231\")\n        )\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didRangeBeaconsInRegion.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didRangeBeacons: targetValue.0, in: targetValue.1)\n        }\n\n        XCTAssertEqual(value!.0, targetValue.0)\n        XCTAssertEqual(value!.1, targetValue.1)\n        XCTAssertTrue(completed)\n    }\n\n    func testRangingBeaconsDidFailForRegionWithError() {\n        var completed = false\n        var value: (CLBeaconRegion, Error)?\n\n        let targetValue = (\n            CLBeaconRegion(proximityUUID: UUID(uuidString: \"68753A44-4D6F-1226-9C60-0050E4C00067\")!, identifier: \"1231231\"),\n            testError\n        )\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.rangingBeaconsDidFailForRegionWithError.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, rangingBeaconsDidFailFor: targetValue.0, withError: targetValue.1)\n        }\n\n        XCTAssertEqual(value!.0, targetValue.0)\n        XCTAssertEqual(value!.1 as NSError, targetValue.1)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidVisit() {\n        var completed = false\n        var value: CLVisit?\n\n        let targetValue =\n            CLVisit()\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didVisit.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didVisit: targetValue)\n        }\n\n        XCTAssertEqual(value, targetValue)\n        XCTAssertTrue(completed)\n    }\n    #endif\n\n    func testDidChangeAuthorizationStatus() {\n        var completed = false\n        var authorizationStatus: CLAuthorizationStatus?\n\n        #if os(tvOS)\n        let targetAuthorizationStatus = CLAuthorizationStatus.authorizedAlways\n        #elseif os(iOS)\n        let targetAuthorizationStatus = CLAuthorizationStatus.authorizedAlways\n        #else\n        let targetAuthorizationStatus = CLAuthorizationStatus.authorized\n        #endif\n\n        autoreleasepool {\n            let manager = CLLocationManager()\n\n            _ = manager.rx.didChangeAuthorizationStatus.subscribe(onNext: { status in\n                authorizationStatus = status\n            }, onCompleted: {\n                completed = true\n            })\n\n            manager.delegate!.locationManager!(manager, didChangeAuthorization: targetAuthorizationStatus)\n        }\n\n        XCTAssertEqual(authorizationStatus, targetAuthorizationStatus)\n        XCTAssertTrue(completed)\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>\n\t<string>We use it</string>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string>We use it</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/Mocks/MockGitHubAPI.swift",
    "content": "//\n//  MockGitHubAPI.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nclass MockGitHubAPI: GitHubAPI {\n    let _usernameAvailable: (String) -> Observable<Bool>\n    let _signup: ((String, String)) -> Observable<Bool>\n\n    init(\n        usernameAvailable: @escaping (String) -> Observable<Bool> = notImplemented(),\n        signup: @escaping ((String, String)) -> Observable<Bool> = notImplemented()\n    ) {\n        _usernameAvailable = usernameAvailable\n        _signup = signup\n    }\n\n    func usernameAvailable(_ username: String) -> Observable<Bool> {\n        _usernameAvailable(username)\n    }\n\n    func signup(_ username: String, password: String) -> Observable<Bool> {\n        _signup((username, password))\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/Mocks/MockWireframe.swift",
    "content": "//\n//  MockWireframe.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\nclass MockWireframe: Wireframe {\n    let _openURL: (URL) -> Void\n    let _promptFor: (String, Any, [Any]) -> Observable<Any>\n\n    init(\n        openURL: @escaping (URL) -> Void = notImplementedSync(),\n        promptFor: @escaping (String, Any, [Any]) -> Observable<Any> = notImplemented()\n    ) {\n        _openURL = openURL\n        _promptFor = promptFor\n    }\n\n    func open(url: URL) {\n        _openURL(url)\n    }\n\n    func promptFor<Action: CustomStringConvertible>(_ message: String, cancelAction: Action, actions: [Action]) -> Observable<Action> {\n        _promptFor(message, cancelAction, actions.map { $0 as Any }).map { $0 as! Action }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/Mocks/NotImplementedStubs.swift",
    "content": "//\n//  NotImplementedStubs.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\n\nimport Foundation\n\nfunc genericFatal<T>(_ message: String) -> T {\n    if Int(arc4random() % 4) == -1 {\n        print(\"This is hack to remove warning\")\n    }\n    _ = fatalError(message)\n}\n\n// MARK: Generic support code\n\n// MARK: Not implemented stubs\n\nfunc notImplemented<T1, T2>() -> (T1) -> Observable<T2> {\n    { _ -> Observable<T2> in\n        return genericFatal(\"Not implemented\")\n    }\n}\n\nfunc notImplemented<T1, T2, T3>() -> (T1, T2) -> Observable<T3> {\n    { _, _ -> Observable<T3> in\n        return genericFatal(\"Not implemented\")\n    }\n}\n\nfunc notImplemented<T1, T2, T3, T4>() -> (T1, T2, T3) -> Observable<T4> {\n    { _, _, _ -> Observable<T4> in\n        return genericFatal(\"Not implemented\")\n    }\n}\n\nfunc notImplementedSync<T1>() -> (T1) -> Void {\n    { _ in\n        genericFatal(\"Not implemented\")\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/Mocks/ValidationResult+Equatable.swift",
    "content": "//\n//  ValidationResult+Equatable.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: Equatable\n\nextension ValidationResult: Equatable {}\n\nfunc == (lhs: ValidationResult, rhs: ValidationResult) -> Bool {\n    switch (lhs, rhs) {\n    case (.ok, .ok):\n        true\n    case (.empty, .empty):\n        true\n    case (.validating, .validating):\n        true\n    case (.failed, .failed):\n        true\n    default:\n        false\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/RxExample_iOSTests.swift",
    "content": "//\n//  RxExample_iOSTests.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\n\nlet resolution: TimeInterval = 0.2 // seconds\n\n// MARK: Concrete tests\n\n/**\n This is just an example of one way how this can be done.\n */\nclass RxExample_iOSTests:\n    XCTestCase\n{\n    let booleans = [\"t\": true, \"f\": false]\n    let events = [\"x\": ()]\n    let errors = [\n        \"#1\": NSError(domain: \"Some unknown error maybe\", code: -1, userInfo: nil),\n        \"#u\": NSError(domain: NSURLErrorDomain, code: NSURLErrorTimedOut, userInfo: nil)\n    ]\n    let validations = [\n        \"e\": ValidationResult.empty,\n        \"f\": ValidationResult.failed(message: \"\"),\n        \"o\": ValidationResult.ok(message: \"Validated\"),\n        \"v\": ValidationResult.validating\n    ]\n\n    let stringValues = [\n        \"u1\": \"verysecret\",\n        \"u2\": \"secretuser\",\n        \"u3\": \"secretusername\",\n        \"p1\": \"huge secret\",\n        \"p2\": \"secret\",\n        \"e\": \"\"\n    ]\n\n    ////////////////////////////////////////////////////////////////////////////////\n    // This is test of enabled user interface elements.\n    // I guess you could do this for view models, but this is probably overkill to\n    // do.\n    //\n    // It's probably more suitable for some vital components of your system, but\n    // the principle is the same.\n    ////////////////////////////////////////////////////////////////////////////////\n    func testGitHubSignup_vanillaObservables_1_testEnabledUserInterfaceElements() {\n        let scheduler = TestScheduler(initialClock: 0, resolution: resolution, simulateProcessingDelay: false)\n\n        // mock the universe\n        let mockAPI = mockGithubAPI(scheduler: scheduler)\n\n        // expected events and test data\n        let (\n            usernameEvents,\n            passwordEvents,\n            repeatedPasswordEvents,\n            loginTapEvents,\n\n            expectedValidatedUsernameEvents,\n            expectedSignupEnabledEvents\n        ) = (\n            scheduler.parseEventsAndTimes(timeline: \"e---u1----u2-----u3-----------------\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"e----------------------p1-----------\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"e---------------------------p2---p1-\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"------------------------------------\", values: events).first!,\n\n            scheduler.parseEventsAndTimes(timeline: \"e---v--f--v--f---v--o----------------\", values: validations).first!,\n            scheduler.parseEventsAndTimes(timeline: \"f--------------------------------t---\", values: booleans).first!\n        )\n\n        let wireframe = MockWireframe()\n        let validationService = GitHubDefaultValidationService(API: mockAPI)\n\n        let viewModel = GithubSignupViewModel1(\n            input: (\n                username: scheduler.createHotObservable(usernameEvents).asObservable(),\n                password: scheduler.createHotObservable(passwordEvents).asObservable(),\n                repeatedPassword: scheduler.createHotObservable(repeatedPasswordEvents).asObservable(),\n                loginTaps: scheduler.createHotObservable(loginTapEvents).asObservable()\n            ),\n            dependency: (\n                API: mockAPI,\n                validationService: validationService,\n                wireframe: wireframe\n            )\n        )\n\n        // run experiment\n        let recordedSignupEnabled = scheduler.record(source: viewModel.signupEnabled)\n        let recordedValidatedUsername = scheduler.record(source: viewModel.validatedUsername)\n\n        scheduler.start()\n\n        // validate\n        XCTAssertEqual(recordedValidatedUsername.events, expectedValidatedUsernameEvents)\n        XCTAssertEqual(recordedSignupEnabled.events, expectedSignupEnabledEvents)\n    }\n\n    func testGitHubSignup_drivers_2_testEnabledUserInterfaceElements() {\n        let scheduler = TestScheduler(initialClock: 0, resolution: resolution, simulateProcessingDelay: false)\n\n        // mock the universe\n        let mockAPI = mockGithubAPI(scheduler: scheduler)\n\n        // expected events and test data\n        let (\n            usernameEvents,\n            passwordEvents,\n            repeatedPasswordEvents,\n            loginTapEvents,\n\n            expectedValidatedUsernameEvents,\n            expectedSignupEnabledEvents\n        ) = (\n            scheduler.parseEventsAndTimes(timeline: \"e---u1----u2-----u3-----------------\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"e----------------------p1-----------\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"e---------------------------p2---p1-\", values: stringValues).first!,\n            scheduler.parseEventsAndTimes(timeline: \"------------------------------------\", values: events).first!,\n\n            scheduler.parseEventsAndTimes(timeline: \"e---v--f--v--f---v--o----------------\", values: validations).first!,\n            scheduler.parseEventsAndTimes(timeline: \"f--------------------------------t---\", values: booleans).first!\n        )\n\n        let wireframe = MockWireframe()\n        let validationService = GitHubDefaultValidationService(API: mockAPI)\n\n        /**\n         This is important because driver will try to ensure that elements are being pumped on main scheduler,\n         and that sometimes means that it will get queued using `dispatch_async` to main dispatch queue and\n         not get flushed until end of the test.\n\n         This method enables using mock schedulers for while testing drivers.\n         */\n        SharingScheduler.mock(scheduler: scheduler) {\n            let viewModel = GithubSignupViewModel2(\n                input: (\n                    username: scheduler.createHotObservable(usernameEvents).asDriver(onErrorJustReturn: \"\"),\n                    password: scheduler.createHotObservable(passwordEvents).asDriver(onErrorJustReturn: \"\"),\n                    repeatedPassword: scheduler.createHotObservable(repeatedPasswordEvents).asDriver(onErrorJustReturn: \"\"),\n                    loginTaps: scheduler.createHotObservable(loginTapEvents).asSignal(onErrorJustReturn: ())\n                ),\n                dependency: (\n                    API: mockAPI,\n                    validationService: validationService,\n                    wireframe: wireframe\n                )\n            )\n\n            // run experiment\n            let recordedSignupEnabled = scheduler.record(source: viewModel.signupEnabled)\n            let recordedValidatedUsername = scheduler.record(source: viewModel.validatedUsername)\n\n            scheduler.start()\n\n            // validate\n            XCTAssertEqual(recordedValidatedUsername.events, expectedValidatedUsernameEvents)\n            XCTAssertEqual(recordedSignupEnabled.events, expectedSignupEnabledEvents)\n        }\n    }\n}\n\n// MARK: Mocks\n\nextension RxExample_iOSTests {\n    func mockGithubAPI(scheduler: TestScheduler) -> GitHubAPI {\n        MockGitHubAPI(\n            usernameAvailable: scheduler.mock(values: booleans, errors: errors) { username -> String in\n                if username == \"secretusername\" {\n                    return \"---t\"\n                } else if username == \"secretuser\" {\n                    return \"---#1\"\n                } else {\n                    return \"---f\"\n                }\n            },\n            signup: scheduler.mock(values: booleans, errors: errors) { (args: (String, String)) -> String in\n                let (username, password) = args\n                if username == \"secretusername\", password == \"secret\" {\n                    return \"--t\"\n                } else {\n                    return \"--f\"\n                }\n            }\n        )\n    }\n}\n\n// MARK: Mocks\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/RxTest.swift",
    "content": "//\n//  RxTest.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 9/11/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nclass RxTest: XCTestCase {}\n\nlet testError = NSError(domain: \"dummyError\", code: -232, userInfo: nil)\nlet testError1 = NSError(domain: \"dummyError1\", code: -233, userInfo: nil)\nlet testError2 = NSError(domain: \"dummyError2\", code: -234, userInfo: nil)\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/TestScheduler+MarbleTests.swift",
    "content": "//\n//  TestScheduler+MarbleTests.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 12/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\n\n/**\n There are examples like this all over the web, but I think that I've first something like this here\n  https://github.com/ReactiveX/RxJS/blob/master/doc/writing-marble-tests.md\n\n These tests are called marble tests.\n\n */\nextension TestScheduler {\n    /**\n      Transformation from this format:\n\n      ---a---b------c-----\n\n      to this format\n\n      schedule onNext(1) @ 0.6s\n      schedule onNext(2) @ 1.4s\n      schedule onNext(3) @ 7.0s\n         ....\n      ]\n\n      You can also specify retry data in this format:\n\n         ---a---b------c----#|----a--#|----b\n\n     - letters and digits mark values\n     - `#` marks unknown error\n     - `|` marks sequence completed\n\n     */\n    func parseEventsAndTimes<T>(timeline: String, values: [String: T], errors: [String: Swift.Error] = [:]) -> [[Recorded<Event<T>>]] {\n        // print(\"parsing: \\(timeline)\")\n        typealias RecordedEvent = Recorded<Event<T>>\n\n        let timelines = timeline.components(separatedBy: \"|\")\n\n        let allExceptLast = timelines[0 ..< timelines.count - 1]\n\n        return (allExceptLast.map { $0 + \"|\" } + [timelines.last!])\n            .filter { $0.count > 0 }\n            .map { timeline -> [Recorded<Event<T>>] in\n                let segments = timeline.components(separatedBy: \"-\")\n                let (time: _, events: events) = segments.reduce((time: 0, events: [RecordedEvent]())) { state, event in\n                    let tickIncrement = event.count + 1\n\n                    if event.count == 0 {\n                        return (state.time + tickIncrement, state.events)\n                    }\n\n                    if event == \"#\" {\n                        let errorEvent = RecordedEvent(time: state.time, value: Event<T>.error(NSError(domain: \"Any error domain\", code: -1, userInfo: nil)))\n                        return (state.time + tickIncrement, state.events + [errorEvent])\n                    }\n\n                    if event == \"|\" {\n                        let completed = RecordedEvent(time: state.time, value: Event<T>.completed)\n                        return (state.time + tickIncrement, state.events + [completed])\n                    }\n\n                    guard let next = values[event] else {\n                        guard let error = errors[event] else {\n                            fatalError(\"Value with key \\(event) not registered as value:\\n\\(values)\\nor error:\\n\\(errors)\")\n                        }\n\n                        let nextEvent = RecordedEvent(time: state.time, value: Event<T>.error(error))\n                        return (state.time + tickIncrement, state.events + [nextEvent])\n                    }\n\n                    let nextEvent = RecordedEvent(time: state.time, value: Event<T>.next(next))\n                    return (state.time + tickIncrement, state.events + [nextEvent])\n                }\n\n                // print(\"parsed: \\(events)\")\n                return events\n            }\n    }\n\n    /**\n      Creates driver for marble test.\n\n      - parameter timeline: Timeline in the form `---a---b------c--|`\n      - parameter values: Dictionary of values in timeline. `[a:1, b:2]`\n\n      - returns: Driver specified by timeline and values.\n     */\n    func createDriver<T>(timeline: String, values: [String: T]) -> Driver<T> {\n        createObservable(timeline: timeline, values: values, errors: [:]).asDriver(onErrorRecover: { _ -> Driver<T> in\n            genericFatal(\"This can't error out\")\n        })\n    }\n\n    /**\n      Creates observable for marble tests.\n\n      - parameter timeline: Timeline in the form `---a---b------c--|`\n      - parameter values: Dictionary of values in timeline. `[a:1, b:2]`\n      - parameter errors: Dictionary of errors in timeline.\n\n      - returns: Observable sequence specified by timeline and values.\n     */\n    func createObservable<T>(timeline: String, values: [String: T], errors: [String: Swift.Error] = [:]) -> Observable<T> {\n        let events = parseEventsAndTimes(timeline: timeline, values: values, errors: errors)\n        return createObservable(events)\n    }\n\n    /**\n      Creates observable for marble tests.\n\n      - parameter events: Recorded events to replay.\n\n      - returns: Observable sequence specified by timeline and values.\n     */\n    func createObservable<T>(_ events: [Recorded<Event<T>>]) -> Observable<T> {\n        createObservable([events])\n    }\n\n    /**\n      Creates observable for marble tests.\n\n      - parameter events: Recorded events to replay. This overloads enables modeling of retries.\n         `---a---b------c----#|----a--#|----b`\n         When next observer is subscribed, next sequence will be replayed. If all sequences have\n         been replayed and new observer is subscribed, `fatalError` will be raised.\n\n      - returns: Observable sequence specified by timeline and values.\n     */\n    func createObservable<T>(_ events: [[Recorded<Event<T>>]]) -> Observable<T> {\n        var attemptCount = 0\n        print(\"created for \\(events)\")\n\n        return Observable.create { observer in\n            if attemptCount >= events.count {\n                fatalError(\"This is attempt # \\(attemptCount + 1), but timeline only allows \\(events.count).\\n\\(events)\")\n            }\n\n            let scheduledEvents = events[attemptCount].map { event in\n                self.scheduleRelative((), dueTime: resolution * TimeInterval(event.time)) { _ in\n                    observer.on(event.value)\n                    return Disposables.create()\n                }\n            }\n\n            attemptCount += 1\n\n            return Disposables.create(scheduledEvents)\n        }\n    }\n\n    /**\n     Enables simple construction of mock implementations from marble timelines.\n\n     - parameter Arg: Type of arguments of mocked method.\n     - parameter Ret: Return type of mocked method. `Observable<Ret>`\n\n     - parameter values: Dictionary of values in timeline. `[a:1, b:2]`\n     - parameter errors: Dictionary of errors in timeline.\n     - parameter timelineSelector: Method implementation. The returned string value represents timeline of\n        returned observable sequence. `---a---b------c----#|----a--#|----b`\n\n     - returns: Implementation of method that accepts arguments with parameter `Arg` and returns observable sequence\n        with parameter `Ret`.\n     */\n    func mock<Arg, Ret>(values: [String: Ret], errors: [String: Swift.Error] = [:], timelineSelector: @escaping (Arg) -> String) -> (Arg) -> Observable<Ret> {\n        { (parameters: Arg) -> Observable<Ret> in\n            let timeline = timelineSelector(parameters)\n\n            return self.createObservable(timeline: timeline, values: values, errors: errors)\n        }\n    }\n\n    /**\n      Builds testable observer for s specific observable sequence, binds it's results and sets up disposal.\n\n      - parameter source: Observable sequence to observe.\n      - returns: Observer that records all events for observable sequence.\n     */\n    func record<Source: ObservableConvertibleType>(source: Source) -> TestableObserver<Source.Element> {\n        let observer = createObserver(Source.Element.self)\n        let disposable = source.asObservable().bind(to: observer)\n        scheduleAt(100_000) {\n            disposable.dispose()\n        }\n        return observer\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSTests/UIImagePickerController+RxTests.swift",
    "content": "//\n//  UIImagePickerController+RxTests.swift\n//  RxExample\n//\n//  Created by Segii Shulga on 1/6/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxExample_iOS\nimport RxSwift\nimport UIKit\nimport XCTest\n\nclass UIImagePickerControllerTests: RxTest {}\n\nextension UIImagePickerControllerTests {\n    func testDidFinishPickingMediaWithInfo() {\n        var completed = false\n        var info: [String: AnyObject]?\n\n        let pickedInfo = [UIImagePickerControllerOriginalImage: UIImage()]\n\n        autoreleasepool {\n            let imagePickerController = UIImagePickerController()\n\n            _ = imagePickerController.rx.didFinishPickingMediaWithInfo\n                .subscribe(onNext: { i in\n                    info = i\n                }, onCompleted: {\n                    completed = true\n                })\n\n            imagePickerController.delegate!\n                .imagePickerController!(imagePickerController, didFinishPickingMediaWithInfo: pickedInfo)\n        }\n\n        XCTAssertTrue(info?[UIImagePickerControllerOriginalImage] === pickedInfo[UIImagePickerControllerOriginalImage])\n        XCTAssertTrue(completed)\n    }\n\n    func testDidCancel() {\n        var completed = false\n        var canceled = false\n\n        autoreleasepool {\n            let imagePickerController = UIImagePickerController()\n\n            _ = imagePickerController.rx.didCancel\n                .subscribe(onNext: { _ in\n                    canceled = true\n                }, onCompleted: {\n                    completed = true\n                })\n            imagePickerController.delegate!.imagePickerControllerDidCancel!(imagePickerController)\n        }\n        XCTAssertTrue(canceled)\n        XCTAssertTrue(completed)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "RxExample/RxExample-iOSUITests/FlowTests.swift",
    "content": "//\n//  FlowTests.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 8/20/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nclass FlowTests: XCTestCase {\n    var app: XCUIApplication!\n    override func setUp() {\n        super.setUp()\n\n        continueAfterFailure = false\n        app = XCUIApplication()\n        app.launchEnvironment = [\"isUITest\": \"\"]\n        app.launch()\n    }\n\n    override func tearDown() {\n        sleep(1)\n    }\n}\n\nextension FlowTests {\n    func testGitHubSignUp() {\n        app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex[3].tap()\n        let username = app.textFields.allElementsBoundByIndex[0]\n        let password = app.secureTextFields.allElementsBoundByIndex[0]\n        let repeatedPassword = app.secureTextFields.allElementsBoundByIndex[1]\n\n        username.tap()\n        username.typeText(\"rxrevolution\")\n\n        password.tap()\n        password.typeText(\"mypassword\")\n\n        repeatedPassword.tap()\n        repeatedPassword.typeText(\"mypassword\")\n\n        app.windows.allElementsBoundByIndex[0].coordinate(withNormalizedOffset: CGVector(dx: 14.50, dy: 80.00)).tap()\n        app.buttons[\"Sign up\"].tap()\n\n        waitForElementToAppear(app.alerts.element(boundBy: 0))\n\n        app.alerts.allElementsBoundByIndex[0].buttons.allElementsBoundByIndex[0].tap()\n\n        goBack()\n    }\n\n    func testSearchWikipedia() {\n        app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex[13].tap()\n\n        let searchField = app.tables.children(matching: .searchField).element\n\n        searchField.tap()\n\n        searchField.typeSlow(text: \"banana\")\n        searchField.clearText()\n        searchField.typeSlow(text: \"Yosemite\")\n        searchField.clearText()\n\n        goBack()\n    }\n\n    func testMasterDetail() {\n        app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex[11].tap()\n        waitForElementToAppear(app.tables.allElementsBoundByIndex[0].cells.element(boundBy: 5), timeout: 10.0)\n\n        let editButton = app.navigationBars.buttons[\"Edit\"]\n\n        editButton.tap()\n\n        func reorderButtonForIndex(_ index: Int) -> XCUIElement {\n            app.tables.cells.allElementsBoundByIndex[index].buttons.allElementsBoundByIndex.filter { element in\n                element.label.hasPrefix(\"Reorder \")\n            }.first!\n        }\n\n        reorderButtonForIndex(5).press(forDuration: 1.5, thenDragTo: reorderButtonForIndex(2))\n\n        reorderButtonForIndex(7).press(forDuration: 1.5, thenDragTo: reorderButtonForIndex(4))\n\n        reorderButtonForIndex(1).press(forDuration: 1.5, thenDragTo: reorderButtonForIndex(3))\n\n        let doneButton = app.navigationBars.buttons[\"Done\"]\n        doneButton.tap()\n\n        app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex[6].tap()\n\n        goBack()\n        goBack()\n    }\n\n    func testAnimatedPartialUpdates() {\n        app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex[12].tap()\n\n        wait(interval: 1.0)\n\n        let randomize = app.navigationBars.buttons[\"Randomize\"]\n        waitForElementToAppear(randomize, timeout: 5)\n\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n        randomize.tap()\n\n        goBack()\n    }\n\n    func testVisitEveryScreen() {\n        let cells = app.tables.allElementsBoundByIndex[0].cells.allElementsBoundByIndex\n        XCTAssertTrue(cells.count > 0)\n\n        for i in 0 ..< cells.count {\n            cells[i].tap()\n            goBack()\n        }\n    }\n}\n\nextension FlowTests {\n    func testControls() {\n        for test in [\n            _testUISwitch,\n            _testUITextView,\n            _testUITextField,\n            _testDatePicker,\n            _testBarButtonItemTap,\n            _testButtonTap,\n            _testSegmentedControl,\n            _testSlider\n        ] {\n            goToControlsView()\n            test()\n            goBack()\n        }\n    }\n\n    func goToControlsView() {\n        let tableView = app.tables.element(boundBy: 0)\n\n        waitForElementToAppear(tableView)\n\n        tableView.cells.allElementsBoundByIndex[5].tap()\n    }\n\n    func checkDebugLabelValue(_ expected: String, hasPrefix: Bool = false) {\n        let textValue = app.staticTexts[\"debugLabel\"].value as? String\n        if hasPrefix {\n            XCTAssertTrue((textValue ?? \"\").hasPrefix(expected))\n        } else {\n            XCTAssertEqual(textValue, expected)\n        }\n    }\n\n    func _testDatePicker() {\n        let picker = app.datePickers.allElementsBoundByIndex[0]\n        picker.pickerWheels.element(boundBy: 0).coordinate(withNormalizedOffset: CGVector(dx: 0.49, dy: 0.65)).tap()\n        picker.pickerWheels.element(boundBy: 1).coordinate(withNormalizedOffset: CGVector(dx: 0.35, dy: 0.64)).tap()\n        picker.pickerWheels.element(boundBy: 2).coordinate(withNormalizedOffset: CGVector(dx: 0.46, dy: 0.64)).tap()\n\n        wait(interval: 1.0)\n\n        checkDebugLabelValue(\"UIDatePicker date 1970-01-02 01:01:00 +0000\")\n    }\n\n    func _testBarButtonItemTap() {\n        app.navigationBars.buttons[\"TapMe\"].tap()\n        checkDebugLabelValue(\"UIBarButtonItem Tapped\")\n    }\n\n    func _testButtonTap() {\n        app.scrollViews.buttons[\"TapMe\"].tap()\n        checkDebugLabelValue(\"UIButton Tapped\")\n    }\n\n    func _testSegmentedControl() {\n        let segmentedControl = app.scrollViews.segmentedControls.allElementsBoundByIndex[0]\n        segmentedControl.buttons[\"Second\"].tap()\n        checkDebugLabelValue(\"UISegmentedControl value 1\")\n        segmentedControl.buttons[\"First\"].tap()\n        checkDebugLabelValue(\"UISegmentedControl value 0\")\n    }\n\n    @available(*, deprecated, message: \"Something broke with Xcode 9.4 automation :(\")\n    func _testUISwitch() {\n//        let switchControl = app.switches[\"TestSwitch\"];\n//        switchControl.doubleTap()\n//        checkDebugLabelValue(\"UISwitch value false\")\n//        switchControl.tap()\n//        switchControl.tap()\n//        checkDebugLabelValue(\"UISwitch value true\")\n    }\n\n    func _testUITextField() {\n        let textField = app.textFields.allElementsBoundByIndex[0]\n        textField.tap()\n        textField.typeText(\"f\")\n        checkDebugLabelValue(\"UITextField text f\")\n        let textField2 = app.textFields.allElementsBoundByIndex[1]\n        textField2.tap()\n        textField2.typeText(\"f2\")\n        checkDebugLabelValue(\"UITextField attributedText f2{\", hasPrefix: true)\n    }\n\n    func _testUITextView() {\n        let textView = app.textViews.allElementsBoundByIndex[0]\n        textView.tap()\n        textView.typeText(\"f\")\n        checkDebugLabelValue(\"UITextView text f\")\n        goBack()\n        goToControlsView()\n        let textView2 = app.textViews.allElementsBoundByIndex[1]\n        textView2.tap()\n        textView2.typeText(\"f2\")\n        checkDebugLabelValue(\"UITextView attributedText f2{\", hasPrefix: true)\n    }\n\n    func _testSlider() {\n        let slider = app.sliders.allElementsBoundByIndex[0]\n        slider.adjust(toNormalizedSliderPosition: 0)\n        checkDebugLabelValue(\"UISlider value 0.0\", hasPrefix: true)\n    }\n}\n\nextension FlowTests {\n    func goBack() {\n        wait(interval: 1.0)\n        let window = app.windows.element(boundBy: 0)\n        window.coordinate(withNormalizedOffset: .zero).withOffset(CGVector(dx: 40, dy: 30)).tap()\n        wait(interval: 1.5)\n    }\n\n    func waitForElementToAppear(_ element: XCUIElement, timeout: TimeInterval = 2, file: String = #file, line: Int = #line) {\n        let existsPredicate = NSPredicate(format: \"exists == true\")\n\n        expectation(\n            for: existsPredicate,\n            evaluatedWith: element,\n            handler: nil\n        )\n\n        waitForExpectations(timeout: timeout) { error in\n            if error != nil {\n                let message = \"Failed to find \\(element) after \\(timeout) seconds.\"\n                self.recordFailure(withDescription: message, inFile: file, atLine: line, expected: true)\n            }\n        }\n    }\n\n    func wait(interval: TimeInterval) {\n        RunLoop.current.run(until: Date().addingTimeInterval(interval))\n    }\n}\n\nextension XCUIElement {\n    func clearText() {\n        let backspace = \"\\u{8}\"\n        let backspaces = Array((value as? String) ?? \"\").map { _ in backspace }\n        typeText(backspaces.joined(separator: \"\"))\n    }\n\n    func typeSlow(text: String) {\n        for i in text {\n            typeText(String(i))\n        }\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample-iOSUITests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample-macOSUITests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxExample/RxExample-macOSUITests/RxExample_macOSUITests.swift",
    "content": "//\n//  RxExample_macOSUITests.swift\n//  RxExample\n//\n//  Created by Krunoslav Zaher on 10/30/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nclass RxExample_macOSUITests: XCTestCase {\n    override func setUp() {\n        super.setUp()\n\n        // Put setup code here. This method is called before the invocation of each test method in the class.\n\n        // In UI tests it is usually best to stop immediately when a failure occurs.\n        continueAfterFailure = false\n        // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method.\n        XCUIApplication().launch()\n\n        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n    }\n\n    func testExample() {\n        // Use recording to get started writing UI tests.\n        // Use XCTAssert and related functions to verify your tests produce the correct results.\n    }\n}\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t0744CDD41C4DB5F000720FD2 /* GeolocationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0744CDD31C4DB5F000720FD2 /* GeolocationService.swift */; };\n\t\t0744CDED1C4DB78600720FD2 /* GeolocationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0744CDEC1C4DB78600720FD2 /* GeolocationViewController.swift */; };\n\t\t075F13101B4E9D5A000D7861 /* APIWrappersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 075F130F1B4E9D5A000D7861 /* APIWrappersViewController.swift */; };\n\t\t07A5C3DB1B70B703001EFE5C /* CalculatorViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07A5C3DA1B70B703001EFE5C /* CalculatorViewController.swift */; };\n\t\t07E3C2331B03605B0010338D /* Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E3C2321B03605B0010338D /* Dependencies.swift */; };\n\t\t252C9F781F14111800F5F951 /* SimplePickerViewExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 252C9F771F14111800F5F951 /* SimplePickerViewExampleViewController.swift */; };\n\t\t252C9F7A1F14115B00F5F951 /* SimpleUIPickerViewExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 252C9F791F14115B00F5F951 /* SimpleUIPickerViewExample.storyboard */; };\n\t\t2864D5F21D995FCD004F8484 /* Application+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2864D5F11D995FCD004F8484 /* Application+Extensions.swift */; };\n\t\t2864D5F31D995FCD004F8484 /* Application+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2864D5F11D995FCD004F8484 /* Application+Extensions.swift */; };\n\t\t8479BC721C3BDAD400FB8B54 /* ImagePickerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8479BC701C3BCB9800FB8B54 /* ImagePickerController.swift */; };\n\t\t927A78B82117A5E700A45638 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BCD3DE1C1480E9005F1280 /* Operators.swift */; };\n\t\tA34040282C47AC34009E3F74 /* BaseNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A34040202C47AC2F009E3F74 /* BaseNavigationController.swift */; };\n\t\tA5CD038F1F1670E50005A376 /* CustomPickerViewAdapterExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CD038E1F1670E50005A376 /* CustomPickerViewAdapterExampleViewController.swift */; };\n\t\tAE51C1C91DE735D8005BAF5F /* APIWrappers.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1C81DE735D8005BAF5F /* APIWrappers.storyboard */; };\n\t\tAE51C1CB1DE735E3005BAF5F /* Calculator.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1CA1DE735E3005BAF5F /* Calculator.storyboard */; };\n\t\tAE51C1CD1DE735EF005BAF5F /* Geolocation.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1CC1DE735EF005BAF5F /* Geolocation.storyboard */; };\n\t\tAE51C1CF1DE735FD005BAF5F /* GitHubSearchRepositories.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1CE1DE735FD005BAF5F /* GitHubSearchRepositories.storyboard */; };\n\t\tAE51C1D21DE73608005BAF5F /* GitHubSignup1.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1D01DE73608005BAF5F /* GitHubSignup1.storyboard */; };\n\t\tAE51C1D31DE73608005BAF5F /* GitHubSignup2.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1D11DE73608005BAF5F /* GitHubSignup2.storyboard */; };\n\t\tAE51C1D51DE73613005BAF5F /* ImagePicker.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1D41DE73613005BAF5F /* ImagePicker.storyboard */; };\n\t\tAE51C1D71DE73623005BAF5F /* Numbers.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1D61DE73623005BAF5F /* Numbers.storyboard */; };\n\t\tAE51C1D91DE73633005BAF5F /* SimpleTableViewExample.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1D81DE73633005BAF5F /* SimpleTableViewExample.storyboard */; };\n\t\tAE51C1DB1DE7363C005BAF5F /* SimpleTableViewExampleSectioned.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1DA1DE7363C005BAF5F /* SimpleTableViewExampleSectioned.storyboard */; };\n\t\tAE51C1DD1DE73649005BAF5F /* SimpleValidation.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1DC1DE73649005BAF5F /* SimpleValidation.storyboard */; };\n\t\tAE51C1DF1DE73655005BAF5F /* PartialUpdates.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1DE1DE73655005BAF5F /* PartialUpdates.storyboard */; };\n\t\tAE51C1E11DE73660005BAF5F /* TableViewWithEditingCommands.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1E01DE73660005BAF5F /* TableViewWithEditingCommands.storyboard */; };\n\t\tAE51C1E31DE73667005BAF5F /* WikipediaSearch.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AE51C1E21DE73667005BAF5F /* WikipediaSearch.storyboard */; };\n\t\tB1604CB51BE49F8D002E1279 /* DownloadableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1604CB41BE49F8D002E1279 /* DownloadableImage.swift */; };\n\t\tB1604CC31BE5B8BD002E1279 /* ReachabilityService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18F3BE11BDB2E8F000AAC79 /* ReachabilityService.swift */; };\n\t\tB1604CC91BE5BBFA002E1279 /* UIImageView+DownloadableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1604CC81BE5BBFA002E1279 /* UIImageView+DownloadableImage.swift */; };\n\t\tB1604CCA1BE5BC18002E1279 /* DownloadableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1604CB41BE49F8D002E1279 /* DownloadableImage.swift */; };\n\t\tB18F3BBC1BD92EC8000AAC79 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18F3BBB1BD92EC8000AAC79 /* Reachability.swift */; };\n\t\tB18F3BBF1BD93DFF000AAC79 /* Reachability.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18F3BBB1BD92EC8000AAC79 /* Reachability.swift */; };\n\t\tB18F3BE21BDB2E8F000AAC79 /* ReachabilityService.swift in Sources */ = {isa = PBXBuildFile; fileRef = B18F3BE11BDB2E8F000AAC79 /* ReachabilityService.swift */; };\n\t\tC803973A1BD3E17D009D8B26 /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80397391BD3E17D009D8B26 /* ActivityIndicator.swift */; };\n\t\tC809E97A1BE6841C0058D948 /* Wireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C809E9791BE6841C0058D948 /* Wireframe.swift */; };\n\t\tC809E97D1BE697100058D948 /* UIImage+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C809E97C1BE697100058D948 /* UIImage+Extensions.swift */; };\n\t\tC809E97F1BE69B660058D948 /* Wireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C809E9791BE6841C0058D948 /* Wireframe.swift */; };\n\t\tC809E9801BE69BA30058D948 /* UIImage+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C809E97C1BE697100058D948 /* UIImage+Extensions.swift */; };\n\t\tC817727F1E7DEE5100EA679B /* GitHubSearchRepositories.swift in Sources */ = {isa = PBXBuildFile; fileRef = C817727E1E7DEE5100EA679B /* GitHubSearchRepositories.swift */; };\n\t\tC819DAE91ED0DDD50043A770 /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = C819DAE81ED0DDD50043A770 /* Version.swift */; };\n\t\tC819DAFA1ED0DE920043A770 /* Lenses.swift in Sources */ = {isa = PBXBuildFile; fileRef = C819DAF91ED0DE920043A770 /* Lenses.swift */; };\n\t\tC822B1D91C14CBEA0088A01A /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1D81C14CBEA0088A01A /* Protocols.swift */; };\n\t\tC822B1DC1C14CD1C0088A01A /* DefaultImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1DB1C14CD1C0088A01A /* DefaultImplementations.swift */; };\n\t\tC822B1DF1C14CEAA0088A01A /* BindingExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1DE1C14CEAA0088A01A /* BindingExtensions.swift */; };\n\t\tC822B1E31C14E4810088A01A /* SimpleTableViewExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1E21C14E4810088A01A /* SimpleTableViewExampleViewController.swift */; };\n\t\tC822B1E71C14E7250088A01A /* SimpleTableViewExampleSectionedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1E61C14E7250088A01A /* SimpleTableViewExampleSectionedViewController.swift */; };\n\t\tC82E1DB31DC69E8D004A6413 /* RxExample_macOSUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82E1DB21DC69E8D004A6413 /* RxExample_macOSUITests.swift */; };\n\t\tC82FF1221F93E84600BDB34D /* SectionModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1021F93E84600BDB34D /* SectionModelType.swift */; };\n\t\tC82FF1231F93E84600BDB34D /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1031F93E84600BDB34D /* Utilities.swift */; };\n\t\tC82FF1241F93E84600BDB34D /* IdentifiableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1041F93E84600BDB34D /* IdentifiableType.swift */; };\n\t\tC82FF1251F93E84600BDB34D /* SectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1051F93E84600BDB34D /* SectionModel.swift */; };\n\t\tC82FF1261F93E84600BDB34D /* Diff.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1061F93E84600BDB34D /* Diff.swift */; };\n\t\tC82FF1271F93E84600BDB34D /* AnimatableSectionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1071F93E84600BDB34D /* AnimatableSectionModel.swift */; };\n\t\tC82FF1281F93E84600BDB34D /* IdentifiableValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1091F93E84600BDB34D /* IdentifiableValue.swift */; };\n\t\tC82FF1291F93E84600BDB34D /* ItemPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF10A1F93E84600BDB34D /* ItemPath.swift */; };\n\t\tC82FF12A1F93E84600BDB34D /* Optional+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF10B1F93E84600BDB34D /* Optional+Extensions.swift */; };\n\t\tC82FF12B1F93E84600BDB34D /* AnimatableSectionModelType+ItemPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF10C1F93E84600BDB34D /* AnimatableSectionModelType+ItemPath.swift */; };\n\t\tC82FF12C1F93E84600BDB34D /* Changeset.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF10D1F93E84600BDB34D /* Changeset.swift */; };\n\t\tC82FF12E1F93E84600BDB34D /* AnimatableSectionModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF10F1F93E84600BDB34D /* AnimatableSectionModelType.swift */; };\n\t\tC82FF12F1F93E84600BDB34D /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1111F93E84600BDB34D /* Array+Extensions.swift */; };\n\t\tC82FF1301F93E84600BDB34D /* AnimationConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1121F93E84600BDB34D /* AnimationConfiguration.swift */; };\n\t\tC82FF1311F93E84600BDB34D /* FloatingPointType+IdentifiableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1131F93E84600BDB34D /* FloatingPointType+IdentifiableType.swift */; };\n\t\tC82FF1321F93E84600BDB34D /* RxTableViewSectionedAnimatedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1141F93E84600BDB34D /* RxTableViewSectionedAnimatedDataSource.swift */; };\n\t\tC82FF1331F93E84600BDB34D /* RxCollectionViewSectionedReloadDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1151F93E84600BDB34D /* RxCollectionViewSectionedReloadDataSource.swift */; };\n\t\tC82FF1341F93E84600BDB34D /* DataSources.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1161F93E84600BDB34D /* DataSources.swift */; };\n\t\tC82FF1351F93E84600BDB34D /* String+IdentifiableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1171F93E84600BDB34D /* String+IdentifiableType.swift */; };\n\t\tC82FF1361F93E84600BDB34D /* RxPickerViewAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1181F93E84600BDB34D /* RxPickerViewAdapter.swift */; };\n\t\tC82FF1371F93E84600BDB34D /* Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1191F93E84600BDB34D /* Deprecated.swift */; };\n\t\tC82FF1381F93E84600BDB34D /* CollectionViewSectionedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF11B1F93E84600BDB34D /* CollectionViewSectionedDataSource.swift */; };\n\t\tC82FF1391F93E84600BDB34D /* UI+SectionedViewType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF11C1F93E84600BDB34D /* UI+SectionedViewType.swift */; };\n\t\tC82FF13A1F93E84600BDB34D /* IntegerType+IdentifiableType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF11D1F93E84600BDB34D /* IntegerType+IdentifiableType.swift */; };\n\t\tC82FF13C1F93E84600BDB34D /* RxCollectionViewSectionedAnimatedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF11F1F93E84600BDB34D /* RxCollectionViewSectionedAnimatedDataSource.swift */; };\n\t\tC82FF13D1F93E84600BDB34D /* TableViewSectionedDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1201F93E84600BDB34D /* TableViewSectionedDataSource.swift */; };\n\t\tC82FF13E1F93E84600BDB34D /* RxTableViewSectionedReloadDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = C82FF1211F93E84600BDB34D /* RxTableViewSectionedReloadDataSource.swift */; };\n\t\tC83367231AD029AE00C668A7 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = C833670F1AD029AE00C668A7 /* Example.swift */; };\n\t\tC83367241AD029AE00C668A7 /* HtmlParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367111AD029AE00C668A7 /* HtmlParsing.swift */; };\n\t\tC83367251AD029AE00C668A7 /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367121AD029AE00C668A7 /* ImageService.swift */; };\n\t\tC843A08E1C1CE39900CBA4BD /* GitHubSearchRepositoriesAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C843A08C1C1CE39900CBA4BD /* GitHubSearchRepositoriesAPI.swift */; };\n\t\tC843A0901C1CE39900CBA4BD /* GitHubSearchRepositoriesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C843A08D1C1CE39900CBA4BD /* GitHubSearchRepositoriesViewController.swift */; };\n\t\tC843A0931C1CE58700CBA4BD /* UINavigationController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C843A0921C1CE58700CBA4BD /* UINavigationController+Extensions.swift */; };\n\t\tC849EF641C3190360048AC4A /* RxExample_iOSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF631C3190360048AC4A /* RxExample_iOSTests.swift */; };\n\t\tC849EF801C3193B10048AC4A /* GitHubSignupViewController1.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF7E1C3193B10048AC4A /* GitHubSignupViewController1.swift */; };\n\t\tC849EF821C3193B10048AC4A /* GithubSignupViewModel1.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF7F1C3193B10048AC4A /* GithubSignupViewModel1.swift */; };\n\t\tC849EF861C3195180048AC4A /* GitHubSignupViewController2.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF841C3195180048AC4A /* GitHubSignupViewController2.swift */; };\n\t\tC849EF881C3195180048AC4A /* GithubSignupViewModel2.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF851C3195180048AC4A /* GithubSignupViewModel2.swift */; };\n\t\tC849EF901C319E9A0048AC4A /* GithubSignupViewModel1.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF7F1C3193B10048AC4A /* GithubSignupViewModel1.swift */; };\n\t\tC849EF911C319E9A0048AC4A /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1D81C14CBEA0088A01A /* Protocols.swift */; };\n\t\tC849EF921C319E9A0048AC4A /* DefaultImplementations.swift in Sources */ = {isa = PBXBuildFile; fileRef = C822B1DB1C14CD1C0088A01A /* DefaultImplementations.swift */; };\n\t\tC849EF951C319E9D0048AC4A /* GithubSignupViewModel2.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF851C3195180048AC4A /* GithubSignupViewModel2.swift */; };\n\t\tC849EF981C31A3340048AC4A /* RxTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8864C5A1C275A200073016D /* RxTest.framework */; };\n\t\tC849EF991C31A63C0048AC4A /* Wireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C809E9791BE6841C0058D948 /* Wireframe.swift */; };\n\t\tC849EF9A1C31A7680048AC4A /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80397391BD3E17D009D8B26 /* ActivityIndicator.swift */; };\n\t\tC849EF9C1C31A8750048AC4A /* String+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF9B1C31A8750048AC4A /* String+URL.swift */; };\n\t\tC849EF9D1C31A8750048AC4A /* String+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF9B1C31A8750048AC4A /* String+URL.swift */; };\n\t\tC849EF9F1C31A8750048AC4A /* String+URL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C849EF9B1C31A8750048AC4A /* String+URL.swift */; };\n\t\tC84E5BA61E7893A4001F659A /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84E5BA51E7893A4001F659A /* Observable+Extensions.swift */; };\n\t\tC84E5BA71E7893A4001F659A /* Observable+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84E5BA51E7893A4001F659A /* Observable+Extensions.swift */; };\n\t\tC864BAD71C3332F10083833C /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864BAD11C3332F10083833C /* DetailViewController.swift */; };\n\t\tC864BAD91C3332F10083833C /* RandomUserAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864BAD21C3332F10083833C /* RandomUserAPI.swift */; };\n\t\tC864BADD1C3332F10083833C /* TableViewWithEditingCommandsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864BAD41C3332F10083833C /* TableViewWithEditingCommandsViewController.swift */; };\n\t\tC864BADF1C3332F10083833C /* UIImageView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864BAD51C3332F10083833C /* UIImageView+Extensions.swift */; };\n\t\tC864BAE11C3332F10083833C /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = C864BAD61C3332F10083833C /* User.swift */; };\n\t\tC86781CC1DB824D500B2029A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781CA1DB824D500B2029A /* AppDelegate.swift */; };\n\t\tC86781CE1DB824E500B2029A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C86781CB1DB824D500B2029A /* Main.storyboard */; };\n\t\tC86781D11DB8250400B2029A /* IntroductionExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86781D01DB8250400B2029A /* IntroductionExampleViewController.swift */; };\n\t\tC86E2F3E1AE5A0CA00C31024 /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F321AE5A0CA00C31024 /* SearchResultViewModel.swift */; };\n\t\tC86E2F451AE5A0CA00C31024 /* WikipediaAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3B1AE5A0CA00C31024 /* WikipediaAPI.swift */; };\n\t\tC86E2F461AE5A0CA00C31024 /* WikipediaPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3C1AE5A0CA00C31024 /* WikipediaPage.swift */; };\n\t\tC86E2F471AE5A0CA00C31024 /* WikipediaSearchResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3D1AE5A0CA00C31024 /* WikipediaSearchResult.swift */; };\n\t\tC886A68B1D85AC9400653EE4 /* UIImagePickerController+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A68A1D85AC9400653EE4 /* UIImagePickerController+Rx.swift */; };\n\t\tC886A68E1D85AD2000653EE4 /* CLLocationManager+Rx.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A68C1D85AD2000653EE4 /* CLLocationManager+Rx.swift */; };\n\t\tC886A68F1D85AD2000653EE4 /* RxCLLocationManagerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A68D1D85AD2000653EE4 /* RxCLLocationManagerDelegateProxy.swift */; };\n\t\tC886A6911D85AD7E00653EE4 /* CLLocationManager+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A6901D85AD7E00653EE4 /* CLLocationManager+RxTests.swift */; };\n\t\tC886A6931D85ADA100653EE4 /* UIImagePickerController+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A6921D85ADA100653EE4 /* UIImagePickerController+RxTests.swift */; };\n\t\tC886A6951D85AEA300653EE4 /* RxTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C886A6941D85AEA300653EE4 /* RxTest.swift */; };\n\t\tC88BB8BB1B07E6C90064D411 /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F321AE5A0CA00C31024 /* SearchResultViewModel.swift */; };\n\t\tC88BB8BC1B07E6C90064D411 /* HtmlParsing.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367111AD029AE00C668A7 /* HtmlParsing.swift */; };\n\t\tC88BB8BE1B07E6C90064D411 /* ImageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C83367121AD029AE00C668A7 /* ImageService.swift */; };\n\t\tC88BB8BF1B07E6C90064D411 /* WikipediaSearchResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3D1AE5A0CA00C31024 /* WikipediaSearchResult.swift */; };\n\t\tC88BB8C31B07E6C90064D411 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = C833670F1AD029AE00C668A7 /* Example.swift */; };\n\t\tC88BB8C41B07E6C90064D411 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C890A65C1AEC084100AFF7E6 /* ViewController.swift */; };\n\t\tC88BB8C71B07E6C90064D411 /* Dependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E3C2321B03605B0010338D /* Dependencies.swift */; };\n\t\tC88BB8CA1B07E6C90064D411 /* WikipediaAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3B1AE5A0CA00C31024 /* WikipediaAPI.swift */; };\n\t\tC88BB8CC1B07E6C90064D411 /* WikipediaPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C86E2F3C1AE5A0CA00C31024 /* WikipediaPage.swift */; };\n\t\tC88C2B2A1D67EC5200B01A98 /* FlowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88C2B291D67EC5200B01A98 /* FlowTests.swift */; };\n\t\tC88CB7261D8F253D0021D83F /* RxImagePickerDelegateProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = C88CB7251D8F253D0021D83F /* RxImagePickerDelegateProxy.swift */; };\n\t\tC890A65D1AEC084100AFF7E6 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C890A65C1AEC084100AFF7E6 /* ViewController.swift */; };\n\t\tC8984CD11C36BC3E001E4272 /* NumberCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8984CCE1C36BC3E001E4272 /* NumberCell.swift */; };\n\t\tC8984CD31C36BC3E001E4272 /* NumberSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8984CCF1C36BC3E001E4272 /* NumberSectionView.swift */; };\n\t\tC8984CD51C36BC3E001E4272 /* PartialUpdatesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8984CD01C36BC3E001E4272 /* PartialUpdatesViewController.swift */; };\n\t\tC89C2BD61C321DA200EBC99C /* TestScheduler+MarbleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89C2BD51C321DA200EBC99C /* TestScheduler+MarbleTests.swift */; };\n\t\tC89C2BDC1C32231A00EBC99C /* MockGitHubAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89C2BD81C32231A00EBC99C /* MockGitHubAPI.swift */; };\n\t\tC89C2BDD1C32231A00EBC99C /* MockWireframe.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89C2BD91C32231A00EBC99C /* MockWireframe.swift */; };\n\t\tC89C2BDE1C32231A00EBC99C /* NotImplementedStubs.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89C2BDA1C32231A00EBC99C /* NotImplementedStubs.swift */; };\n\t\tC89C2BDF1C32231A00EBC99C /* ValidationResult+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C89C2BDB1C32231A00EBC99C /* ValidationResult+Equatable.swift */; };\n\t\tC8A2A2C81B4049E300F11F09 /* PseudoRandomGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A2A2C71B4049E300F11F09 /* PseudoRandomGenerator.swift */; };\n\t\tC8A2A2CB1B404A1200F11F09 /* Randomizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8A2A2CA1B404A1200F11F09 /* Randomizer.swift */; };\n\t\tC8BCD3DF1C1480E9005F1280 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BCD3DE1C1480E9005F1280 /* Operators.swift */; };\n\t\tC8BCD3E61C14A95E005F1280 /* NumbersViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BCD3E51C14A95E005F1280 /* NumbersViewController.swift */; };\n\t\tC8BCD3EA1C14B02A005F1280 /* SimpleValidationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BCD3E91C14B02A005F1280 /* SimpleValidationViewController.swift */; };\n\t\tC8C46DA81B47F7110020D71E /* CollectionViewImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C46DA31B47F7110020D71E /* CollectionViewImageCell.swift */; };\n\t\tC8C46DA91B47F7110020D71E /* WikipediaImageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = C8C46DA41B47F7110020D71E /* WikipediaImageCell.xib */; };\n\t\tC8C46DAA1B47F7110020D71E /* WikipediaSearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C46DA51B47F7110020D71E /* WikipediaSearchCell.swift */; };\n\t\tC8C46DAB1B47F7110020D71E /* WikipediaSearchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = C8C46DA61B47F7110020D71E /* WikipediaSearchCell.xib */; };\n\t\tC8C46DAC1B47F7110020D71E /* WikipediaSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8C46DA71B47F7110020D71E /* WikipediaSearchViewController.swift */; };\n\t\tC8CDF0C11D688DF700C18F99 /* UITableView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CDF0C01D688DF700C18F99 /* UITableView+Extensions.swift */; };\n\t\tC8D132151C42B54B00B59FFF /* UIImagePickerController+RxCreate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D132141C42B54B00B59FFF /* UIImagePickerController+RxCreate.swift */; };\n\t\tC8D3DDE21FB5DB6900BFE7D4 /* Feedbacks.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D3DDD21FB5DB6900BFE7D4 /* Feedbacks.swift */; };\n\t\tC8DF92CD1B0B2F84009BCF9A /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8DF92C81B0B2F84009BCF9A /* AppDelegate.swift */; };\n\t\tC8DF92E31B0B32DA009BCF9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = C8DF92E01B0B32DA009BCF9A /* LaunchScreen.xib */; };\n\t\tC8DF92E41B0B32DA009BCF9A /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C8DF92E11B0B32DA009BCF9A /* Main.storyboard */; };\n\t\tC8DF92E51B0B32DA009BCF9A /* RootViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8DF92E21B0B32DA009BCF9A /* RootViewController.swift */; };\n\t\tC8DF92EA1B0B38C0009BCF9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C8DF92E91B0B38C0009BCF9A /* Images.xcassets */; };\n\t\tC8DF92EB1B0B38C0009BCF9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C8DF92E91B0B38C0009BCF9A /* Images.xcassets */; };\n\t\tC8E9D2AF1BD3FD960079D0DB /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C80397391BD3E17D009D8B26 /* ActivityIndicator.swift */; };\n\t\tC8F8C48A1C277F460047640B /* Calculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8F8C4891C277F460047640B /* Calculator.swift */; };\n\t\tEF8128F1226BD61900AE22C2 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C81B3A091BC1C28400EF5A9F /* RxCocoa.framework */; };\n\t\tEF8128F2226BD61900AE22C2 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C81B3A011BC1C28400EF5A9F /* RxSwift.framework */; };\n\t\tEF8128F5226BD97900AE22C2 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C81B3A011BC1C28400EF5A9F /* RxSwift.framework */; };\n\t\tEF8128F6226BD9E700AE22C2 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C81B3A091BC1C28400EF5A9F /* RxCocoa.framework */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t787BBB6A226B2A6100279500 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = A2897D53225CA1E7004EA481;\n\t\t\tremoteInfo = RxRelay;\n\t\t};\n\t\t8479BC651C3BC98F00FB8B54 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C83508C31C386F6F0027C24C;\n\t\t\tremoteInfo = \"AllTests-iOS\";\n\t\t};\n\t\t8479BC671C3BC98F00FB8B54 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C83509841C38740E0027C24C;\n\t\t\tremoteInfo = \"AllTests-tvOS\";\n\t\t};\n\t\t8479BC691C3BC98F00FB8B54 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C83509941C38742C0027C24C;\n\t\t\tremoteInfo = \"AllTests-OSX\";\n\t\t};\n\t\t8479BC6B1C3BC98F00FB8B54 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C85BA04B1C3878740075D68E;\n\t\t\tremoteInfo = PerformanceTests;\n\t\t};\n\t\tC810DCBE1E3D612900D53105 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C8E8BA551E2C181A00A4AC2C;\n\t\t\tremoteInfo = Benchmarks;\n\t\t};\n\t\tC81B3A001BC1C28400EF5A9F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C8A56AD71AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC81B3A081BC1C28400EF5A9F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C809396D1B8A71760088E94D;\n\t\t\tremoteInfo = \"RxCocoa-iOS\";\n\t\t};\n\t\tC81B3A101BC1C28400EF5A9F /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C8093BC71B8A71F00088E94D;\n\t\t\tremoteInfo = \"RxBlocking-iOS\";\n\t\t};\n\t\tC82E1DB51DC69E8D004A6413 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C83366D51AD0293800C668A7 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88BB8B91B07E6C90064D411;\n\t\t\tremoteInfo = \"RxExample-OSX\";\n\t\t};\n\t\tC849EF661C3190360048AC4A /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C83366D51AD0293800C668A7 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C83366DC1AD0293800C668A7;\n\t\t\tremoteInfo = \"RxExample-iOS\";\n\t\t};\n\t\tC8864C591C275A200073016D /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = C88FA50C1C25C44800CCFEA4;\n\t\t\tremoteInfo = \"RxTests-iOS\";\n\t\t};\n\t\tC88C2B2C1D67EC5200B01A98 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C83366D51AD0293800C668A7 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C83366DC1AD0293800C668A7;\n\t\t\tremoteInfo = \"RxExample-iOS\";\n\t\t};\n\t\tC8E1EB201E30FB1600919B41 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C8A56AD61AD7424700B4673B;\n\t\t\tremoteInfo = \"RxSwift-iOS\";\n\t\t};\n\t\tC8E1EB361E30FB1C00919B41 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C80938F51B8A71760088E94D;\n\t\t\tremoteInfo = \"RxCocoa-iOS\";\n\t\t};\n\t\tC8E1EB3C1E30FB3C00919B41 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88FA4FD1C25C44800CCFEA4;\n\t\t\tremoteInfo = \"RxTest-iOS\";\n\t\t};\n\t\tC8E1EB3E1E30FB4600919B41 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = C88FA4FD1C25C44800CCFEA4;\n\t\t\tremoteInfo = \"RxTest-iOS\";\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t0744CDD31C4DB5F000720FD2 /* GeolocationService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeolocationService.swift; sourceTree = \"<group>\"; };\n\t\t0744CDEC1C4DB78600720FD2 /* GeolocationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeolocationViewController.swift; sourceTree = \"<group>\"; };\n\t\t075F130F1B4E9D5A000D7861 /* APIWrappersViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIWrappersViewController.swift; sourceTree = \"<group>\"; };\n\t\t07A5C3DA1B70B703001EFE5C /* CalculatorViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CalculatorViewController.swift; sourceTree = \"<group>\"; };\n\t\t07E3C2321B03605B0010338D /* Dependencies.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Dependencies.swift; path = Examples/Dependencies.swift; sourceTree = \"<group>\"; };\n\t\t252C9F771F14111800F5F951 /* SimplePickerViewExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimplePickerViewExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\t252C9F791F14115B00F5F951 /* SimpleUIPickerViewExample.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SimpleUIPickerViewExample.storyboard; sourceTree = \"<group>\"; };\n\t\t2864D5F11D995FCD004F8484 /* Application+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Application+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\t780D63DF226B305D00BEACB0 /* RxPlaygrounds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxPlaygrounds.swift; sourceTree = \"<group>\"; };\n\t\t780D63E2226B320A00BEACB0 /* Rx.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; name = Rx.playground; path = ../Rx.playground; sourceTree = \"<group>\"; };\n\t\t787BBB5A226B2A6100279500 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t8479BC701C3BCB9800FB8B54 /* ImagePickerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImagePickerController.swift; sourceTree = \"<group>\"; };\n\t\tA34040202C47AC2F009E3F74 /* BaseNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseNavigationController.swift; sourceTree = \"<group>\"; };\n\t\tA5CD038E1F1670E50005A376 /* CustomPickerViewAdapterExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomPickerViewAdapterExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tAE51C1C81DE735D8005BAF5F /* APIWrappers.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = APIWrappers.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1CA1DE735E3005BAF5F /* Calculator.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Calculator.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1CC1DE735EF005BAF5F /* Geolocation.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Geolocation.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1CE1DE735FD005BAF5F /* GitHubSearchRepositories.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = GitHubSearchRepositories.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1D01DE73608005BAF5F /* GitHubSignup1.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = GitHubSignup1.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1D11DE73608005BAF5F /* GitHubSignup2.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = GitHubSignup2.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1D41DE73613005BAF5F /* ImagePicker.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = ImagePicker.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1D61DE73623005BAF5F /* Numbers.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Numbers.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1D81DE73633005BAF5F /* SimpleTableViewExample.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SimpleTableViewExample.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1DA1DE7363C005BAF5F /* SimpleTableViewExampleSectioned.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SimpleTableViewExampleSectioned.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1DC1DE73649005BAF5F /* SimpleValidation.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = SimpleValidation.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1DE1DE73655005BAF5F /* PartialUpdates.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = PartialUpdates.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1E01DE73660005BAF5F /* TableViewWithEditingCommands.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TableViewWithEditingCommands.storyboard; sourceTree = \"<group>\"; };\n\t\tAE51C1E21DE73667005BAF5F /* WikipediaSearch.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = WikipediaSearch.storyboard; sourceTree = \"<group>\"; };\n\t\tB1604CB41BE49F8D002E1279 /* DownloadableImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownloadableImage.swift; sourceTree = \"<group>\"; };\n\t\tB1604CC81BE5BBFA002E1279 /* UIImageView+DownloadableImage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImageView+DownloadableImage.swift\"; sourceTree = \"<group>\"; };\n\t\tB18F3BBB1BD92EC8000AAC79 /* Reachability.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reachability.swift; sourceTree = \"<group>\"; };\n\t\tB18F3BE11BDB2E8F000AAC79 /* ReachabilityService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReachabilityService.swift; sourceTree = \"<group>\"; };\n\t\tC80397391BD3E17D009D8B26 /* ActivityIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicator.swift; sourceTree = \"<group>\"; };\n\t\tC809E9791BE6841C0058D948 /* Wireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Wireframe.swift; sourceTree = \"<group>\"; };\n\t\tC809E97C1BE697100058D948 /* UIImage+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImage+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC817727E1E7DEE5100EA679B /* GitHubSearchRepositories.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubSearchRepositories.swift; sourceTree = \"<group>\"; };\n\t\tC819DAE81ED0DDD50043A770 /* Version.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = \"<group>\"; };\n\t\tC819DAF91ED0DE920043A770 /* Lenses.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Lenses.swift; sourceTree = \"<group>\"; };\n\t\tC81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = Rx.xcodeproj; path = ../Rx.xcodeproj; sourceTree = \"<group>\"; };\n\t\tC822B1D81C14CBEA0088A01A /* Protocols.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Protocols.swift; sourceTree = \"<group>\"; };\n\t\tC822B1DB1C14CD1C0088A01A /* DefaultImplementations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultImplementations.swift; sourceTree = \"<group>\"; };\n\t\tC822B1DE1C14CEAA0088A01A /* BindingExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BindingExtensions.swift; sourceTree = \"<group>\"; };\n\t\tC822B1E21C14E4810088A01A /* SimpleTableViewExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleTableViewExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tC822B1E61C14E7250088A01A /* SimpleTableViewExampleSectionedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleTableViewExampleSectionedViewController.swift; sourceTree = \"<group>\"; };\n\t\tC82E1DB01DC69E8D004A6413 /* RxExample-macOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"RxExample-macOSUITests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC82E1DB21DC69E8D004A6413 /* RxExample_macOSUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RxExample_macOSUITests.swift; sourceTree = \"<group>\"; };\n\t\tC82E1DB41DC69E8D004A6413 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC82FF1021F93E84600BDB34D /* SectionModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionModelType.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1031F93E84600BDB34D /* Utilities.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1041F93E84600BDB34D /* IdentifiableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentifiableType.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1051F93E84600BDB34D /* SectionModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SectionModel.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1061F93E84600BDB34D /* Diff.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Diff.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1071F93E84600BDB34D /* AnimatableSectionModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimatableSectionModel.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1081F93E84600BDB34D /* Differentiator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Differentiator.h; sourceTree = \"<group>\"; };\n\t\tC82FF1091F93E84600BDB34D /* IdentifiableValue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IdentifiableValue.swift; sourceTree = \"<group>\"; };\n\t\tC82FF10A1F93E84600BDB34D /* ItemPath.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemPath.swift; sourceTree = \"<group>\"; };\n\t\tC82FF10B1F93E84600BDB34D /* Optional+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Optional+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF10C1F93E84600BDB34D /* AnimatableSectionModelType+ItemPath.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"AnimatableSectionModelType+ItemPath.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF10D1F93E84600BDB34D /* Changeset.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Changeset.swift; sourceTree = \"<group>\"; };\n\t\tC82FF10F1F93E84600BDB34D /* AnimatableSectionModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimatableSectionModelType.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1111F93E84600BDB34D /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Array+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF1121F93E84600BDB34D /* AnimationConfiguration.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnimationConfiguration.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1131F93E84600BDB34D /* FloatingPointType+IdentifiableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"FloatingPointType+IdentifiableType.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF1141F93E84600BDB34D /* RxTableViewSectionedAnimatedDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewSectionedAnimatedDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1151F93E84600BDB34D /* RxCollectionViewSectionedReloadDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewSectionedReloadDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1161F93E84600BDB34D /* DataSources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataSources.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1171F93E84600BDB34D /* String+IdentifiableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"String+IdentifiableType.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF1181F93E84600BDB34D /* RxPickerViewAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxPickerViewAdapter.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1191F93E84600BDB34D /* Deprecated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Deprecated.swift; sourceTree = \"<group>\"; };\n\t\tC82FF11A1F93E84600BDB34D /* RxDataSources.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RxDataSources.h; sourceTree = \"<group>\"; };\n\t\tC82FF11B1F93E84600BDB34D /* CollectionViewSectionedDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewSectionedDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC82FF11C1F93E84600BDB34D /* UI+SectionedViewType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UI+SectionedViewType.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF11D1F93E84600BDB34D /* IntegerType+IdentifiableType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"IntegerType+IdentifiableType.swift\"; sourceTree = \"<group>\"; };\n\t\tC82FF11F1F93E84600BDB34D /* RxCollectionViewSectionedAnimatedDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCollectionViewSectionedAnimatedDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1201F93E84600BDB34D /* TableViewSectionedDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewSectionedDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC82FF1211F93E84600BDB34D /* RxTableViewSectionedReloadDataSource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTableViewSectionedReloadDataSource.swift; sourceTree = \"<group>\"; };\n\t\tC83366DD1AD0293800C668A7 /* RxExample-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = \"RxExample-iOS.app\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC833670F1AD029AE00C668A7 /* Example.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Example.swift; sourceTree = \"<group>\"; };\n\t\tC83367111AD029AE00C668A7 /* HtmlParsing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlParsing.swift; sourceTree = \"<group>\"; };\n\t\tC83367121AD029AE00C668A7 /* ImageService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageService.swift; sourceTree = \"<group>\"; };\n\t\tC843A08C1C1CE39900CBA4BD /* GitHubSearchRepositoriesAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubSearchRepositoriesAPI.swift; sourceTree = \"<group>\"; };\n\t\tC843A08D1C1CE39900CBA4BD /* GitHubSearchRepositoriesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubSearchRepositoriesViewController.swift; sourceTree = \"<group>\"; };\n\t\tC843A0921C1CE58700CBA4BD /* UINavigationController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UINavigationController+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC849EF611C3190360048AC4A /* RxExample-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"RxExample-iOSTests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC849EF631C3190360048AC4A /* RxExample_iOSTests.swift */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.swift; path = RxExample_iOSTests.swift; sourceTree = \"<group>\"; tabWidth = 4; };\n\t\tC849EF651C3190360048AC4A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC849EF7E1C3193B10048AC4A /* GitHubSignupViewController1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubSignupViewController1.swift; sourceTree = \"<group>\"; };\n\t\tC849EF7F1C3193B10048AC4A /* GithubSignupViewModel1.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GithubSignupViewModel1.swift; sourceTree = \"<group>\"; };\n\t\tC849EF841C3195180048AC4A /* GitHubSignupViewController2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GitHubSignupViewController2.swift; sourceTree = \"<group>\"; };\n\t\tC849EF851C3195180048AC4A /* GithubSignupViewModel2.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GithubSignupViewModel2.swift; sourceTree = \"<group>\"; };\n\t\tC849EF9B1C31A8750048AC4A /* String+URL.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"String+URL.swift\"; sourceTree = \"<group>\"; };\n\t\tC84E5BA51E7893A4001F659A /* Observable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"Observable+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC864BAD11C3332F10083833C /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = \"<group>\"; };\n\t\tC864BAD21C3332F10083833C /* RandomUserAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RandomUserAPI.swift; sourceTree = \"<group>\"; };\n\t\tC864BAD41C3332F10083833C /* TableViewWithEditingCommandsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewWithEditingCommandsViewController.swift; sourceTree = \"<group>\"; };\n\t\tC864BAD51C3332F10083833C /* UIImageView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImageView+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC864BAD61C3332F10083833C /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = \"<group>\"; };\n\t\tC86781CA1DB824D500B2029A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tC86781CB1DB824D500B2029A /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = \"<group>\"; };\n\t\tC86781D01DB8250400B2029A /* IntroductionExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IntroductionExampleViewController.swift; sourceTree = \"<group>\"; };\n\t\tC86E2F321AE5A0CA00C31024 /* SearchResultViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = SearchResultViewModel.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC86E2F3B1AE5A0CA00C31024 /* WikipediaAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WikipediaAPI.swift; sourceTree = \"<group>\"; };\n\t\tC86E2F3C1AE5A0CA00C31024 /* WikipediaPage.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = WikipediaPage.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC86E2F3D1AE5A0CA00C31024 /* WikipediaSearchResult.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = WikipediaSearchResult.swift; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };\n\t\tC886A68A1D85AC9400653EE4 /* UIImagePickerController+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImagePickerController+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC886A68C1D85AD2000653EE4 /* CLLocationManager+Rx.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"CLLocationManager+Rx.swift\"; sourceTree = \"<group>\"; };\n\t\tC886A68D1D85AD2000653EE4 /* RxCLLocationManagerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxCLLocationManagerDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC886A6901D85AD7E00653EE4 /* CLLocationManager+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"CLLocationManager+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC886A6921D85ADA100653EE4 /* UIImagePickerController+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImagePickerController+RxTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC886A6941D85AEA300653EE4 /* RxTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxTest.swift; sourceTree = \"<group>\"; };\n\t\tC88BB8DC1B07E6C90064D411 /* RxExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RxExample.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC88C2B271D67EC5200B01A98 /* RxExample-iOSUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = \"RxExample-iOSUITests.xctest\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tC88C2B291D67EC5200B01A98 /* FlowTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowTests.swift; sourceTree = \"<group>\"; };\n\t\tC88C2B2B1D67EC5200B01A98 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tC88CB7251D8F253D0021D83F /* RxImagePickerDelegateProxy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxImagePickerDelegateProxy.swift; sourceTree = \"<group>\"; };\n\t\tC890A65C1AEC084100AFF7E6 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = \"<group>\"; };\n\t\tC8984CCE1C36BC3E001E4272 /* NumberCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberCell.swift; sourceTree = \"<group>\"; };\n\t\tC8984CCF1C36BC3E001E4272 /* NumberSectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberSectionView.swift; sourceTree = \"<group>\"; };\n\t\tC8984CD01C36BC3E001E4272 /* PartialUpdatesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PartialUpdatesViewController.swift; sourceTree = \"<group>\"; };\n\t\tC89C2BD51C321DA200EBC99C /* TestScheduler+MarbleTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"TestScheduler+MarbleTests.swift\"; sourceTree = \"<group>\"; };\n\t\tC89C2BD81C32231A00EBC99C /* MockGitHubAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockGitHubAPI.swift; sourceTree = \"<group>\"; };\n\t\tC89C2BD91C32231A00EBC99C /* MockWireframe.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MockWireframe.swift; sourceTree = \"<group>\"; };\n\t\tC89C2BDA1C32231A00EBC99C /* NotImplementedStubs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotImplementedStubs.swift; sourceTree = \"<group>\"; };\n\t\tC89C2BDB1C32231A00EBC99C /* ValidationResult+Equatable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"ValidationResult+Equatable.swift\"; sourceTree = \"<group>\"; };\n\t\tC8A2A2C71B4049E300F11F09 /* PseudoRandomGenerator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PseudoRandomGenerator.swift; sourceTree = \"<group>\"; };\n\t\tC8A2A2CA1B404A1200F11F09 /* Randomizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Randomizer.swift; sourceTree = \"<group>\"; };\n\t\tC8B290BE1C959D2900E923D0 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = \"<group>\"; };\n\t\tC8BCD3DE1C1480E9005F1280 /* Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Operators.swift; sourceTree = \"<group>\"; };\n\t\tC8BCD3E51C14A95E005F1280 /* NumbersViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumbersViewController.swift; sourceTree = \"<group>\"; };\n\t\tC8BCD3E91C14B02A005F1280 /* SimpleValidationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SimpleValidationViewController.swift; sourceTree = \"<group>\"; };\n\t\tC8C46DA31B47F7110020D71E /* CollectionViewImageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewImageCell.swift; sourceTree = \"<group>\"; };\n\t\tC8C46DA41B47F7110020D71E /* WikipediaImageCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WikipediaImageCell.xib; sourceTree = \"<group>\"; };\n\t\tC8C46DA51B47F7110020D71E /* WikipediaSearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WikipediaSearchCell.swift; sourceTree = \"<group>\"; };\n\t\tC8C46DA61B47F7110020D71E /* WikipediaSearchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WikipediaSearchCell.xib; sourceTree = \"<group>\"; };\n\t\tC8C46DA71B47F7110020D71E /* WikipediaSearchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WikipediaSearchViewController.swift; sourceTree = \"<group>\"; };\n\t\tC8CDF0C01D688DF700C18F99 /* UITableView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UITableView+Extensions.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D132141C42B54B00B59FFF /* UIImagePickerController+RxCreate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = \"UIImagePickerController+RxCreate.swift\"; sourceTree = \"<group>\"; };\n\t\tC8D3DDD21FB5DB6900BFE7D4 /* Feedbacks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Feedbacks.swift; sourceTree = \"<group>\"; };\n\t\tC8DF92C81B0B2F84009BCF9A /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = \"<group>\"; };\n\t\tC8DF92E01B0B32DA009BCF9A /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = \"<group>\"; };\n\t\tC8DF92E11B0B32DA009BCF9A /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = \"<group>\"; };\n\t\tC8DF92E21B0B32DA009BCF9A /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RootViewController.swift; sourceTree = \"<group>\"; };\n\t\tC8DF92E91B0B38C0009BCF9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = \"<group>\"; };\n\t\tC8DF92F01B0B3E67009BCF9A /* Info-macOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = \"Info-macOS.plist\"; sourceTree = \"<group>\"; };\n\t\tC8DF92F21B0B3E71009BCF9A /* Info-iOS.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = \"Info-iOS.plist\"; sourceTree = \"<group>\"; };\n\t\tC8F8C4891C277F460047640B /* Calculator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Calculator.swift; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tC82E1DAD1DC69E8D004A6413 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83366DA1AD0293800C668A7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEF8128F1226BD61900AE22C2 /* RxCocoa.framework in Frameworks */,\n\t\t\t\tEF8128F2226BD61900AE22C2 /* RxSwift.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC849EF5E1C3190360048AC4A /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC849EF981C31A3340048AC4A /* RxTest.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88BB8CD1B07E6C90064D411 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tEF8128F6226BD9E700AE22C2 /* RxCocoa.framework in Frameworks */,\n\t\t\t\tEF8128F5226BD97900AE22C2 /* RxSwift.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88C2B241D67EC5200B01A98 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t0744CDEB1C4DB71300720FD2 /* GeolocationExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1CC1DE735EF005BAF5F /* Geolocation.storyboard */,\n\t\t\t\t0744CDEC1C4DB78600720FD2 /* GeolocationViewController.swift */,\n\t\t\t);\n\t\t\tpath = GeolocationExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t075F130E1B4E9D10000D7861 /* APIWrappers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1C81DE735D8005BAF5F /* APIWrappers.storyboard */,\n\t\t\t\t075F130F1B4E9D5A000D7861 /* APIWrappersViewController.swift */,\n\t\t\t);\n\t\t\tpath = APIWrappers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t07A5C3D91B70B6B8001EFE5C /* Calculator */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8F8C4891C277F460047640B /* Calculator.swift */,\n\t\t\t\tAE51C1CA1DE735E3005BAF5F /* Calculator.storyboard */,\n\t\t\t\t07A5C3DA1B70B703001EFE5C /* CalculatorViewController.swift */,\n\t\t\t);\n\t\t\tpath = Calculator;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t252C9F671F1410D600F5F951 /* UIPickerViewExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t252C9F771F14111800F5F951 /* SimplePickerViewExampleViewController.swift */,\n\t\t\t\t252C9F791F14115B00F5F951 /* SimpleUIPickerViewExample.storyboard */,\n\t\t\t\tA5CD038E1F1670E50005A376 /* CustomPickerViewAdapterExampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = UIPickerViewExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t787BBB58226B2A6100279500 /* Playgrounds */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t787BBB5A226B2A6100279500 /* Info.plist */,\n\t\t\t\t780D63DF226B305D00BEACB0 /* RxPlaygrounds.swift */,\n\t\t\t);\n\t\t\tpath = Playgrounds;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t8479BC6F1C3BCB4800FB8B54 /* ImagePicker */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1D41DE73613005BAF5F /* ImagePicker.storyboard */,\n\t\t\t\t8479BC701C3BCB9800FB8B54 /* ImagePickerController.swift */,\n\t\t\t\tC8D132141C42B54B00B59FFF /* UIImagePickerController+RxCreate.swift */,\n\t\t\t);\n\t\t\tpath = ImagePicker;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC81B39F21BC1C28400EF5A9F /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC81B3A011BC1C28400EF5A9F /* RxSwift.framework */,\n\t\t\t\tC81B3A091BC1C28400EF5A9F /* RxCocoa.framework */,\n\t\t\t\t787BBB6B226B2A6100279500 /* RxRelay.framework */,\n\t\t\t\tC81B3A111BC1C28400EF5A9F /* RxBlocking.framework */,\n\t\t\t\tC8864C5A1C275A200073016D /* RxTest.framework */,\n\t\t\t\t8479BC661C3BC98F00FB8B54 /* AllTests-iOS.xctest */,\n\t\t\t\t8479BC681C3BC98F00FB8B54 /* AllTests-tvOS.xctest */,\n\t\t\t\t8479BC6A1C3BC98F00FB8B54 /* AllTests-macOS.xctest */,\n\t\t\t\t8479BC6C1C3BC98F00FB8B54 /* PerformanceTests.app */,\n\t\t\t\tC810DCBF1E3D612900D53105 /* Benchmarks.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC822B1E11C14E37B0088A01A /* SimpleTableViewExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1D81DE73633005BAF5F /* SimpleTableViewExample.storyboard */,\n\t\t\t\tC822B1E21C14E4810088A01A /* SimpleTableViewExampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = SimpleTableViewExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC822B1E51C14E7120088A01A /* SimpleTableViewExampleSectioned */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1DA1DE7363C005BAF5F /* SimpleTableViewExampleSectioned.storyboard */,\n\t\t\t\tC822B1E61C14E7250088A01A /* SimpleTableViewExampleSectionedViewController.swift */,\n\t\t\t);\n\t\t\tpath = SimpleTableViewExampleSectioned;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82E1DB11DC69E8D004A6413 /* RxExample-macOSUITests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82E1DB21DC69E8D004A6413 /* RxExample_macOSUITests.swift */,\n\t\t\t\tC82E1DB41DC69E8D004A6413 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = \"RxExample-macOSUITests\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82FF1011F93E84600BDB34D /* Differentiator */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82FF1021F93E84600BDB34D /* SectionModelType.swift */,\n\t\t\t\tC82FF1031F93E84600BDB34D /* Utilities.swift */,\n\t\t\t\tC82FF1041F93E84600BDB34D /* IdentifiableType.swift */,\n\t\t\t\tC82FF1051F93E84600BDB34D /* SectionModel.swift */,\n\t\t\t\tC82FF1061F93E84600BDB34D /* Diff.swift */,\n\t\t\t\tC82FF1071F93E84600BDB34D /* AnimatableSectionModel.swift */,\n\t\t\t\tC82FF1081F93E84600BDB34D /* Differentiator.h */,\n\t\t\t\tC82FF1091F93E84600BDB34D /* IdentifiableValue.swift */,\n\t\t\t\tC82FF10A1F93E84600BDB34D /* ItemPath.swift */,\n\t\t\t\tC82FF10B1F93E84600BDB34D /* Optional+Extensions.swift */,\n\t\t\t\tC82FF10C1F93E84600BDB34D /* AnimatableSectionModelType+ItemPath.swift */,\n\t\t\t\tC82FF10D1F93E84600BDB34D /* Changeset.swift */,\n\t\t\t\tC82FF10F1F93E84600BDB34D /* AnimatableSectionModelType.swift */,\n\t\t\t);\n\t\t\tpath = Differentiator;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC82FF1101F93E84600BDB34D /* RxDataSources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82FF1111F93E84600BDB34D /* Array+Extensions.swift */,\n\t\t\t\tC82FF1121F93E84600BDB34D /* AnimationConfiguration.swift */,\n\t\t\t\tC82FF1131F93E84600BDB34D /* FloatingPointType+IdentifiableType.swift */,\n\t\t\t\tC82FF1141F93E84600BDB34D /* RxTableViewSectionedAnimatedDataSource.swift */,\n\t\t\t\tC82FF1151F93E84600BDB34D /* RxCollectionViewSectionedReloadDataSource.swift */,\n\t\t\t\tC82FF1161F93E84600BDB34D /* DataSources.swift */,\n\t\t\t\tC82FF1171F93E84600BDB34D /* String+IdentifiableType.swift */,\n\t\t\t\tC82FF1181F93E84600BDB34D /* RxPickerViewAdapter.swift */,\n\t\t\t\tC82FF1191F93E84600BDB34D /* Deprecated.swift */,\n\t\t\t\tC82FF11A1F93E84600BDB34D /* RxDataSources.h */,\n\t\t\t\tC82FF11B1F93E84600BDB34D /* CollectionViewSectionedDataSource.swift */,\n\t\t\t\tC82FF11C1F93E84600BDB34D /* UI+SectionedViewType.swift */,\n\t\t\t\tC82FF11D1F93E84600BDB34D /* IntegerType+IdentifiableType.swift */,\n\t\t\t\tC82FF11F1F93E84600BDB34D /* RxCollectionViewSectionedAnimatedDataSource.swift */,\n\t\t\t\tC82FF1201F93E84600BDB34D /* TableViewSectionedDataSource.swift */,\n\t\t\t\tC82FF1211F93E84600BDB34D /* RxTableViewSectionedReloadDataSource.swift */,\n\t\t\t);\n\t\t\tpath = RxDataSources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83366D41AD0293800C668A7 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t780D63E2226B320A00BEACB0 /* Rx.playground */,\n\t\t\t\tC81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */,\n\t\t\t\tC8B290A51C959D2900E923D0 /* RxDataSources */,\n\t\t\t\tC83366DF1AD0293800C668A7 /* RxExample */,\n\t\t\t\tC886A6751D85AC7B00653EE4 /* Extensions */,\n\t\t\t\tC849EF621C3190360048AC4A /* RxExample-iOSTests */,\n\t\t\t\tC88C2B281D67EC5200B01A98 /* RxExample-iOSUITests */,\n\t\t\t\tC82E1DB11DC69E8D004A6413 /* RxExample-macOSUITests */,\n\t\t\t\t787BBB58226B2A6100279500 /* Playgrounds */,\n\t\t\t\tC83366DE1AD0293800C668A7 /* Products */,\n\t\t\t\tEF8128F0226BD61900AE22C2 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83366DE1AD0293800C668A7 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC83366DD1AD0293800C668A7 /* RxExample-iOS.app */,\n\t\t\t\tC88BB8DC1B07E6C90064D411 /* RxExample.app */,\n\t\t\t\tC849EF611C3190360048AC4A /* RxExample-iOSTests.xctest */,\n\t\t\t\tC88C2B271D67EC5200B01A98 /* RxExample-iOSUITests.xctest */,\n\t\t\t\tC82E1DB01DC69E8D004A6413 /* RxExample-macOSUITests.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83366DF1AD0293800C668A7 /* RxExample */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8DF92E91B0B38C0009BCF9A /* Images.xcassets */,\n\t\t\t\tC86781C91DB824D500B2029A /* macOS */,\n\t\t\t\tC86E2F2E1AE5A0CA00C31024 /* Examples */,\n\t\t\t\tC83367101AD029AE00C668A7 /* Services */,\n\t\t\t\t2864D5F11D995FCD004F8484 /* Application+Extensions.swift */,\n\t\t\t\tC8BCD3DE1C1480E9005F1280 /* Operators.swift */,\n\t\t\t\t07E3C2321B03605B0010338D /* Dependencies.swift */,\n\t\t\t\tC890A65C1AEC084100AFF7E6 /* ViewController.swift */,\n\t\t\t\tC833670F1AD029AE00C668A7 /* Example.swift */,\n\t\t\t\tC849EF9B1C31A8750048AC4A /* String+URL.swift */,\n\t\t\t\tC8D3DDD21FB5DB6900BFE7D4 /* Feedbacks.swift */,\n\t\t\t\tC84E5BA51E7893A4001F659A /* Observable+Extensions.swift */,\n\t\t\t\tC819DAE81ED0DDD50043A770 /* Version.swift */,\n\t\t\t\tC819DAF91ED0DE920043A770 /* Lenses.swift */,\n\t\t\t\tC8DF92C71B0B2F84009BCF9A /* iOS */,\n\t\t\t\tC83366E01AD0293800C668A7 /* Supporting Files */,\n\t\t\t);\n\t\t\tpath = RxExample;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83366E01AD0293800C668A7 /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8DF92F21B0B3E71009BCF9A /* Info-iOS.plist */,\n\t\t\t\tC8DF92F01B0B3E67009BCF9A /* Info-macOS.plist */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC83367101AD029AE00C668A7 /* Services */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC809E9791BE6841C0058D948 /* Wireframe.swift */,\n\t\t\t\tC83367111AD029AE00C668A7 /* HtmlParsing.swift */,\n\t\t\t\tC83367121AD029AE00C668A7 /* ImageService.swift */,\n\t\t\t\tC8A2A2C71B4049E300F11F09 /* PseudoRandomGenerator.swift */,\n\t\t\t\tC8A2A2CA1B404A1200F11F09 /* Randomizer.swift */,\n\t\t\t\tC80397391BD3E17D009D8B26 /* ActivityIndicator.swift */,\n\t\t\t\tB18F3BBB1BD92EC8000AAC79 /* Reachability.swift */,\n\t\t\t\tB18F3BE11BDB2E8F000AAC79 /* ReachabilityService.swift */,\n\t\t\t\tB1604CB41BE49F8D002E1279 /* DownloadableImage.swift */,\n\t\t\t\tB1604CC81BE5BBFA002E1279 /* UIImageView+DownloadableImage.swift */,\n\t\t\t\tC809E97C1BE697100058D948 /* UIImage+Extensions.swift */,\n\t\t\t\t0744CDD31C4DB5F000720FD2 /* GeolocationService.swift */,\n\t\t\t);\n\t\t\tpath = Services;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC843A08B1C1CE39900CBA4BD /* GitHubSearchRepositories */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC817727E1E7DEE5100EA679B /* GitHubSearchRepositories.swift */,\n\t\t\t\tAE51C1CE1DE735FD005BAF5F /* GitHubSearchRepositories.storyboard */,\n\t\t\t\tC843A08C1C1CE39900CBA4BD /* GitHubSearchRepositoriesAPI.swift */,\n\t\t\t\tC843A08D1C1CE39900CBA4BD /* GitHubSearchRepositoriesViewController.swift */,\n\t\t\t\tC843A0921C1CE58700CBA4BD /* UINavigationController+Extensions.swift */,\n\t\t\t);\n\t\t\tpath = GitHubSearchRepositories;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC849EF621C3190360048AC4A /* RxExample-iOSTests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89C2BD71C32231A00EBC99C /* Mocks */,\n\t\t\t\tC886A6921D85ADA100653EE4 /* UIImagePickerController+RxTests.swift */,\n\t\t\t\tC886A6901D85AD7E00653EE4 /* CLLocationManager+RxTests.swift */,\n\t\t\t\tC849EF631C3190360048AC4A /* RxExample_iOSTests.swift */,\n\t\t\t\tC89C2BD51C321DA200EBC99C /* TestScheduler+MarbleTests.swift */,\n\t\t\t\tC849EF651C3190360048AC4A /* Info.plist */,\n\t\t\t\tC886A6941D85AEA300653EE4 /* RxTest.swift */,\n\t\t\t);\n\t\t\tpath = \"RxExample-iOSTests\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC849EF7C1C3193B10048AC4A /* UsingDriver > 2 */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC849EF841C3195180048AC4A /* GitHubSignupViewController2.swift */,\n\t\t\t\tC849EF851C3195180048AC4A /* GithubSignupViewModel2.swift */,\n\t\t\t);\n\t\t\tname = \"UsingDriver > 2\";\n\t\t\tpath = UsingDriver;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC849EF7D1C3193B10048AC4A /* UsingVanillaObservables > 1 */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC849EF7E1C3193B10048AC4A /* GitHubSignupViewController1.swift */,\n\t\t\t\tC849EF7F1C3193B10048AC4A /* GithubSignupViewModel1.swift */,\n\t\t\t);\n\t\t\tname = \"UsingVanillaObservables > 1\";\n\t\t\tpath = UsingVanillaObservables;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC864BAD01C3332F10083833C /* TableViewWithEditingCommands */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1E01DE73660005BAF5F /* TableViewWithEditingCommands.storyboard */,\n\t\t\t\tC864BAD11C3332F10083833C /* DetailViewController.swift */,\n\t\t\t\tC864BAD21C3332F10083833C /* RandomUserAPI.swift */,\n\t\t\t\tC864BAD41C3332F10083833C /* TableViewWithEditingCommandsViewController.swift */,\n\t\t\t\tC864BAD51C3332F10083833C /* UIImageView+Extensions.swift */,\n\t\t\t\tC864BAD61C3332F10083833C /* User.swift */,\n\t\t\t);\n\t\t\tpath = TableViewWithEditingCommands;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781C91DB824D500B2029A /* macOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781CA1DB824D500B2029A /* AppDelegate.swift */,\n\t\t\t\tC86781CB1DB824D500B2029A /* Main.storyboard */,\n\t\t\t);\n\t\t\tpath = macOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86781CF1DB8250400B2029A /* macOS simple example */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86781D01DB8250400B2029A /* IntroductionExampleViewController.swift */,\n\t\t\t);\n\t\t\tpath = \"macOS simple example\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F2E1AE5A0CA00C31024 /* Examples */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t252C9F671F1410D600F5F951 /* UIPickerViewExample */,\n\t\t\t\t8479BC6F1C3BCB4800FB8B54 /* ImagePicker */,\n\t\t\t\tC8BCD3E41C14A950005F1280 /* Numbers */,\n\t\t\t\tC8BCD3E81C14B015005F1280 /* SimpleValidation */,\n\t\t\t\t0744CDEB1C4DB71300720FD2 /* GeolocationExample */,\n\t\t\t\tC86E2F4C1AE5A10900C31024 /* GitHubSignup */,\n\t\t\t\tC822B1E11C14E37B0088A01A /* SimpleTableViewExample */,\n\t\t\t\tC822B1E51C14E7120088A01A /* SimpleTableViewExampleSectioned */,\n\t\t\t\tC86781CF1DB8250400B2029A /* macOS simple example */,\n\t\t\t\tC864BAD01C3332F10083833C /* TableViewWithEditingCommands */,\n\t\t\t\tC8984CCD1C36BC3E001E4272 /* TableViewPartialUpdates */,\n\t\t\t\tC86E2F301AE5A0CA00C31024 /* WikipediaImageSearch */,\n\t\t\t\t075F130E1B4E9D10000D7861 /* APIWrappers */,\n\t\t\t\t07A5C3D91B70B6B8001EFE5C /* Calculator */,\n\t\t\t\tC843A08B1C1CE39900CBA4BD /* GitHubSearchRepositories */,\n\t\t\t);\n\t\t\tpath = Examples;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F301AE5A0CA00C31024 /* WikipediaImageSearch */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1E21DE73667005BAF5F /* WikipediaSearch.storyboard */,\n\t\t\t\tC86E2F311AE5A0CA00C31024 /* ViewModels */,\n\t\t\t\tC86E2F341AE5A0CA00C31024 /* Views */,\n\t\t\t\tC86E2F3A1AE5A0CA00C31024 /* WikipediaAPI */,\n\t\t\t);\n\t\t\tpath = WikipediaImageSearch;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F311AE5A0CA00C31024 /* ViewModels */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86E2F321AE5A0CA00C31024 /* SearchResultViewModel.swift */,\n\t\t\t);\n\t\t\tpath = ViewModels;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F341AE5A0CA00C31024 /* Views */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8C46DA31B47F7110020D71E /* CollectionViewImageCell.swift */,\n\t\t\t\tC8C46DA41B47F7110020D71E /* WikipediaImageCell.xib */,\n\t\t\t\tC8C46DA51B47F7110020D71E /* WikipediaSearchCell.swift */,\n\t\t\t\tC8C46DA61B47F7110020D71E /* WikipediaSearchCell.xib */,\n\t\t\t\tC8C46DA71B47F7110020D71E /* WikipediaSearchViewController.swift */,\n\t\t\t);\n\t\t\tpath = Views;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F3A1AE5A0CA00C31024 /* WikipediaAPI */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC86E2F3B1AE5A0CA00C31024 /* WikipediaAPI.swift */,\n\t\t\t\tC86E2F3C1AE5A0CA00C31024 /* WikipediaPage.swift */,\n\t\t\t\tC86E2F3D1AE5A0CA00C31024 /* WikipediaSearchResult.swift */,\n\t\t\t);\n\t\t\tpath = WikipediaAPI;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC86E2F4C1AE5A10900C31024 /* GitHubSignup */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1D01DE73608005BAF5F /* GitHubSignup1.storyboard */,\n\t\t\t\tAE51C1D11DE73608005BAF5F /* GitHubSignup2.storyboard */,\n\t\t\t\tC849EF7C1C3193B10048AC4A /* UsingDriver > 2 */,\n\t\t\t\tC849EF7D1C3193B10048AC4A /* UsingVanillaObservables > 1 */,\n\t\t\t\tC822B1D81C14CBEA0088A01A /* Protocols.swift */,\n\t\t\t\tC822B1DB1C14CD1C0088A01A /* DefaultImplementations.swift */,\n\t\t\t\tC822B1DE1C14CEAA0088A01A /* BindingExtensions.swift */,\n\t\t\t);\n\t\t\tpath = GitHubSignup;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC886A6751D85AC7B00653EE4 /* Extensions */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88CB7251D8F253D0021D83F /* RxImagePickerDelegateProxy.swift */,\n\t\t\t\tC886A68C1D85AD2000653EE4 /* CLLocationManager+Rx.swift */,\n\t\t\t\tC886A68D1D85AD2000653EE4 /* RxCLLocationManagerDelegateProxy.swift */,\n\t\t\t\tC886A68A1D85AC9400653EE4 /* UIImagePickerController+Rx.swift */,\n\t\t\t);\n\t\t\tpath = Extensions;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC88C2B281D67EC5200B01A98 /* RxExample-iOSUITests */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC88C2B291D67EC5200B01A98 /* FlowTests.swift */,\n\t\t\t\tC88C2B2B1D67EC5200B01A98 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = \"RxExample-iOSUITests\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8984CCD1C36BC3E001E4272 /* TableViewPartialUpdates */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1DE1DE73655005BAF5F /* PartialUpdates.storyboard */,\n\t\t\t\tC8984CCE1C36BC3E001E4272 /* NumberCell.swift */,\n\t\t\t\tC8984CCF1C36BC3E001E4272 /* NumberSectionView.swift */,\n\t\t\t\tC8984CD01C36BC3E001E4272 /* PartialUpdatesViewController.swift */,\n\t\t\t);\n\t\t\tpath = TableViewPartialUpdates;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC89C2BD71C32231A00EBC99C /* Mocks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC89C2BD81C32231A00EBC99C /* MockGitHubAPI.swift */,\n\t\t\t\tC89C2BD91C32231A00EBC99C /* MockWireframe.swift */,\n\t\t\t\tC89C2BDA1C32231A00EBC99C /* NotImplementedStubs.swift */,\n\t\t\t\tC89C2BDB1C32231A00EBC99C /* ValidationResult+Equatable.swift */,\n\t\t\t);\n\t\t\tpath = Mocks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8B290A51C959D2900E923D0 /* RxDataSources */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC82FF1011F93E84600BDB34D /* Differentiator */,\n\t\t\t\tC82FF1101F93E84600BDB34D /* RxDataSources */,\n\t\t\t\tC8B290BE1C959D2900E923D0 /* README.md */,\n\t\t\t);\n\t\t\tpath = RxDataSources;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BCD3E41C14A950005F1280 /* Numbers */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1D61DE73623005BAF5F /* Numbers.storyboard */,\n\t\t\t\tC8BCD3E51C14A95E005F1280 /* NumbersViewController.swift */,\n\t\t\t);\n\t\t\tpath = Numbers;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8BCD3E81C14B015005F1280 /* SimpleValidation */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAE51C1DC1DE73649005BAF5F /* SimpleValidation.storyboard */,\n\t\t\t\tC8BCD3E91C14B02A005F1280 /* SimpleValidationViewController.swift */,\n\t\t\t);\n\t\t\tpath = SimpleValidation;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC8DF92C71B0B2F84009BCF9A /* iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC8DF92E01B0B32DA009BCF9A /* LaunchScreen.xib */,\n\t\t\t\tC8DF92E11B0B32DA009BCF9A /* Main.storyboard */,\n\t\t\t\tC8DF92E21B0B32DA009BCF9A /* RootViewController.swift */,\n\t\t\t\tC8DF92C81B0B2F84009BCF9A /* AppDelegate.swift */,\n\t\t\t\tA34040202C47AC2F009E3F74 /* BaseNavigationController.swift */,\n\t\t\t\tC8CDF0C01D688DF700C18F99 /* UITableView+Extensions.swift */,\n\t\t\t);\n\t\t\tpath = iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEF8128F0226BD61900AE22C2 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tC82E1DAF1DC69E8D004A6413 /* RxExample-macOSUITests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C82E1DB71DC69E8D004A6413 /* Build configuration list for PBXNativeTarget \"RxExample-macOSUITests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC82E1DAC1DC69E8D004A6413 /* Sources */,\n\t\t\t\tC82E1DAD1DC69E8D004A6413 /* Frameworks */,\n\t\t\t\tC82E1DAE1DC69E8D004A6413 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC82E1DB61DC69E8D004A6413 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"RxExample-macOSUITests\";\n\t\t\tproductName = \"RxExample-macOSUITests\";\n\t\t\tproductReference = C82E1DB01DC69E8D004A6413 /* RxExample-macOSUITests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.ui-testing\";\n\t\t};\n\t\tC83366DC1AD0293800C668A7 /* RxExample-iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C83366FF1AD0293900C668A7 /* Build configuration list for PBXNativeTarget \"RxExample-iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC83366D91AD0293800C668A7 /* Sources */,\n\t\t\t\tC83366DA1AD0293800C668A7 /* Frameworks */,\n\t\t\t\tC83366DB1AD0293800C668A7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC8E1EB371E30FB1C00919B41 /* PBXTargetDependency */,\n\t\t\t\tC8E1EB211E30FB1600919B41 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"RxExample-iOS\";\n\t\t\tproductName = RxExample;\n\t\t\tproductReference = C83366DD1AD0293800C668A7 /* RxExample-iOS.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tC849EF601C3190360048AC4A /* RxExample-iOSTests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C849EF7B1C3190360048AC4A /* Build configuration list for PBXNativeTarget \"RxExample-iOSTests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC849EF5D1C3190360048AC4A /* Sources */,\n\t\t\t\tC849EF5E1C3190360048AC4A /* Frameworks */,\n\t\t\t\tC849EF5F1C3190360048AC4A /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC8E1EB3D1E30FB3C00919B41 /* PBXTargetDependency */,\n\t\t\t\tC849EF671C3190360048AC4A /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"RxExample-iOSTests\";\n\t\t\tproductName = \"RxExample-iOSTests\";\n\t\t\tproductReference = C849EF611C3190360048AC4A /* RxExample-iOSTests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tC88BB8B91B07E6C90064D411 /* RxExample-OSX */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C88BB8D91B07E6C90064D411 /* Build configuration list for PBXNativeTarget \"RxExample-OSX\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC88BB8BA1B07E6C90064D411 /* Sources */,\n\t\t\t\tC88BB8CD1B07E6C90064D411 /* Frameworks */,\n\t\t\t\tC88BB8D01B07E6C90064D411 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = \"RxExample-OSX\";\n\t\t\tproductName = RxExample;\n\t\t\tproductReference = C88BB8DC1B07E6C90064D411 /* RxExample.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n\t\tC88C2B261D67EC5200B01A98 /* RxExample-iOSUITests */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = C88C2B2E1D67EC5200B01A98 /* Build configuration list for PBXNativeTarget \"RxExample-iOSUITests\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tC88C2B231D67EC5200B01A98 /* Sources */,\n\t\t\t\tC88C2B241D67EC5200B01A98 /* Frameworks */,\n\t\t\t\tC88C2B251D67EC5200B01A98 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tC8E1EB3F1E30FB4600919B41 /* PBXTargetDependency */,\n\t\t\t\tC88C2B2D1D67EC5200B01A98 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = \"RxExample-iOSUITests\";\n\t\t\tproductName = \"RxExample-iOSUITests\";\n\t\t\tproductReference = C88C2B271D67EC5200B01A98 /* RxExample-iOSUITests.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.ui-testing\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tC83366D51AD0293800C668A7 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0810;\n\t\t\t\tLastUpgradeCheck = 1250;\n\t\t\t\tORGANIZATIONNAME = \"Krunoslav Zaher\";\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\tC82E1DAF1DC69E8D004A6413 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.1;\n\t\t\t\t\t\tDevelopmentTeam = \"\";\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = C88BB8B91B07E6C90064D411;\n\t\t\t\t\t};\n\t\t\t\t\tC83366DC1AD0293800C668A7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 6.2;\n\t\t\t\t\t\tDevelopmentTeam = 2V65Z4JB29;\n\t\t\t\t\t\tLastSwiftMigration = 1020;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tC849EF601C3190360048AC4A = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.2;\n\t\t\t\t\t\tDevelopmentTeam = \"\";\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t\tTestTargetID = C83366DC1AD0293800C668A7;\n\t\t\t\t\t};\n\t\t\t\t\tC88BB8B91B07E6C90064D411 = {\n\t\t\t\t\t\tLastSwiftMigration = 0800;\n\t\t\t\t\t};\n\t\t\t\t\tC88C2B261D67EC5200B01A98 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.0;\n\t\t\t\t\t\tDevelopmentTeam = \"\";\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t\tTestTargetID = C83366DC1AD0293800C668A7;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = C83366D81AD0293800C668A7 /* Build configuration list for PBXProject \"RxExample\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = C83366D41AD0293800C668A7;\n\t\t\tproductRefGroup = C83366DE1AD0293800C668A7 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = C81B39F21BC1C28400EF5A9F /* Products */;\n\t\t\t\t\tProjectRef = C81B39F11BC1C28400EF5A9F /* Rx.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tC83366DC1AD0293800C668A7 /* RxExample-iOS */,\n\t\t\t\tC88BB8B91B07E6C90064D411 /* RxExample-OSX */,\n\t\t\t\tC849EF601C3190360048AC4A /* RxExample-iOSTests */,\n\t\t\t\tC88C2B261D67EC5200B01A98 /* RxExample-iOSUITests */,\n\t\t\t\tC82E1DAF1DC69E8D004A6413 /* RxExample-macOSUITests */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\t787BBB6B226B2A6100279500 /* RxRelay.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = RxRelay.framework;\n\t\t\tremoteRef = 787BBB6A226B2A6100279500 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t8479BC661C3BC98F00FB8B54 /* AllTests-iOS.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = \"AllTests-iOS.xctest\";\n\t\t\tremoteRef = 8479BC651C3BC98F00FB8B54 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t8479BC681C3BC98F00FB8B54 /* AllTests-tvOS.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = \"AllTests-tvOS.xctest\";\n\t\t\tremoteRef = 8479BC671C3BC98F00FB8B54 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t8479BC6A1C3BC98F00FB8B54 /* AllTests-macOS.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = \"AllTests-macOS.xctest\";\n\t\t\tremoteRef = 8479BC691C3BC98F00FB8B54 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\t8479BC6C1C3BC98F00FB8B54 /* PerformanceTests.app */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.application;\n\t\t\tname = PerformanceTests.app;\n\t\t\tpath = Microoptimizations.app;\n\t\t\tremoteRef = 8479BC6B1C3BC98F00FB8B54 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tC810DCBF1E3D612900D53105 /* Benchmarks.xctest */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.cfbundle;\n\t\t\tpath = Benchmarks.xctest;\n\t\t\tremoteRef = C810DCBE1E3D612900D53105 /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tC81B3A011BC1C28400EF5A9F /* RxSwift.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = RxSwift.framework;\n\t\t\tremoteRef = C81B3A001BC1C28400EF5A9F /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tC81B3A091BC1C28400EF5A9F /* RxCocoa.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = RxCocoa.framework;\n\t\t\tremoteRef = C81B3A081BC1C28400EF5A9F /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tC81B3A111BC1C28400EF5A9F /* RxBlocking.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = RxBlocking.framework;\n\t\t\tremoteRef = C81B3A101BC1C28400EF5A9F /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n\t\tC8864C5A1C275A200073016D /* RxTest.framework */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = wrapper.framework;\n\t\t\tpath = RxTest.framework;\n\t\t\tremoteRef = C8864C591C275A200073016D /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\tC82E1DAE1DC69E8D004A6413 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83366DB1AD0293800C668A7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8C46DAB1B47F7110020D71E /* WikipediaSearchCell.xib in Resources */,\n\t\t\t\tAE51C1E31DE73667005BAF5F /* WikipediaSearch.storyboard in Resources */,\n\t\t\t\tAE51C1D71DE73623005BAF5F /* Numbers.storyboard in Resources */,\n\t\t\t\tAE51C1CF1DE735FD005BAF5F /* GitHubSearchRepositories.storyboard in Resources */,\n\t\t\t\tAE51C1DB1DE7363C005BAF5F /* SimpleTableViewExampleSectioned.storyboard in Resources */,\n\t\t\t\tAE51C1D51DE73613005BAF5F /* ImagePicker.storyboard in Resources */,\n\t\t\t\tAE51C1CD1DE735EF005BAF5F /* Geolocation.storyboard in Resources */,\n\t\t\t\tAE51C1D31DE73608005BAF5F /* GitHubSignup2.storyboard in Resources */,\n\t\t\t\t252C9F7A1F14115B00F5F951 /* SimpleUIPickerViewExample.storyboard in Resources */,\n\t\t\t\tAE51C1DD1DE73649005BAF5F /* SimpleValidation.storyboard in Resources */,\n\t\t\t\tC8DF92E31B0B32DA009BCF9A /* LaunchScreen.xib in Resources */,\n\t\t\t\tC8C46DA91B47F7110020D71E /* WikipediaImageCell.xib in Resources */,\n\t\t\t\tAE51C1C91DE735D8005BAF5F /* APIWrappers.storyboard in Resources */,\n\t\t\t\tC8DF92EA1B0B38C0009BCF9A /* Images.xcassets in Resources */,\n\t\t\t\tC8DF92E41B0B32DA009BCF9A /* Main.storyboard in Resources */,\n\t\t\t\tAE51C1E11DE73660005BAF5F /* TableViewWithEditingCommands.storyboard in Resources */,\n\t\t\t\tAE51C1D91DE73633005BAF5F /* SimpleTableViewExample.storyboard in Resources */,\n\t\t\t\tAE51C1CB1DE735E3005BAF5F /* Calculator.storyboard in Resources */,\n\t\t\t\tAE51C1DF1DE73655005BAF5F /* PartialUpdates.storyboard in Resources */,\n\t\t\t\tAE51C1D21DE73608005BAF5F /* GitHubSignup1.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC849EF5F1C3190360048AC4A /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88BB8D01B07E6C90064D411 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC8DF92EB1B0B38C0009BCF9A /* Images.xcassets in Resources */,\n\t\t\t\tC86781CE1DB824E500B2029A /* Main.storyboard in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88C2B251D67EC5200B01A98 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tC82E1DAC1DC69E8D004A6413 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC82E1DB31DC69E8D004A6413 /* RxExample_macOSUITests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC83366D91AD0293800C668A7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t0744CDD41C4DB5F000720FD2 /* GeolocationService.swift in Sources */,\n\t\t\t\tB1604CC91BE5BBFA002E1279 /* UIImageView+DownloadableImage.swift in Sources */,\n\t\t\t\tC886A68F1D85AD2000653EE4 /* RxCLLocationManagerDelegateProxy.swift in Sources */,\n\t\t\t\tC86E2F3E1AE5A0CA00C31024 /* SearchResultViewModel.swift in Sources */,\n\t\t\t\tC83367241AD029AE00C668A7 /* HtmlParsing.swift in Sources */,\n\t\t\t\tC8F8C48A1C277F460047640B /* Calculator.swift in Sources */,\n\t\t\t\tC82FF1261F93E84600BDB34D /* Diff.swift in Sources */,\n\t\t\t\tC843A08E1C1CE39900CBA4BD /* GitHubSearchRepositoriesAPI.swift in Sources */,\n\t\t\t\tC82FF1311F93E84600BDB34D /* FloatingPointType+IdentifiableType.swift in Sources */,\n\t\t\t\tC849EF801C3193B10048AC4A /* GitHubSignupViewController1.swift in Sources */,\n\t\t\t\tC8DF92E51B0B32DA009BCF9A /* RootViewController.swift in Sources */,\n\t\t\t\tC822B1DC1C14CD1C0088A01A /* DefaultImplementations.swift in Sources */,\n\t\t\t\tC82FF12F1F93E84600BDB34D /* Array+Extensions.swift in Sources */,\n\t\t\t\t2864D5F21D995FCD004F8484 /* Application+Extensions.swift in Sources */,\n\t\t\t\tC819DAFA1ED0DE920043A770 /* Lenses.swift in Sources */,\n\t\t\t\tC82FF1231F93E84600BDB34D /* Utilities.swift in Sources */,\n\t\t\t\tC84E5BA61E7893A4001F659A /* Observable+Extensions.swift in Sources */,\n\t\t\t\tC886A68E1D85AD2000653EE4 /* CLLocationManager+Rx.swift in Sources */,\n\t\t\t\tC82FF12E1F93E84600BDB34D /* AnimatableSectionModelType.swift in Sources */,\n\t\t\t\tC8C46DA81B47F7110020D71E /* CollectionViewImageCell.swift in Sources */,\n\t\t\t\tC82FF1341F93E84600BDB34D /* DataSources.swift in Sources */,\n\t\t\t\tC8984CD31C36BC3E001E4272 /* NumberSectionView.swift in Sources */,\n\t\t\t\tC822B1E31C14E4810088A01A /* SimpleTableViewExampleViewController.swift in Sources */,\n\t\t\t\tC8C46DAC1B47F7110020D71E /* WikipediaSearchViewController.swift in Sources */,\n\t\t\t\t07A5C3DB1B70B703001EFE5C /* CalculatorViewController.swift in Sources */,\n\t\t\t\tC849EF861C3195180048AC4A /* GitHubSignupViewController2.swift in Sources */,\n\t\t\t\tC864BAD71C3332F10083833C /* DetailViewController.swift in Sources */,\n\t\t\t\tC822B1DF1C14CEAA0088A01A /* BindingExtensions.swift in Sources */,\n\t\t\t\tC864BAD91C3332F10083833C /* RandomUserAPI.swift in Sources */,\n\t\t\t\tA5CD038F1F1670E50005A376 /* CustomPickerViewAdapterExampleViewController.swift in Sources */,\n\t\t\t\tC886A68B1D85AC9400653EE4 /* UIImagePickerController+Rx.swift in Sources */,\n\t\t\t\tC864BADF1C3332F10083833C /* UIImageView+Extensions.swift in Sources */,\n\t\t\t\tC82FF1391F93E84600BDB34D /* UI+SectionedViewType.swift in Sources */,\n\t\t\t\tC8BCD3DF1C1480E9005F1280 /* Operators.swift in Sources */,\n\t\t\t\tC843A0901C1CE39900CBA4BD /* GitHubSearchRepositoriesViewController.swift in Sources */,\n\t\t\t\tC803973A1BD3E17D009D8B26 /* ActivityIndicator.swift in Sources */,\n\t\t\t\tC82FF1241F93E84600BDB34D /* IdentifiableType.swift in Sources */,\n\t\t\t\tC82FF13E1F93E84600BDB34D /* RxTableViewSectionedReloadDataSource.swift in Sources */,\n\t\t\t\tC8CDF0C11D688DF700C18F99 /* UITableView+Extensions.swift in Sources */,\n\t\t\t\tC849EF821C3193B10048AC4A /* GithubSignupViewModel1.swift in Sources */,\n\t\t\t\tC82FF13A1F93E84600BDB34D /* IntegerType+IdentifiableType.swift in Sources */,\n\t\t\t\tC864BADD1C3332F10083833C /* TableViewWithEditingCommandsViewController.swift in Sources */,\n\t\t\t\tC822B1D91C14CBEA0088A01A /* Protocols.swift in Sources */,\n\t\t\t\tC8BCD3E61C14A95E005F1280 /* NumbersViewController.swift in Sources */,\n\t\t\t\tC849EF881C3195180048AC4A /* GithubSignupViewModel2.swift in Sources */,\n\t\t\t\tC809E97A1BE6841C0058D948 /* Wireframe.swift in Sources */,\n\t\t\t\tC843A0931C1CE58700CBA4BD /* UINavigationController+Extensions.swift in Sources */,\n\t\t\t\tC82FF1321F93E84600BDB34D /* RxTableViewSectionedAnimatedDataSource.swift in Sources */,\n\t\t\t\tC82FF12B1F93E84600BDB34D /* AnimatableSectionModelType+ItemPath.swift in Sources */,\n\t\t\t\tC82FF12A1F93E84600BDB34D /* Optional+Extensions.swift in Sources */,\n\t\t\t\tC822B1E71C14E7250088A01A /* SimpleTableViewExampleSectionedViewController.swift in Sources */,\n\t\t\t\tC83367251AD029AE00C668A7 /* ImageService.swift in Sources */,\n\t\t\t\tC819DAE91ED0DDD50043A770 /* Version.swift in Sources */,\n\t\t\t\tC82FF13C1F93E84600BDB34D /* RxCollectionViewSectionedAnimatedDataSource.swift in Sources */,\n\t\t\t\tC82FF1271F93E84600BDB34D /* AnimatableSectionModel.swift in Sources */,\n\t\t\t\tC82FF1331F93E84600BDB34D /* RxCollectionViewSectionedReloadDataSource.swift in Sources */,\n\t\t\t\tC817727F1E7DEE5100EA679B /* GitHubSearchRepositories.swift in Sources */,\n\t\t\t\tC86E2F471AE5A0CA00C31024 /* WikipediaSearchResult.swift in Sources */,\n\t\t\t\tC8984CD11C36BC3E001E4272 /* NumberCell.swift in Sources */,\n\t\t\t\tC82FF1381F93E84600BDB34D /* CollectionViewSectionedDataSource.swift in Sources */,\n\t\t\t\tC8A2A2C81B4049E300F11F09 /* PseudoRandomGenerator.swift in Sources */,\n\t\t\t\tC8D132151C42B54B00B59FFF /* UIImagePickerController+RxCreate.swift in Sources */,\n\t\t\t\t252C9F781F14111800F5F951 /* SimplePickerViewExampleViewController.swift in Sources */,\n\t\t\t\tA34040282C47AC34009E3F74 /* BaseNavigationController.swift in Sources */,\n\t\t\t\tC8984CD51C36BC3E001E4272 /* PartialUpdatesViewController.swift in Sources */,\n\t\t\t\tC82FF1371F93E84600BDB34D /* Deprecated.swift in Sources */,\n\t\t\t\tC88CB7261D8F253D0021D83F /* RxImagePickerDelegateProxy.swift in Sources */,\n\t\t\t\tC82FF1221F93E84600BDB34D /* SectionModelType.swift in Sources */,\n\t\t\t\tC82FF1361F93E84600BDB34D /* RxPickerViewAdapter.swift in Sources */,\n\t\t\t\t8479BC721C3BDAD400FB8B54 /* ImagePickerController.swift in Sources */,\n\t\t\t\tC864BAE11C3332F10083833C /* User.swift in Sources */,\n\t\t\t\t0744CDED1C4DB78600720FD2 /* GeolocationViewController.swift in Sources */,\n\t\t\t\tC83367231AD029AE00C668A7 /* Example.swift in Sources */,\n\t\t\t\tC890A65D1AEC084100AFF7E6 /* ViewController.swift in Sources */,\n\t\t\t\tC8C46DAA1B47F7110020D71E /* WikipediaSearchCell.swift in Sources */,\n\t\t\t\tC82FF12C1F93E84600BDB34D /* Changeset.swift in Sources */,\n\t\t\t\tB1604CB51BE49F8D002E1279 /* DownloadableImage.swift in Sources */,\n\t\t\t\t075F13101B4E9D5A000D7861 /* APIWrappersViewController.swift in Sources */,\n\t\t\t\tC8D3DDE21FB5DB6900BFE7D4 /* Feedbacks.swift in Sources */,\n\t\t\t\tC82FF1251F93E84600BDB34D /* SectionModel.swift in Sources */,\n\t\t\t\tB18F3BE21BDB2E8F000AAC79 /* ReachabilityService.swift in Sources */,\n\t\t\t\tB18F3BBC1BD92EC8000AAC79 /* Reachability.swift in Sources */,\n\t\t\t\t07E3C2331B03605B0010338D /* Dependencies.swift in Sources */,\n\t\t\t\tC82FF1291F93E84600BDB34D /* ItemPath.swift in Sources */,\n\t\t\t\tC849EF9C1C31A8750048AC4A /* String+URL.swift in Sources */,\n\t\t\t\tC86E2F451AE5A0CA00C31024 /* WikipediaAPI.swift in Sources */,\n\t\t\t\tC8DF92CD1B0B2F84009BCF9A /* AppDelegate.swift in Sources */,\n\t\t\t\tC86E2F461AE5A0CA00C31024 /* WikipediaPage.swift in Sources */,\n\t\t\t\tC82FF13D1F93E84600BDB34D /* TableViewSectionedDataSource.swift in Sources */,\n\t\t\t\tC82FF1351F93E84600BDB34D /* String+IdentifiableType.swift in Sources */,\n\t\t\t\tC809E97D1BE697100058D948 /* UIImage+Extensions.swift in Sources */,\n\t\t\t\tC8A2A2CB1B404A1200F11F09 /* Randomizer.swift in Sources */,\n\t\t\t\tC8BCD3EA1C14B02A005F1280 /* SimpleValidationViewController.swift in Sources */,\n\t\t\t\tC82FF1301F93E84600BDB34D /* AnimationConfiguration.swift in Sources */,\n\t\t\t\tC82FF1281F93E84600BDB34D /* IdentifiableValue.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC849EF5D1C3190360048AC4A /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC89C2BD61C321DA200EBC99C /* TestScheduler+MarbleTests.swift in Sources */,\n\t\t\t\tC886A6951D85AEA300653EE4 /* RxTest.swift in Sources */,\n\t\t\t\tC849EF901C319E9A0048AC4A /* GithubSignupViewModel1.swift in Sources */,\n\t\t\t\tC849EF641C3190360048AC4A /* RxExample_iOSTests.swift in Sources */,\n\t\t\t\tC886A6911D85AD7E00653EE4 /* CLLocationManager+RxTests.swift in Sources */,\n\t\t\t\tC849EF921C319E9A0048AC4A /* DefaultImplementations.swift in Sources */,\n\t\t\t\tC849EF991C31A63C0048AC4A /* Wireframe.swift in Sources */,\n\t\t\t\tC89C2BDC1C32231A00EBC99C /* MockGitHubAPI.swift in Sources */,\n\t\t\t\tC89C2BDE1C32231A00EBC99C /* NotImplementedStubs.swift in Sources */,\n\t\t\t\tC849EF9A1C31A7680048AC4A /* ActivityIndicator.swift in Sources */,\n\t\t\t\tC849EF951C319E9D0048AC4A /* GithubSignupViewModel2.swift in Sources */,\n\t\t\t\tC886A6931D85ADA100653EE4 /* UIImagePickerController+RxTests.swift in Sources */,\n\t\t\t\tC89C2BDD1C32231A00EBC99C /* MockWireframe.swift in Sources */,\n\t\t\t\tC89C2BDF1C32231A00EBC99C /* ValidationResult+Equatable.swift in Sources */,\n\t\t\t\tC849EF911C319E9A0048AC4A /* Protocols.swift in Sources */,\n\t\t\t\tC849EF9F1C31A8750048AC4A /* String+URL.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88BB8BA1B07E6C90064D411 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC809E97F1BE69B660058D948 /* Wireframe.swift in Sources */,\n\t\t\t\tC86781CC1DB824D500B2029A /* AppDelegate.swift in Sources */,\n\t\t\t\tC88BB8BB1B07E6C90064D411 /* SearchResultViewModel.swift in Sources */,\n\t\t\t\tC88BB8BC1B07E6C90064D411 /* HtmlParsing.swift in Sources */,\n\t\t\t\tC8E9D2AF1BD3FD960079D0DB /* ActivityIndicator.swift in Sources */,\n\t\t\t\tC849EF9D1C31A8750048AC4A /* String+URL.swift in Sources */,\n\t\t\t\tC88BB8BE1B07E6C90064D411 /* ImageService.swift in Sources */,\n\t\t\t\tB1604CC31BE5B8BD002E1279 /* ReachabilityService.swift in Sources */,\n\t\t\t\t2864D5F31D995FCD004F8484 /* Application+Extensions.swift in Sources */,\n\t\t\t\tC86781D11DB8250400B2029A /* IntroductionExampleViewController.swift in Sources */,\n\t\t\t\tC88BB8BF1B07E6C90064D411 /* WikipediaSearchResult.swift in Sources */,\n\t\t\t\tB18F3BBF1BD93DFF000AAC79 /* Reachability.swift in Sources */,\n\t\t\t\tC88BB8C31B07E6C90064D411 /* Example.swift in Sources */,\n\t\t\t\tC88BB8C41B07E6C90064D411 /* ViewController.swift in Sources */,\n\t\t\t\tC88BB8C71B07E6C90064D411 /* Dependencies.swift in Sources */,\n\t\t\t\tC88BB8CA1B07E6C90064D411 /* WikipediaAPI.swift in Sources */,\n\t\t\t\tC809E9801BE69BA30058D948 /* UIImage+Extensions.swift in Sources */,\n\t\t\t\t927A78B82117A5E700A45638 /* Operators.swift in Sources */,\n\t\t\t\tB1604CCA1BE5BC18002E1279 /* DownloadableImage.swift in Sources */,\n\t\t\t\tC84E5BA71E7893A4001F659A /* Observable+Extensions.swift in Sources */,\n\t\t\t\tC88BB8CC1B07E6C90064D411 /* WikipediaPage.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tC88C2B231D67EC5200B01A98 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tC88C2B2A1D67EC5200B01A98 /* FlowTests.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tC82E1DB61DC69E8D004A6413 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C88BB8B91B07E6C90064D411 /* RxExample-OSX */;\n\t\t\ttargetProxy = C82E1DB51DC69E8D004A6413 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC849EF671C3190360048AC4A /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C83366DC1AD0293800C668A7 /* RxExample-iOS */;\n\t\t\ttargetProxy = C849EF661C3190360048AC4A /* PBXContainerItemProxy */;\n\t\t};\n\t\tC88C2B2D1D67EC5200B01A98 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = C83366DC1AD0293800C668A7 /* RxExample-iOS */;\n\t\t\ttargetProxy = C88C2B2C1D67EC5200B01A98 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E1EB211E30FB1600919B41 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"RxSwift-iOS\";\n\t\t\ttargetProxy = C8E1EB201E30FB1600919B41 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E1EB371E30FB1C00919B41 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"RxCocoa-iOS\";\n\t\t\ttargetProxy = C8E1EB361E30FB1C00919B41 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E1EB3D1E30FB3C00919B41 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"RxTest-iOS\";\n\t\t\ttargetProxy = C8E1EB3C1E30FB3C00919B41 /* PBXContainerItemProxy */;\n\t\t};\n\t\tC8E1EB3F1E30FB4600919B41 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\tname = \"RxTest-iOS\";\n\t\t\ttargetProxy = C8E1EB3E1E30FB4600919B41 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin XCBuildConfiguration section */\n\t\tC82E1DB81DC69E8D004A6413 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-macOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.RxExample-macOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-OSX\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC82E1DB91DC69E8D004A6413 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-macOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.RxExample-macOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-OSX\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC82E1DBA1DC69E8D004A6413 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-macOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"io.rx.RxExample-macOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-OSX\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC83366FD1AD0293900C668A7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = RxExample/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D DEBUG -D TRACE_RESOURCES\";\n\t\t\t\tPRODUCT_NAME = RxExample;\n\t\t\t\tSDKROOT = \"\";\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC83366FE1AD0293900C668A7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = RxExample/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D RELEASE\";\n\t\t\t\tPRODUCT_NAME = RxExample;\n\t\t\t\tSDKROOT = \"\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC83367001AD0293900C668A7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = 2V65Z4JB29;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-iOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.4.3.0;\n\t\t\t\tPRODUCT_NAME = \"RxExample-iOS\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC83367011AD0293900C668A7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = 2V65Z4JB29;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-iOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.4.3.0;\n\t\t\t\tPRODUCT_NAME = \"RxExample-iOS\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC849EF681C3190360048AC4A /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"kzaher.RxExample-iOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/RxExample-iOS.app/RxExample-iOS\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC849EF691C3190360048AC4A /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"kzaher.RxExample-iOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/RxExample-iOS.app/RxExample-iOS\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC849EF6A1C3190360048AC4A /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tBUNDLE_LOADER = \"$(TEST_HOST)\";\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSTests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"kzaher.RxExample-iOSTests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_HOST = \"$(BUILT_PRODUCTS_DIR)/RxExample-iOS.app/RxExample-iOS\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC88BB8DA1B07E6C90064D411 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-macOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @loader_path/../Frameworks @executable_path/../Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.osx;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC88BB8DB1B07E6C90064D411 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-macOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @loader_path/../Frameworks @executable_path/../Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.osx;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC88C2B2F1D67EC5200B01A98 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"rx.RxExample-iOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-iOS\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tC88C2B301D67EC5200B01A98 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"rx.RxExample-iOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-iOS\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tC88C2B311D67EC5200B01A98 /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVES = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tINFOPLIST_FILE = \"RxExample-iOSUITests/Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"rx.RxExample-iOSUITests\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTEST_TARGET_NAME = \"RxExample-iOS\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8DF92ED1B0B3DFA009BCF9A /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"iPhone Developer\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = \"\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = RxExample/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.0;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.13;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tOTHER_SWIFT_FLAGS = \"-D TRACE_RESOURCES\";\n\t\t\t\tPRODUCT_NAME = RxExample;\n\t\t\t\tSDKROOT = \"\";\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2,3,4\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8DF92EE1B0B3DFA009BCF9A /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEVELOPMENT_TEAM = 2V65Z4JB29;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-iOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.4.3.0;\n\t\t\t\tPRODUCT_NAME = \"RxExample-iOS\";\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n\t\tC8DF92EF1B0B3DFA009BCF9A /* Release-Tests */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tINFOPLIST_FILE = \"RxExample/Info-macOS.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @loader_path/../Frameworks @executable_path/../Frameworks\";\n\t\t\t\tOTHER_LDFLAGS = \"\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = io.rx.example.osx;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t};\n\t\t\tname = \"Release-Tests\";\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tC82E1DB71DC69E8D004A6413 /* Build configuration list for PBXNativeTarget \"RxExample-macOSUITests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC82E1DB81DC69E8D004A6413 /* Debug */,\n\t\t\t\tC82E1DB91DC69E8D004A6413 /* Release */,\n\t\t\t\tC82E1DBA1DC69E8D004A6413 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC83366D81AD0293800C668A7 /* Build configuration list for PBXProject \"RxExample\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC83366FD1AD0293900C668A7 /* Debug */,\n\t\t\t\tC83366FE1AD0293900C668A7 /* Release */,\n\t\t\t\tC8DF92ED1B0B3DFA009BCF9A /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC83366FF1AD0293900C668A7 /* Build configuration list for PBXNativeTarget \"RxExample-iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC83367001AD0293900C668A7 /* Debug */,\n\t\t\t\tC83367011AD0293900C668A7 /* Release */,\n\t\t\t\tC8DF92EE1B0B3DFA009BCF9A /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC849EF7B1C3190360048AC4A /* Build configuration list for PBXNativeTarget \"RxExample-iOSTests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC849EF681C3190360048AC4A /* Debug */,\n\t\t\t\tC849EF691C3190360048AC4A /* Release */,\n\t\t\t\tC849EF6A1C3190360048AC4A /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC88BB8D91B07E6C90064D411 /* Build configuration list for PBXNativeTarget \"RxExample-OSX\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC88BB8DA1B07E6C90064D411 /* Debug */,\n\t\t\t\tC88BB8DB1B07E6C90064D411 /* Release */,\n\t\t\t\tC8DF92EF1B0B3DFA009BCF9A /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tC88C2B2E1D67EC5200B01A98 /* Build configuration list for PBXNativeTarget \"RxExample-iOSUITests\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tC88C2B2F1D67EC5200B01A98 /* Debug */,\n\t\t\t\tC88C2B301D67EC5200B01A98 /* Release */,\n\t\t\t\tC88C2B311D67EC5200B01A98 /* Release-Tests */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = C83366D51AD0293800C668A7 /* Project object */;\n}\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:RxExample.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C83366DC1AD0293800C668A7\"\n               BuildableName = \"RxExample-iOS.app\"\n               BlueprintName = \"RxExample-iOS\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Release\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C83366DC1AD0293800C668A7\"\n            BuildableName = \"RxExample-iOS.app\"\n            BlueprintName = \"RxExample-iOS\"\n            ReferencedContainer = \"container:RxExample.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C83366DC1AD0293800C668A7\"\n            BuildableName = \"RxExample-iOS.app\"\n            BlueprintName = \"RxExample-iOS\"\n            ReferencedContainer = \"container:RxExample.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOSTests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C849EF601C3190360048AC4A\"\n               BuildableName = \"RxExample-iOSTests.xctest\"\n               BlueprintName = \"RxExample-iOSTests\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-iOSUITests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C88C2B261D67EC5200B01A98\"\n               BuildableName = \"RxExample-iOSUITests.xctest\"\n               BlueprintName = \"RxExample-iOSUITests\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-macOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C88BB8B91B07E6C90064D411\"\n               BuildableName = \"RxExample.app\"\n               BlueprintName = \"RxExample-OSX\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C82E1DAF1DC69E8D004A6413\"\n               BuildableName = \"RxExample-macOSUITests.xctest\"\n               BlueprintName = \"RxExample-macOSUITests\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C88BB8B91B07E6C90064D411\"\n            BuildableName = \"RxExample.app\"\n            BlueprintName = \"RxExample-OSX\"\n            ReferencedContainer = \"container:RxExample.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"C88BB8B91B07E6C90064D411\"\n            BuildableName = \"RxExample.app\"\n            BlueprintName = \"RxExample-OSX\"\n            ReferencedContainer = \"container:RxExample.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RxExample/RxExample.xcodeproj/xcshareddata/xcschemes/RxExample-macOSUITests.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1250\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"C82E1DAF1DC69E8D004A6413\"\n               BuildableName = \"RxExample-macOSUITests.xctest\"\n               BlueprintName = \"RxExample-macOSUITests\"\n               ReferencedContainer = \"container:RxExample.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "RxRelay/BehaviorRelay.swift",
    "content": "//\n//  BehaviorRelay.swift\n//  RxRelay\n//\n//  Created by Krunoslav Zaher on 10/7/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// BehaviorRelay is a wrapper for `BehaviorSubject`.\n///\n/// Unlike `BehaviorSubject` it can't terminate with error or completed.\npublic final class BehaviorRelay<Element>: ObservableType {\n    private let subject: BehaviorSubject<Element>\n\n    /// Accepts `event` and emits it to subscribers\n    public func accept(_ event: Element) {\n        subject.onNext(event)\n    }\n\n    /// Current value of behavior subject\n    public var value: Element {\n        // this try! is ok because subject can't error out or be disposed\n        try! subject.value()\n    }\n\n    /// Initializes behavior relay with initial value.\n    public init(value: Element) {\n        subject = BehaviorSubject(value: value)\n    }\n\n    /// Subscribes observer\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        subject.subscribe(observer)\n    }\n\n    /// - returns: Canonical interface for push style sequence\n    public func asObservable() -> Observable<Element> {\n        subject.asObservable()\n    }\n\n    /// Convert to an `Infallible`\n    ///\n    /// - returns: `Infallible<Element>`\n    public func asInfallible() -> Infallible<Element> {\n        asInfallible(onErrorFallbackTo: .empty())\n    }\n}\n"
  },
  {
    "path": "RxRelay/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(RX_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxRelay/Observable+Bind.swift",
    "content": "//\n//  Observable+Bind.swift\n//  RxRelay\n//\n//  Created by Shai Mishali on 09/04/2019.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension ObservableType {\n    /**\n     Creates new subscription and sends elements to publish relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target publish relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: PublishRelay<Element>...) -> Disposable {\n        bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to publish relay(s).\n\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n     - parameter relays: Target publish relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: PublishRelay<Element?>...) -> Disposable {\n        map { $0 as Element? }.bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to publish relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target publish relays for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    private func bind(to relays: [PublishRelay<Element>]) -> Disposable {\n        subscribe { e in\n            switch e {\n            case let .next(element):\n                for relay in relays {\n                    relay.accept(element)\n                }\n            case let .error(error):\n                rxFatalErrorInDebug(\"Binding error to publish relay: \\(error)\")\n            case .completed:\n                break\n            }\n        }\n    }\n\n    /**\n     Creates new subscription and sends elements to behavior relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target behavior relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: BehaviorRelay<Element>...) -> Disposable {\n        bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to behavior relay(s).\n\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n     - parameter relays: Target behavior relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: BehaviorRelay<Element?>...) -> Disposable {\n        map { $0 as Element? }.bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to behavior relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target behavior relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    private func bind(to relays: [BehaviorRelay<Element>]) -> Disposable {\n        subscribe { e in\n            switch e {\n            case let .next(element):\n                for relay in relays {\n                    relay.accept(element)\n                }\n            case let .error(error):\n                rxFatalErrorInDebug(\"Binding error to behavior relay: \\(error)\")\n            case .completed:\n                break\n            }\n        }\n    }\n\n    /**\n     Creates new subscription and sends elements to replay relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target replay relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: ReplayRelay<Element>...) -> Disposable {\n        bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to replay relay(s).\n\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n\n     - parameter relays: Target replay relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    func bind(to relays: ReplayRelay<Element?>...) -> Disposable {\n        map { $0 as Element? }.bind(to: relays)\n    }\n\n    /**\n     Creates new subscription and sends elements to replay relay(s).\n     In case error occurs in debug mode, `fatalError` will be raised.\n     In case error occurs in release mode, `error` will be logged.\n     - parameter relays: Target replay relay for sequence elements.\n     - returns: Disposable object that can be used to unsubscribe the observer.\n     */\n    private func bind(to relays: [ReplayRelay<Element>]) -> Disposable {\n        subscribe { e in\n            switch e {\n            case let .next(element):\n                for relay in relays {\n                    relay.accept(element)\n                }\n            case let .error(error):\n                rxFatalErrorInDebug(\"Binding error to behavior relay: \\(error)\")\n            case .completed:\n                break\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxRelay/PublishRelay.swift",
    "content": "//\n//  PublishRelay.swift\n//  RxRelay\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// PublishRelay is a wrapper for `PublishSubject`.\n///\n/// Unlike `PublishSubject` it can't terminate with error or completed.\npublic final class PublishRelay<Element>: ObservableType {\n    private let subject: PublishSubject<Element>\n\n    /// Accepts `event` and emits it to subscribers\n    public func accept(_ event: Element) {\n        subject.onNext(event)\n    }\n\n    /// Initializes with internal empty subject.\n    public init() {\n        subject = PublishSubject()\n    }\n\n    /// Subscribes observer\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        subject.subscribe(observer)\n    }\n\n    /// - returns: Canonical interface for push style sequence\n    public func asObservable() -> Observable<Element> {\n        subject.asObservable()\n    }\n\n    /// Convert to an `Infallible`\n    ///\n    /// - returns: `Infallible<Element>`\n    public func asInfallible() -> Infallible<Element> {\n        asInfallible(onErrorFallbackTo: .empty())\n    }\n}\n"
  },
  {
    "path": "RxRelay/ReplayRelay.swift",
    "content": "//\n//  ReplayRelay.swift\n//  RxRelay\n//\n//  Created by Zsolt Kovacs on 12/22/19.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// ReplayRelay is a wrapper for `ReplaySubject`.\n///\n/// Unlike `ReplaySubject` it can't terminate with an error or complete.\npublic final class ReplayRelay<Element>: ObservableType {\n    private let subject: ReplaySubject<Element>\n\n    /// Accepts `event` and emits it to subscribers\n    public func accept(_ event: Element) {\n        subject.onNext(event)\n    }\n\n    private init(subject: ReplaySubject<Element>) {\n        self.subject = subject\n    }\n\n    /// Creates new instance of `ReplayRelay` that replays at most `bufferSize` last elements sent to it.\n    ///\n    /// - parameter bufferSize: Maximal number of elements to replay to observers after subscription.\n    /// - returns: New instance of replay relay.\n    public static func create(bufferSize: Int) -> ReplayRelay<Element> {\n        ReplayRelay(subject: ReplaySubject.create(bufferSize: bufferSize))\n    }\n\n    /// Creates a new instance of `ReplayRelay` that buffers all the sent to it.\n    /// To avoid filling up memory, developer needs to make sure that the use case will only ever store a 'reasonable'\n    /// number of elements.\n    public static func createUnbound() -> ReplayRelay<Element> {\n        ReplayRelay(subject: ReplaySubject.createUnbounded())\n    }\n\n    /// Subscribes observer\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        subject.subscribe(observer)\n    }\n\n    /// - returns: Canonical interface for push style sequence\n    public func asObservable() -> Observable<Element> {\n        subject.asObserver()\n    }\n\n    /// Convert to an `Infallible`\n    ///\n    /// - returns: `Infallible<Element>`\n    public func asInfallible() -> Infallible<Element> {\n        asInfallible(onErrorFallbackTo: .empty())\n    }\n}\n"
  },
  {
    "path": "RxRelay/Utils.swift",
    "content": "//\n//  Utils.swift\n//  RxRelay\n//\n//  Created by Shai Mishali on 09/04/2019.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nfunc rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) {\n    #if DEBUG\n    fatalError(lastMessage(), file: file, line: line)\n    #else\n    print(\"\\(file):\\(line): \\(lastMessage())\")\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/AnyObserver.swift",
    "content": "//\n//  AnyObserver.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// A type-erased `ObserverType`.\n///\n/// Forwards operations to an arbitrary underlying observer with the same `Element` type, hiding the specifics of the underlying observer type.\npublic struct AnyObserver<Element>: ObserverType {\n    /// Anonymous event handler type.\n    public typealias EventHandler = (Event<Element>) -> Void\n\n    private let observer: EventHandler\n\n    /// Construct an instance whose `on(event)` calls `eventHandler(event)`\n    ///\n    /// - parameter eventHandler: Event handler that observes sequences events.\n    public init(eventHandler: @escaping EventHandler) {\n        observer = eventHandler\n    }\n\n    /// Construct an instance whose `on(event)` calls `observer.on(event)`\n    ///\n    /// - parameter observer: Observer that receives sequence events.\n    public init<Observer: ObserverType>(_ observer: Observer) where Observer.Element == Element {\n        self.observer = observer.on\n    }\n\n    /// Send `event` to this observer.\n    ///\n    /// - parameter event: Event instance.\n    public func on(_ event: Event<Element>) {\n        observer(event)\n    }\n\n    /// Erases type of observer and returns canonical observer.\n    ///\n    /// - returns: type erased observer.\n    public func asObserver() -> AnyObserver<Element> {\n        self\n    }\n}\n\nextension AnyObserver {\n    /// Collection of `AnyObserver`s\n    typealias s = Bag<(Event<Element>) -> Void>\n}\n\npublic extension ObserverType {\n    /// Erases type of observer and returns canonical observer.\n    ///\n    /// - returns: type erased observer.\n    func asObserver() -> AnyObserver<Element> {\n        AnyObserver(self)\n    }\n\n    /// Transforms observer of type R to type E using custom transform method.\n    /// Each event sent to result observer is transformed and sent to `self`.\n    ///\n    /// - returns: observer that transforms events.\n    func mapObserver<Result>(_ transform: @escaping (Result) throws -> Element) -> AnyObserver<Result> {\n        AnyObserver { e in\n            self.on(e.map(transform))\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Binder.swift",
    "content": "//\n//  Binder.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Observer that enforces interface binding rules:\n * can't bind errors (in debug builds binding of errors causes `fatalError` in release builds errors are being logged)\n * ensures binding is performed on a specific scheduler\n\n `Binder` doesn't retain target and in case target is released, element isn't bound.\n\n By default it binds elements on main scheduler.\n */\npublic struct Binder<Value>: ObserverType {\n    public typealias Element = Value\n\n    private let binding: (Event<Value>) -> Void\n\n    /// Initializes `Binder`\n    ///\n    /// - parameter target: Target object.\n    /// - parameter scheduler: Scheduler used to bind the events.\n    /// - parameter binding: Binding logic.\n    public init<Target: AnyObject>(_ target: Target, scheduler: ImmediateSchedulerType = MainScheduler(), binding: @escaping (Target, Value) -> Void) {\n        self.binding = { [weak target] event in\n            switch event {\n            case let .next(element):\n                _ = scheduler.schedule(element) { element in\n                    if let target {\n                        binding(target, element)\n                    }\n                    return Disposables.create()\n                }\n            case let .error(error):\n                rxFatalErrorInDebug(\"Binding error: \\(error)\")\n            case .completed:\n                break\n            }\n        }\n    }\n\n    /// Binds next element to owner view as described in `binding`.\n    public func on(_ event: Event<Value>) {\n        binding(event)\n    }\n\n    /// Erases type of observer.\n    ///\n    /// - returns: type erased observer.\n    public func asObserver() -> AnyObserver<Value> {\n        AnyObserver(eventHandler: on)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Cancelable.swift",
    "content": "//\n//  Cancelable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents disposable resource with state tracking.\npublic protocol Cancelable: Disposable {\n    /// Was resource disposed.\n    var isDisposed: Bool { get }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/AsyncLock.swift",
    "content": "//\n//  AsyncLock.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n In case nobody holds this lock, the work will be queued and executed immediately\n on thread that is requesting lock.\n\n In case there is somebody currently holding that lock, action will be enqueued.\n When owned of the lock finishes with it's processing, it will also execute\n and pending work.\n\n That means that enqueued work could possibly be executed later on a different thread.\n */\nfinal class AsyncLock<I: InvocableType>:\n    Disposable,\n    Lock,\n    SynchronizedDisposeType\n{\n    typealias Action = () -> Void\n\n    private var _lock = SpinLock()\n\n    private var queue: Queue<I> = Queue(capacity: 0)\n\n    private var isExecuting: Bool = false\n    private var hasFaulted: Bool = false\n\n    /**\n     Locks the current instance, preventing other threads from modifying it until `unlock()` is called.\n\n     This method is used to create a critical section where only one thread is allowed to access the protected resources at a time.\n\n     Example usage:\n     ```swift\n     let lock = AsyncLock<SomeAction>()\n     lock.lock()\n     // Critical section\n     lock.unlock()\n     ```\n     */\n    func lock() {\n        _lock.lock()\n    }\n\n    /**\n     Unlocks the current instance, allowing other threads to access the protected resources.\n\n     This method is called after a `lock()` to release the critical section, ensuring that other waiting threads can proceed.\n\n     Example usage:\n     ```swift\n     let lock = AsyncLock<SomeAction>()\n     lock.lock()\n     // Critical section\n     lock.unlock()\n     ```\n     */\n    func unlock() {\n        _lock.unlock()\n    }\n\n    // MARK: - Queue Methods\n\n    /**\n     Enqueues an action into the internal queue for deferred execution.\n\n     If no actions are currently being executed, the method returns the action for immediate execution. Otherwise, the action is enqueued for deferred execution when the lock is available.\n\n     - Parameter action: The action to enqueue.\n     - Returns: The action if it can be executed immediately, or `nil` if it has been enqueued.\n\n     Example usage:\n     ```swift\n     let lock = AsyncLock<SomeAction>()\n     if let action = lock.enqueue(someAction) {\n     action.invoke()  // Execute the action immediately if it's not deferred.\n     }\n     ```\n     */\n    private func enqueue(_ action: I) -> I? {\n        lock(); defer { self.unlock() }\n        if hasFaulted {\n            return nil\n        }\n\n        if isExecuting {\n            queue.enqueue(action)\n            return nil\n        }\n\n        isExecuting = true\n\n        return action\n    }\n\n    /**\n     Dequeues the next action for execution, if available.\n\n     If the queue is empty, this method resets the `isExecuting` flag to indicate that no actions are currently being executed.\n\n     - Returns: The next action from the queue, or `nil` if the queue is empty.\n\n     Example usage:\n     ```swift\n     let nextAction = lock.dequeue()\n     nextAction?.invoke()  // Execute the next action if one is available.\n     ```\n     */\n    private func dequeue() -> I? {\n        lock(); defer { self.unlock() }\n        if !queue.isEmpty {\n            return queue.dequeue()\n        } else {\n            isExecuting = false\n            return nil\n        }\n    }\n\n    /**\n     Invokes the provided action, ensuring that actions are executed sequentially.\n\n     The first action is executed immediately if no other actions are currently running. If other actions are already in the queue, the new action is enqueued and executed sequentially after the current actions are completed.\n\n     - Parameter action: The action to be invoked.\n\n     Example usage:\n     ```swift\n     let lock = AsyncLock<SomeAction>()\n     lock.invoke(someAction)  // Invoke or enqueue the action.\n     ```\n     */\n    func invoke(_ action: I) {\n        let firstEnqueuedAction = enqueue(action)\n\n        if let firstEnqueuedAction {\n            firstEnqueuedAction.invoke()\n        } else {\n            // action is enqueued, it's somebody else's concern now\n            return\n        }\n\n        while true {\n            let nextAction = dequeue()\n\n            if let nextAction {\n                nextAction.invoke()\n            } else {\n                return\n            }\n        }\n    }\n\n    // MARK: - Dispose Methods\n\n    /**\n     Disposes of the `AsyncLock` by clearing the internal queue and preventing further actions from being executed.\n\n     This method ensures that all pending actions are discarded, and the lock enters a faulted state where no new actions can be enqueued or executed.\n\n     Example usage:\n     ```swift\n     let lock = AsyncLock<SomeAction>()\n     lock.dispose()  // Clear the queue and prevent further actions.\n     ```\n     */\n    func dispose() {\n        synchronizedDispose()\n    }\n\n    /**\n     Synchronously disposes of the internal queue and marks the lock as faulted.\n\n     This method is typically used internally to handle disposal of the lock in a thread-safe manner.\n\n     Example usage:\n     ```swift\n     lock.synchronized_dispose()\n     ```\n     */\n    func synchronized_dispose() {\n        queue = Queue(capacity: 0)\n        hasFaulted = true\n    }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/Lock.swift",
    "content": "//\n//  Lock.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol Lock {\n    func lock()\n    func unlock()\n}\n\n// https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html\ntypealias SpinLock = RecursiveLock\n\nextension RecursiveLock: Lock {\n    @inline(__always)\n    final func performLocked<T>(_ action: () -> T) -> T {\n        lock(); defer { self.unlock() }\n        return action()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/LockOwnerType.swift",
    "content": "//\n//  LockOwnerType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol LockOwnerType: AnyObject, Lock {\n    var lock: RecursiveLock { get }\n}\n\nextension LockOwnerType {\n    func lock() { lock.lock() }\n    func unlock() { lock.unlock() }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/SynchronizedDisposeType.swift",
    "content": "//\n//  SynchronizedDisposeType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol SynchronizedDisposeType: AnyObject, Disposable, Lock {\n    func synchronized_dispose()\n}\n\nextension SynchronizedDisposeType {\n    func synchronizedDispose() {\n        lock(); defer { self.unlock() }\n        synchronized_dispose()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/SynchronizedOnType.swift",
    "content": "//\n//  SynchronizedOnType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol SynchronizedOnType: AnyObject, ObserverType, Lock {\n    func synchronized_on(_ event: Event<Element>)\n}\n\nextension SynchronizedOnType {\n    func synchronizedOn(_ event: Event<Element>) {\n        lock(); defer { self.unlock() }\n        synchronized_on(event)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Concurrency/SynchronizedUnsubscribeType.swift",
    "content": "//\n//  SynchronizedUnsubscribeType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol SynchronizedUnsubscribeType: AnyObject {\n    associatedtype DisposeKey\n\n    func synchronizedUnsubscribe(_ disposeKey: DisposeKey)\n}\n"
  },
  {
    "path": "RxSwift/ConnectableObservableType.swift",
    "content": "//\n//  ConnectableObservableType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.\n */\npublic protocol ConnectableObservableType: ObservableType {\n    /**\n     Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.\n\n     - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.\n     */\n    func connect() -> Disposable\n}\n"
  },
  {
    "path": "RxSwift/Date+Dispatch.swift",
    "content": "//\n//  Date+Dispatch.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/14/19.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\nextension DispatchTimeInterval {\n    var convertToSecondsFactor: Double {\n        switch self {\n        case .nanoseconds: return 1_000_000_000.0\n        case .microseconds: return 1_000_000.0\n        case .milliseconds: return 1000.0\n        case .seconds: return 1.0\n        case .never: fatalError()\n        @unknown default: fatalError()\n        }\n    }\n\n    func map(_ transform: (Int, Double) -> Int) -> DispatchTimeInterval {\n        switch self {\n        case let .nanoseconds(value): return .nanoseconds(transform(value, 1_000_000_000.0))\n        case let .microseconds(value): return .microseconds(transform(value, 1_000_000.0))\n        case let .milliseconds(value): return .milliseconds(transform(value, 1000.0))\n        case let .seconds(value): return .seconds(transform(value, 1.0))\n        case .never: return .never\n        @unknown default: fatalError()\n        }\n    }\n\n    var isNow: Bool {\n        switch self {\n        case let .nanoseconds(value), let .microseconds(value), let .milliseconds(value), let .seconds(value): return value == 0\n        case .never: return false\n        @unknown default: fatalError()\n        }\n    }\n\n    func reduceWithSpanBetween(earlierDate: Date, laterDate: Date) -> DispatchTimeInterval {\n        map { value, factor in\n            let interval = laterDate.timeIntervalSince(earlierDate)\n            let remainder = Double(value) - interval * factor\n            guard remainder > 0 else { return 0 }\n            return Int(remainder.rounded(.toNearestOrAwayFromZero))\n        }\n    }\n}\n\nextension Date {\n    func addingDispatchInterval(_ dispatchInterval: DispatchTimeInterval) -> Date {\n        switch dispatchInterval {\n        case let .nanoseconds(value), let .microseconds(value), let .milliseconds(value), let .seconds(value):\n            return addingTimeInterval(TimeInterval(value) / dispatchInterval.convertToSecondsFactor)\n        case .never: return Date.distantFuture\n        @unknown default: fatalError()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposable.swift",
    "content": "//\n//  Disposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a disposable resource.\npublic protocol Disposable {\n    /// Dispose resource.\n    func dispose()\n}\n"
  },
  {
    "path": "RxSwift/Disposables/AnonymousDisposable.swift",
    "content": "//\n//  AnonymousDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an Action-based disposable.\n///\n/// When dispose method is called, disposal action will be dereferenced.\nprivate final class AnonymousDisposable: DisposeBase, Cancelable {\n    typealias DisposeAction = () -> Void\n\n    private let disposed = AtomicInt(0)\n    private var disposeAction: DisposeAction?\n\n    /// - returns: Was resource disposed.\n    var isDisposed: Bool {\n        isFlagSet(disposed, 1)\n    }\n\n    /// Constructs a new disposable with the given action used for disposal.\n    ///\n    /// - parameter disposeAction: Disposal action which will be run upon calling `dispose`.\n    private init(_ disposeAction: @escaping DisposeAction) {\n        self.disposeAction = disposeAction\n        super.init()\n    }\n\n    // Non-deprecated version of the constructor, used by `Disposables.create(with:)`\n    fileprivate init(disposeAction: @escaping DisposeAction) {\n        self.disposeAction = disposeAction\n        super.init()\n    }\n\n    /// Calls the disposal action if and only if the current instance hasn't been disposed yet.\n    ///\n    /// After invoking disposal action, disposal action will be dereferenced.\n    fileprivate func dispose() {\n        if fetchOr(disposed, 1) == 0 {\n            if let action = disposeAction {\n                disposeAction = nil\n                action()\n            }\n        }\n    }\n}\n\npublic extension Disposables {\n    /// Constructs a new disposable with the given action used for disposal.\n    ///\n    /// - parameter dispose: Disposal action which will be run upon calling `dispose`.\n    static func create(with dispose: @escaping () -> Void) -> Cancelable {\n        AnonymousDisposable(disposeAction: dispose)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/BinaryDisposable.swift",
    "content": "//\n//  BinaryDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents two disposable resources that are disposed together.\nprivate final class BinaryDisposable: DisposeBase, Cancelable {\n    private let disposed = AtomicInt(0)\n\n    // state\n    private var disposable1: Disposable?\n    private var disposable2: Disposable?\n\n    /// - returns: Was resource disposed.\n    var isDisposed: Bool {\n        isFlagSet(disposed, 1)\n    }\n\n    /// Constructs new binary disposable from two disposables.\n    ///\n    /// - parameter disposable1: First disposable\n    /// - parameter disposable2: Second disposable\n    init(_ disposable1: Disposable, _ disposable2: Disposable) {\n        self.disposable1 = disposable1\n        self.disposable2 = disposable2\n        super.init()\n    }\n\n    /// Calls the disposal action if and only if the current instance hasn't been disposed yet.\n    ///\n    /// After invoking disposal action, disposal action will be dereferenced.\n    func dispose() {\n        if fetchOr(disposed, 1) == 0 {\n            disposable1?.dispose()\n            disposable2?.dispose()\n            disposable1 = nil\n            disposable2 = nil\n        }\n    }\n}\n\npublic extension Disposables {\n    /// Creates a disposable with the given disposables.\n    static func create(_ disposable1: Disposable, _ disposable2: Disposable) -> Cancelable {\n        BinaryDisposable(disposable1, disposable2)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/BooleanDisposable.swift",
    "content": "//\n//  BooleanDisposable.swift\n//  RxSwift\n//\n//  Created by Junior B. on 10/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a disposable resource that can be checked for disposal status.\npublic final class BooleanDisposable: Cancelable {\n    static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true)\n    private let disposed: AtomicInt\n\n    /// Initializes a new instance of the `BooleanDisposable` class\n    public init() {\n        disposed = AtomicInt(0)\n    }\n\n    /// Initializes a new instance of the `BooleanDisposable` class with given value\n    public init(isDisposed: Bool) {\n        disposed = AtomicInt(isDisposed ? 1 : 0)\n    }\n\n    /// - returns: Was resource disposed.\n    public var isDisposed: Bool {\n        isFlagSet(disposed, 1)\n    }\n\n    /// Sets the status to disposed, which can be observer through the `isDisposed` property.\n    public func dispose() {\n        fetchOr(disposed, 1)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/CompositeDisposable.swift",
    "content": "//\n//  CompositeDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/20/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a group of disposable resources that are disposed together.\npublic final class CompositeDisposable: DisposeBase, Cancelable {\n    /// Key used to remove disposable from composite disposable\n    public struct DisposeKey {\n        fileprivate let key: BagKey\n        fileprivate init(key: BagKey) {\n            self.key = key\n        }\n    }\n\n    private var lock = SpinLock()\n\n    // state\n    private var disposables: Bag<Disposable>? = Bag()\n\n    public var isDisposed: Bool {\n        lock.performLocked { self.disposables == nil }\n    }\n\n    override public init() {}\n\n    /// Initializes a new instance of composite disposable with the specified number of disposables.\n    public init(_ disposable1: Disposable, _ disposable2: Disposable) {\n        // This overload is here to make sure we are using optimized version up to 4 arguments.\n        _ = disposables!.insert(disposable1)\n        _ = disposables!.insert(disposable2)\n    }\n\n    /// Initializes a new instance of composite disposable with the specified number of disposables.\n    public init(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) {\n        // This overload is here to make sure we are using optimized version up to 4 arguments.\n        _ = disposables!.insert(disposable1)\n        _ = disposables!.insert(disposable2)\n        _ = disposables!.insert(disposable3)\n    }\n\n    /// Initializes a new instance of composite disposable with the specified number of disposables.\n    public init(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable, _ disposable4: Disposable, _ disposables: Disposable...) {\n        // This overload is here to make sure we are using optimized version up to 4 arguments.\n        _ = self.disposables!.insert(disposable1)\n        _ = self.disposables!.insert(disposable2)\n        _ = self.disposables!.insert(disposable3)\n        _ = self.disposables!.insert(disposable4)\n\n        for disposable in disposables {\n            _ = self.disposables!.insert(disposable)\n        }\n    }\n\n    /// Initializes a new instance of composite disposable with the specified number of disposables.\n    public init(disposables: [Disposable]) {\n        for disposable in disposables {\n            _ = self.disposables!.insert(disposable)\n        }\n    }\n\n    /**\n     Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.\n\n     - parameter disposable: Disposable to add.\n     - returns: Key that can be used to remove disposable from composite disposable. In case dispose bag was already\n     disposed `nil` will be returned.\n     */\n    public func insert(_ disposable: Disposable) -> DisposeKey? {\n        let key = _insert(disposable)\n\n        if key == nil {\n            disposable.dispose()\n        }\n\n        return key\n    }\n\n    private func _insert(_ disposable: Disposable) -> DisposeKey? {\n        lock.performLocked {\n            let bagKey = self.disposables?.insert(disposable)\n            return bagKey.map(DisposeKey.init)\n        }\n    }\n\n    /// - returns: Gets the number of disposables contained in the `CompositeDisposable`.\n    public var count: Int {\n        lock.performLocked { self.disposables?.count ?? 0 }\n    }\n\n    /// Removes and disposes the disposable identified by `disposeKey` from the CompositeDisposable.\n    ///\n    /// - parameter disposeKey: Key used to identify disposable to be removed.\n    public func remove(for disposeKey: DisposeKey) {\n        _remove(for: disposeKey)?.dispose()\n    }\n\n    private func _remove(for disposeKey: DisposeKey) -> Disposable? {\n        lock.performLocked { self.disposables?.removeKey(disposeKey.key) }\n    }\n\n    /// Disposes all disposables in the group and removes them from the group.\n    public func dispose() {\n        if let disposables = _dispose() {\n            disposeAll(in: disposables)\n        }\n    }\n\n    private func _dispose() -> Bag<Disposable>? {\n        lock.performLocked {\n            let current = self.disposables\n            self.disposables = nil\n            return current\n        }\n    }\n}\n\npublic extension Disposables {\n    /// Creates a disposable with the given disposables.\n    static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable) -> Cancelable {\n        CompositeDisposable(disposable1, disposable2, disposable3)\n    }\n\n    /// Creates a disposable with the given disposables.\n    static func create(_ disposable1: Disposable, _ disposable2: Disposable, _ disposable3: Disposable, _ disposables: Disposable ...) -> Cancelable {\n        var disposables = disposables\n        disposables.append(disposable1)\n        disposables.append(disposable2)\n        disposables.append(disposable3)\n        return CompositeDisposable(disposables: disposables)\n    }\n\n    /// Creates a disposable with the given disposables.\n    static func create(_ disposables: [Disposable]) -> Cancelable {\n        switch disposables.count {\n        case 2:\n            Disposables.create(disposables[0], disposables[1])\n        default:\n            CompositeDisposable(disposables: disposables)\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/Disposables.swift",
    "content": "//\n//  Disposables.swift\n//  RxSwift\n//\n//  Created by Mohsen Ramezanpoor on 01/08/2016.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n/// A collection of utility methods for common disposable operations.\npublic struct Disposables {\n    private init() {}\n}\n"
  },
  {
    "path": "RxSwift/Disposables/DisposeBag.swift",
    "content": "//\n//  DisposeBag.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension Disposable {\n    /// Adds `self` to `bag`\n    ///\n    /// - parameter bag: `DisposeBag` to add `self` to.\n    func disposed(by bag: DisposeBag) {\n        bag.insert(self)\n    }\n}\n\n/**\n Thread safe bag that disposes added disposables on `deinit`.\n\n This returns ARC (RAII) like resource management to `RxSwift`.\n\n In case contained disposables need to be disposed, just put a different dispose bag\n or create a new one in its place.\n\n     self.existingDisposeBag = DisposeBag()\n\n In case explicit disposal is necessary, there is also `CompositeDisposable`.\n */\npublic final class DisposeBag: DisposeBase {\n    private var lock = SpinLock()\n\n    // state\n    private var disposables = [Disposable]()\n    private var isDisposed = false\n\n    /// Constructs new empty dispose bag.\n    override public init() {\n        super.init()\n    }\n\n    /// Adds `disposable` to be disposed when dispose bag is being deinited.\n    ///\n    /// - parameter disposable: Disposable to add.\n    public func insert(_ disposable: Disposable) {\n        _insert(disposable)?.dispose()\n    }\n\n    private func _insert(_ disposable: Disposable) -> Disposable? {\n        lock.performLocked {\n            if self.isDisposed {\n                return disposable\n            }\n\n            self.disposables.append(disposable)\n\n            return nil\n        }\n    }\n\n    /// This is internal on purpose, take a look at `CompositeDisposable` instead.\n    private func dispose() {\n        let oldDisposables = _dispose()\n\n        for disposable in oldDisposables {\n            disposable.dispose()\n        }\n    }\n\n    private func _dispose() -> [Disposable] {\n        lock.performLocked {\n            let disposables = self.disposables\n\n            self.disposables.removeAll(keepingCapacity: false)\n            self.isDisposed = true\n\n            return disposables\n        }\n    }\n\n    deinit {\n        self.dispose()\n    }\n}\n\npublic extension DisposeBag {\n    /// Convenience init allows a list of disposables to be gathered for disposal.\n    convenience init(disposing disposables: Disposable...) {\n        self.init()\n        self.disposables += disposables\n    }\n\n    /// Convenience init which utilizes a function builder to let you pass in a list of\n    /// disposables to make a DisposeBag of.\n    convenience init(@DisposableBuilder builder: () -> [Disposable]) {\n        self.init(disposing: builder())\n    }\n\n    /// Convenience init allows an array of disposables to be gathered for disposal.\n    convenience init(disposing disposables: [Disposable]) {\n        self.init()\n        self.disposables += disposables\n    }\n\n    /// Convenience function allows a list of disposables to be gathered for disposal.\n    func insert(_ disposables: Disposable...) {\n        insert(disposables)\n    }\n\n    /// Convenience function allows a list of disposables to be gathered for disposal.\n    func insert(@DisposableBuilder builder: () -> [Disposable]) {\n        insert(builder())\n    }\n\n    /// Convenience function allows an array of disposables to be gathered for disposal.\n    func insert(_ disposables: [Disposable]) {\n        lock.performLocked {\n            if self.isDisposed {\n                disposables.forEach { $0.dispose() }\n            } else {\n                self.disposables += disposables\n            }\n        }\n    }\n\n    @resultBuilder\n    struct DisposableBuilder {\n        public static func buildBlock(_ disposables: Disposable...) -> [Disposable] {\n            disposables\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/DisposeBase.swift",
    "content": "//\n//  DisposeBase.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Base class for all disposables.\npublic class DisposeBase {\n    init() {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    deinit {\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/NopDisposable.swift",
    "content": "//\n//  NopDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a disposable that does nothing on disposal.\n///\n/// Nop = No Operation\nprivate struct NopDisposable: Disposable {\n    fileprivate static let noOp: Disposable = NopDisposable()\n\n    private init() {}\n\n    /// Does nothing.\n    func dispose() {}\n}\n\npublic extension Disposables {\n    /**\n     Creates a disposable that does nothing on disposal.\n     */\n    static func create() -> Disposable { NopDisposable.noOp }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/RefCountDisposable.swift",
    "content": "//\n//  RefCountDisposable.swift\n//  RxSwift\n//\n//  Created by Junior B. on 10/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed.\npublic final class RefCountDisposable: DisposeBase, Cancelable {\n    private var lock = SpinLock()\n    private var disposable = nil as Disposable?\n    private var primaryDisposed = false\n    private var count = 0\n\n    /// - returns: Was resource disposed.\n    public var isDisposed: Bool {\n        lock.performLocked { self.disposable == nil }\n    }\n\n    /// Initializes a new instance of the `RefCountDisposable`.\n    public init(disposable: Disposable) {\n        self.disposable = disposable\n        super.init()\n    }\n\n    /**\n     Holds a dependent disposable that when disposed decreases the refcount on the underlying disposable.\n\n     When getter is called, a dependent disposable contributing to the reference count that manages the underlying disposable's lifetime is returned.\n     */\n    public func retain() -> Disposable {\n        lock.performLocked {\n            if self.disposable != nil {\n                do {\n                    _ = try incrementChecked(&self.count)\n                } catch {\n                    rxFatalError(\"RefCountDisposable increment failed\")\n                }\n\n                return RefCountInnerDisposable(self)\n            } else {\n                return Disposables.create()\n            }\n        }\n    }\n\n    /// Disposes the underlying disposable only when all dependent disposables have been disposed.\n    public func dispose() {\n        let oldDisposable: Disposable? = lock.performLocked {\n            if let oldDisposable = self.disposable, !self.primaryDisposed {\n                self.primaryDisposed = true\n\n                if self.count == 0 {\n                    self.disposable = nil\n                    return oldDisposable\n                }\n            }\n\n            return nil\n        }\n\n        if let disposable = oldDisposable {\n            disposable.dispose()\n        }\n    }\n\n    fileprivate func release() {\n        let oldDisposable: Disposable? = lock.performLocked {\n            if let oldDisposable = self.disposable {\n                do {\n                    _ = try decrementChecked(&self.count)\n                } catch {\n                    rxFatalError(\"RefCountDisposable decrement on release failed\")\n                }\n\n                guard self.count >= 0 else {\n                    rxFatalError(\"RefCountDisposable counter is lower than 0\")\n                }\n\n                if self.primaryDisposed, self.count == 0 {\n                    self.disposable = nil\n                    return oldDisposable\n                }\n            }\n\n            return nil\n        }\n\n        if let disposable = oldDisposable {\n            disposable.dispose()\n        }\n    }\n}\n\nfinal class RefCountInnerDisposable: DisposeBase, Disposable {\n    private let parent: RefCountDisposable\n    private let isDisposed = AtomicInt(0)\n\n    init(_ parent: RefCountDisposable) {\n        self.parent = parent\n        super.init()\n    }\n\n    func dispose() {\n        if fetchOr(isDisposed, 1) == 0 {\n            parent.release()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/ScheduledDisposable.swift",
    "content": "//\n//  ScheduledDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprivate let disposeScheduledDisposable: (ScheduledDisposable) -> Disposable = { sd in\n    sd.disposeInner()\n    return Disposables.create()\n}\n\n/// Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.\npublic final class ScheduledDisposable: Cancelable {\n    public let scheduler: ImmediateSchedulerType\n\n    private let disposed = AtomicInt(0)\n\n    // state\n    private var disposable: Disposable?\n\n    /// - returns: Was resource disposed.\n    public var isDisposed: Bool {\n        isFlagSet(disposed, 1)\n    }\n\n    /**\n     Initializes a new instance of the `ScheduledDisposable` that uses a `scheduler` on which to dispose the `disposable`.\n\n     - parameter scheduler: Scheduler where the disposable resource will be disposed on.\n     - parameter disposable: Disposable resource to dispose on the given scheduler.\n     */\n    public init(scheduler: ImmediateSchedulerType, disposable: Disposable) {\n        self.scheduler = scheduler\n        self.disposable = disposable\n    }\n\n    /// Disposes the wrapped disposable on the provided scheduler.\n    public func dispose() {\n        _ = scheduler.schedule(self, action: disposeScheduledDisposable)\n    }\n\n    func disposeInner() {\n        if fetchOr(disposed, 1) == 0 {\n            disposable!.dispose()\n            disposable = nil\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/SerialDisposable.swift",
    "content": "//\n//  SerialDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.\npublic final class SerialDisposable: DisposeBase, Cancelable {\n    private var lock = SpinLock()\n\n    // state\n    private var current = nil as Disposable?\n    private var disposed = false\n\n    /// - returns: Was resource disposed.\n    public var isDisposed: Bool {\n        disposed\n    }\n\n    /// Initializes a new instance of the `SerialDisposable`.\n    override public init() {\n        super.init()\n    }\n\n    /**\n     Gets or sets the underlying disposable.\n\n     Assigning this property disposes the previous disposable object.\n\n     If the `SerialDisposable` has already been disposed, assignment to this property causes immediate disposal of the given disposable object.\n     */\n    public var disposable: Disposable {\n        get {\n            lock.performLocked {\n                self.current ?? Disposables.create()\n            }\n        }\n        set(newDisposable) {\n            let disposable: Disposable? = lock.performLocked {\n                if self.isDisposed {\n                    return newDisposable\n                } else {\n                    let toDispose = self.current\n                    self.current = newDisposable\n                    return toDispose\n                }\n            }\n\n            if let disposable {\n                disposable.dispose()\n            }\n        }\n    }\n\n    /// Disposes the underlying disposable as well as all future replacements.\n    public func dispose() {\n        _dispose()?.dispose()\n    }\n\n    private func _dispose() -> Disposable? {\n        lock.performLocked {\n            guard !self.isDisposed else { return nil }\n\n            self.disposed = true\n            let current = self.current\n            self.current = nil\n            return current\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/SingleAssignmentDisposable.swift",
    "content": "//\n//  SingleAssignmentDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Represents a disposable resource which only allows a single assignment of its underlying disposable resource.\n\n If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an exception.\n */\npublic final class SingleAssignmentDisposable: DisposeBase, Cancelable {\n    private struct DisposeState: OptionSet {\n        let rawValue: Int32\n\n        static let disposed = DisposeState(rawValue: 1 << 0)\n        static let disposableSet = DisposeState(rawValue: 1 << 1)\n    }\n\n    // state\n    private let state = AtomicInt(0)\n    private var disposable = nil as Disposable?\n\n    /// - returns: A value that indicates whether the object is disposed.\n    public var isDisposed: Bool {\n        isFlagSet(state, DisposeState.disposed.rawValue)\n    }\n\n    /// Initializes a new instance of the `SingleAssignmentDisposable`.\n    override public init() {\n        super.init()\n    }\n\n    /// Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined.\n    ///\n    /// **Throws exception if the `SingleAssignmentDisposable` has already been assigned to.**\n    public func setDisposable(_ disposable: Disposable) {\n        self.disposable = disposable\n\n        let previousState = fetchOr(state, DisposeState.disposableSet.rawValue)\n\n        if (previousState & DisposeState.disposableSet.rawValue) != 0 {\n            rxFatalError(\"oldState.disposable != nil\")\n        }\n\n        if (previousState & DisposeState.disposed.rawValue) != 0 {\n            disposable.dispose()\n            self.disposable = nil\n        }\n    }\n\n    /// Disposes the underlying disposable.\n    public func dispose() {\n        let previousState = fetchOr(state, DisposeState.disposed.rawValue)\n\n        if (previousState & DisposeState.disposed.rawValue) != 0 {\n            return\n        }\n\n        if (previousState & DisposeState.disposableSet.rawValue) != 0 {\n            guard let disposable else {\n                rxFatalError(\"Disposable not set\")\n            }\n            disposable.dispose()\n            self.disposable = nil\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Disposables/SubscriptionDisposable.swift",
    "content": "//\n//  SubscriptionDisposable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct SubscriptionDisposable<T: SynchronizedUnsubscribeType>: Disposable {\n    private let key: T.DisposeKey\n    private weak var owner: T?\n\n    init(owner: T, key: T.DisposeKey) {\n        self.owner = owner\n        self.key = key\n    }\n\n    func dispose() {\n        owner?.synchronizedUnsubscribe(key)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Errors.swift",
    "content": "//\n//  Errors.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nlet RxErrorDomain = \"RxErrorDomain\"\nlet RxCompositeFailures = \"RxCompositeFailures\"\n\n/// Generic Rx error codes.\npublic enum RxError:\n    Swift.Error,\n    CustomDebugStringConvertible\n{\n    /// Unknown error occurred.\n    case unknown\n    /// Performing an action on disposed object.\n    case disposed(object: AnyObject)\n    /// Arithmetic overflow error.\n    case overflow\n    /// Argument out of range error.\n    case argumentOutOfRange\n    /// Sequence doesn't contain any elements.\n    case noElements\n    /// Sequence contains more than one element.\n    case moreThanOneElement\n    /// Timeout error.\n    case timeout\n}\n\npublic extension RxError {\n    /// A textual representation of `self`, suitable for debugging.\n    var debugDescription: String {\n        switch self {\n        case .unknown:\n            \"Unknown error occurred.\"\n        case let .disposed(object):\n            \"Object `\\(object)` was already disposed.\"\n        case .overflow:\n            \"Arithmetic overflow occurred.\"\n        case .argumentOutOfRange:\n            \"Argument out of range.\"\n        case .noElements:\n            \"Sequence doesn't contain any elements.\"\n        case .moreThanOneElement:\n            \"Sequence contains more than one element.\"\n        case .timeout:\n            \"Sequence timeout.\"\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Event.swift",
    "content": "//\n//  Event.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a sequence event.\n///\n/// Sequence grammar:\n/// **next\\* (error | completed)**\n@frozen public enum Event<Element> {\n    /// Next element is produced.\n    case next(Element)\n\n    /// Sequence terminated with an error.\n    case error(Swift.Error)\n\n    /// Sequence completed successfully.\n    case completed\n}\n\nextension Event: CustomDebugStringConvertible {\n    /// Description of event.\n    public var debugDescription: String {\n        switch self {\n        case let .next(value):\n            \"next(\\(value))\"\n        case let .error(error):\n            \"error(\\(error))\"\n        case .completed:\n            \"completed\"\n        }\n    }\n}\n\npublic extension Event {\n    /// Is `completed` or `error` event.\n    var isStopEvent: Bool {\n        switch self {\n        case .next: false\n        case .error, .completed: true\n        }\n    }\n\n    /// If `next` event, returns element value.\n    var element: Element? {\n        if case let .next(value) = self {\n            return value\n        }\n        return nil\n    }\n\n    /// If `error` event, returns error.\n    var error: Swift.Error? {\n        if case let .error(error) = self {\n            return error\n        }\n        return nil\n    }\n\n    /// If `completed` event, returns `true`.\n    var isCompleted: Bool {\n        if case .completed = self {\n            return true\n        }\n        return false\n    }\n}\n\npublic extension Event {\n    /// Maps sequence elements using transform. If error happens during the transform, `.error`\n    /// will be returned as value.\n    func map<Result>(_ transform: (Element) throws -> Result) -> Event<Result> {\n        do {\n            switch self {\n            case let .next(element):\n                return try .next(transform(element))\n            case let .error(error):\n                return .error(error)\n            case .completed:\n                return .completed\n            }\n        } catch let e {\n            return .error(e)\n        }\n    }\n}\n\n/// A type that can be converted to `Event<Element>`.\npublic protocol EventConvertible {\n    /// Type of element in event\n    associatedtype Element\n\n    /// Event representation of this instance\n    var event: Event<Element> { get }\n}\n\nextension Event: EventConvertible {\n    /// Event representation of this instance\n    public var event: Event<Element> { self }\n}\n"
  },
  {
    "path": "RxSwift/Extensions/Bag+Rx.swift",
    "content": "//\n//  Bag+Rx.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/19/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: forEach\n\n@inline(__always)\nfunc dispatch<Element>(_ bag: Bag<(Event<Element>) -> Void>, _ event: Event<Element>) {\n    bag._value0?(event)\n\n    if bag._onlyFastPath {\n        return\n    }\n\n    let pairs = bag._pairs\n    for i in 0 ..< pairs.count {\n        pairs[i].value(event)\n    }\n\n    if let dictionary = bag._dictionary {\n        for element in dictionary.values {\n            element(event)\n        }\n    }\n}\n\n/// Dispatches `dispose` to all disposables contained inside bag.\nfunc disposeAll(in bag: Bag<Disposable>) {\n    bag._value0?.dispose()\n\n    if bag._onlyFastPath {\n        return\n    }\n\n    let pairs = bag._pairs\n    for i in 0 ..< pairs.count {\n        pairs[i].value.dispose()\n    }\n\n    if let dictionary = bag._dictionary {\n        for element in dictionary.values {\n            element.dispose()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/GroupedObservable.swift",
    "content": "//\n//  GroupedObservable.swift\n//  RxSwift\n//\n//  Created by Tomi Koskinen on 01/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an observable sequence of elements that share a common key.\n/// `GroupedObservable` is typically created by the `groupBy` operator.\n/// Each `GroupedObservable` instance represents a collection of elements\n/// that are grouped by a specific key.\n///\n/// Example usage:\n/// ```\n/// let observable = Observable.of(\"Apple\", \"Banana\", \"Apricot\", \"Blueberry\", \"Avocado\")\n///\n/// let grouped = observable.groupBy { fruit in\n///     fruit.first! // Grouping by the first letter of each fruit\n/// }\n///\n/// _ = grouped.subscribe { group in\n///     print(\"Group: \\(group.key)\")\n///     _ = group.subscribe { event in\n///         print(event)\n///     }\n/// }\n/// ```\n/// This will print:\n/// ```\n/// Group: A\n/// next(Apple)\n/// next(Apricot)\n/// next(Avocado)\n/// Group: B\n/// next(Banana)\n/// next(Blueberry)\n/// ```\npublic struct GroupedObservable<Key, Element>: ObservableType {\n    /// The key associated with this grouped observable sequence.\n    /// All elements emitted by this observable share this common key.\n    public let key: Key\n\n    private let source: Observable<Element>\n\n    /// Initializes a grouped observable sequence with a key and a source observable sequence.\n    ///\n    /// - Parameters:\n    ///   - key: The key associated with this grouped observable sequence.\n    ///   - source: The observable sequence of elements for the specified key.\n    ///\n    /// Example usage:\n    /// ```\n    /// let sourceObservable = Observable.of(\"Apple\", \"Apricot\", \"Avocado\")\n    /// let groupedObservable = GroupedObservable(key: \"A\", source: sourceObservable)\n    ///\n    /// _ = groupedObservable.subscribe { event in\n    ///     print(event)\n    /// }\n    /// ```\n    /// This will print:\n    /// ```\n    /// next(Apple)\n    /// next(Apricot)\n    /// next(Avocado)\n    /// ```\n    public init(key: Key, source: Observable<Element>) {\n        self.key = key\n        self.source = source\n    }\n\n    /// Subscribes an observer to receive events emitted by the source observable sequence.\n    ///\n    /// - Parameter observer: The observer that will receive the events of the source observable.\n    /// - Returns: A `Disposable` representing the subscription, which can be used to cancel the subscription.\n    ///\n    /// Example usage:\n    /// ```\n    /// let fruitsObservable = Observable.of(\"Apple\", \"Banana\", \"Apricot\", \"Blueberry\", \"Avocado\")\n    /// let grouped = fruitsObservable.groupBy { $0.first! } // Group by first letter\n    ///\n    /// _ = grouped.subscribe { group in\n    ///     if group.key == \"A\" {\n    ///         _ = group.subscribe { event in\n    ///             print(event)\n    ///         }\n    ///     }\n    /// }\n    /// ```\n    /// This will print:\n    /// ```\n    /// next(Apple)\n    /// next(Apricot)\n    /// next(Avocado)\n    /// ```\n    public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        source.subscribe(observer)\n    }\n\n    /// Converts this `GroupedObservable` into a regular `Observable` sequence.\n    /// This allows you to work with the sequence without directly interacting with the key.\n    ///\n    /// - Returns: The underlying `Observable` sequence of elements for the specified key.\n    ///\n    /// Example usage:\n    /// ```\n    /// let fruitsObservable = Observable.of(\"Apple\", \"Banana\", \"Apricot\", \"Blueberry\", \"Avocado\")\n    /// let grouped = fruitsObservable.groupBy { $0.first! } // Group by first letter\n    ///\n    /// _ = grouped.subscribe { group in\n    ///     if group.key == \"A\" {\n    ///         let regularObservable = group.asObservable()\n    ///         _ = regularObservable.subscribe { event in\n    ///             print(event)\n    ///         }\n    ///     }\n    /// }\n    /// ```\n    /// This will print:\n    /// ```\n    /// next(Apple)\n    /// next(Apricot)\n    /// next(Avocado)\n    /// ```\n    public func asObservable() -> Observable<Element> {\n        source\n    }\n}\n"
  },
  {
    "path": "RxSwift/ImmediateSchedulerType.swift",
    "content": "//\n//  ImmediateSchedulerType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/31/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an object that immediately schedules units of work.\npublic protocol ImmediateSchedulerType {\n    /**\n     Schedules an action to be executed immediately.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable\n}\n\npublic extension ImmediateSchedulerType {\n    /**\n     Schedules an action to be executed recursively.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    func scheduleRecursive<State>(_ state: State, action: @escaping (_ state: State, _ recurse: (State) -> Void) -> Void) -> Disposable {\n        let recursiveScheduler = RecursiveImmediateScheduler(action: action, scheduler: self)\n\n        recursiveScheduler.schedule(state)\n\n        return Disposables.create(with: recursiveScheduler.dispose)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(RX_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxSwift/Observable+Concurrency.swift",
    "content": "//\n//  Observable+Concurrency.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Foundation\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension ObservableConvertibleType {\n    /// Allows iterating over the values of an Observable\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// do {\n    ///     for try await value in observable.values {\n    ///         // Handle emitted values\n    ///     }\n    /// } catch {\n    ///     // Handle error\n    /// }\n    /// ```\n    var values: AsyncThrowingStream<Element, Error> {\n        AsyncThrowingStream<Element, Error> { continuation in\n            var isFinished = false\n            let disposable = asObservable().subscribe(\n                onNext: { value in continuation.yield(value) },\n                onError: { error in\n                    isFinished = true\n                    continuation.finish(throwing: error)\n                },\n                onCompleted: {\n                    isFinished = true\n                    continuation.finish()\n                },\n                onDisposed: {\n                    guard !isFinished else { return }\n                    continuation.finish(throwing: CancellationError())\n                }\n            )\n            continuation.onTermination = { @Sendable termination in\n                if case .cancelled = termination {\n                    disposable.dispose()\n                }\n            }\n        }\n    }\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension AsyncSequence {\n    /// Convert an `AsyncSequence` to an `Observable`.\n    ///\n    /// Iteration runs in a detached task to prevent blocking the calling thread.\n    /// Use `.observe(on:)` to control event delivery (e.g., `MainScheduler.instance` for UI updates).\n    ///\n    /// - parameter priority: Priority for the detached task\n    ///\n    /// - returns: An `Observable` of the async sequence's element type\n    func asObservable(priority: TaskPriority? = nil) -> Observable<Element> {\n        Observable.create { observer in\n            let task = Task.detached(priority: priority) {\n                do {\n                    for try await value in self {\n                        observer.onNext(value)\n                    }\n\n                    observer.onCompleted()\n                } catch is CancellationError {\n                    observer.onCompleted()\n                } catch {\n                    observer.onError(error)\n                }\n            }\n\n            return Disposables.create { task.cancel() }\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxSwift/Observable.swift",
    "content": "//\n//  Observable.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// A type-erased `ObservableType`.\n///\n/// It represents a push style sequence.\n\npublic typealias RxObservable<Element> = RxSwift.Observable<Element>\n\npublic class Observable<Element>: ObservableType {\n    init() {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    public func subscribe<Observer: ObserverType>(_: Observer) -> Disposable where Observer.Element == Element {\n        rxAbstractMethod()\n    }\n\n    public func asObservable() -> Observable<Element> { self }\n\n    deinit {\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n"
  },
  {
    "path": "RxSwift/ObservableConvertibleType.swift",
    "content": "//\n//  ObservableConvertibleType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Type that can be converted to observable sequence (`Observable<Element>`).\npublic protocol ObservableConvertibleType {\n    /// Type of elements in sequence.\n    associatedtype Element\n\n    /// Converts `self` to `Observable` sequence.\n    ///\n    /// - returns: Observable sequence that represents `self`.\n    func asObservable() -> Observable<Element>\n}\n"
  },
  {
    "path": "RxSwift/ObservableType+Extensions.swift",
    "content": "//\n//  ObservableType+Extensions.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if DEBUG\nimport Foundation\n#endif\n\npublic extension ObservableType {\n    /**\n     Subscribes an event handler to an observable sequence.\n\n     - parameter on: Action to invoke for each event in the observable sequence.\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(_ on: @escaping (Event<Element>) -> Void) -> Disposable {\n        let observer = AnonymousObserver { e in\n            on(e)\n        }\n        return asObservable().subscribe(observer)\n    }\n\n    /**\n     Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe<Object: AnyObject>(\n        with object: Object,\n        onNext: ((Object, Element) -> Void)? = nil,\n        onError: ((Object, Swift.Error) -> Void)? = nil,\n        onCompleted: ((Object) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        subscribe(\n            onNext: { [weak object] in\n                guard let object else { return }\n                onNext?(object, $0)\n            },\n            onError: { [weak object] in\n                guard let object else { return }\n                onError?(object, $0)\n            },\n            onCompleted: { [weak object] in\n                guard let object else { return }\n                onCompleted?(object)\n            },\n            onDisposed: { [weak object] in\n                guard let object else { return }\n                onDisposed?(object)\n            }\n        )\n    }\n\n    /**\n     Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(\n        onNext: ((Element) -> Void)? = nil,\n        onError: ((Swift.Error) -> Void)? = nil,\n        onCompleted: (() -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        let disposable: Disposable = if let disposed = onDisposed {\n            Disposables.create(with: disposed)\n        } else {\n            Disposables.create()\n        }\n\n        #if DEBUG\n        let synchronizationTracker = SynchronizationTracker()\n        #endif\n\n        let callStack = Hooks.recordCallStackOnError ? Hooks.customCaptureSubscriptionCallstack() : []\n\n        let observer = AnonymousObserver<Element> { event in\n            #if DEBUG\n            synchronizationTracker.register(synchronizationErrorMessage: .default)\n            defer { synchronizationTracker.unregister() }\n            #endif\n\n            switch event {\n            case let .next(value):\n                onNext?(value)\n            case let .error(error):\n                if let onError {\n                    onError(error)\n                } else {\n                    Hooks.defaultErrorHandler(callStack, error)\n                }\n                disposable.dispose()\n            case .completed:\n                onCompleted?()\n                disposable.dispose()\n            }\n        }\n        return Disposables.create(\n            asObservable().subscribe(observer),\n            disposable\n        )\n    }\n}\n\nimport Foundation\n\npublic extension Hooks {\n    typealias DefaultErrorHandler = (_ subscriptionCallStack: [String], _ error: Error) -> Void\n    typealias CustomCaptureSubscriptionCallstack = () -> [String]\n\n    private static let lock = RecursiveLock()\n    private static var _defaultErrorHandler: DefaultErrorHandler = { subscriptionCallStack, error in\n        #if DEBUG\n        let serializedCallStack = subscriptionCallStack.joined(separator: \"\\n\")\n        print(\"Unhandled error happened: \\(error)\")\n        if !serializedCallStack.isEmpty {\n            print(\"subscription called from:\\n\\(serializedCallStack)\")\n        }\n        #endif\n    }\n\n    private static var _customCaptureSubscriptionCallstack: CustomCaptureSubscriptionCallstack = {\n        #if DEBUG\n        return Thread.callStackSymbols\n        #else\n        return []\n        #endif\n    }\n\n    /// Error handler called in case onError handler wasn't provided.\n    static var defaultErrorHandler: DefaultErrorHandler {\n        get {\n            lock.performLocked { _defaultErrorHandler }\n        }\n        set {\n            lock.performLocked { _defaultErrorHandler = newValue }\n        }\n    }\n\n    /// Subscription callstack block to fetch custom callstack information.\n    static var customCaptureSubscriptionCallstack: CustomCaptureSubscriptionCallstack {\n        get {\n            lock.performLocked { _customCaptureSubscriptionCallstack }\n        }\n        set {\n            lock.performLocked { _customCaptureSubscriptionCallstack = newValue }\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/ObservableType.swift",
    "content": "//\n//  ObservableType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a push style sequence.\npublic protocol ObservableType: ObservableConvertibleType {\n    /**\n     Subscribes `observer` to receive events for this sequence.\n\n     ### Grammar\n\n     **Next\\* (Error | Completed)?**\n\n     * sequences can produce zero or more elements so zero or more `Next` events can be sent to `observer`\n     * once an `Error` or `Completed` event is sent, the sequence terminates and can't produce any other elements\n\n     It is possible that events are sent from different threads, but no two events can be sent concurrently to\n     `observer`.\n\n     ### Resource Management\n\n     When sequence sends `Complete` or `Error` event all internal resources that compute sequence elements\n     will be freed.\n\n     To cancel production of sequence elements and free resources immediately, call `dispose` on returned\n     subscription.\n\n     - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.\n     */\n    func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element\n}\n\npublic extension ObservableType {\n    /// Default implementation of converting `ObservableType` to `Observable`.\n    func asObservable() -> Observable<Element> {\n        // temporary workaround\n        // return Observable.create(subscribe: self.subscribe)\n        Observable.create { o in self.subscribe(o) }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/AddRef.swift",
    "content": "//\n//  AddRef.swift\n//  RxSwift\n//\n//  Created by Junior B. on 30/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nfinal class AddRefSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case .completed, .error:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nfinal class AddRef<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    private let refCount: RefCountDisposable\n\n    init(source: Observable<Element>, refCount: RefCountDisposable) {\n        self.source = source\n        self.refCount = refCount\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let releaseDisposable = refCount.retain()\n        let sink = AddRefSink(observer: observer, cancel: cancel)\n        let subscription = Disposables.create(releaseDisposable, source.subscribe(sink))\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Amb.swift",
    "content": "//\n//  Amb.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Propagates the observable sequence that reacts first.\n\n     - seealso: [amb operator on reactivex.io](http://reactivex.io/documentation/operators/amb.html)\n\n     - returns: An observable sequence that surfaces any of the given sequences, whichever reacted first.\n     */\n    static func amb<Sequence: Swift.Sequence>(_ sequence: Sequence) -> Observable<Element>\n        where Sequence.Element == Observable<Element>\n    {\n        sequence.reduce(Observable<Sequence.Element.Element>.never()) { a, o in\n            a.amb(o.asObservable())\n        }\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Propagates the observable sequence that reacts first.\n\n     - seealso: [amb operator on reactivex.io](http://reactivex.io/documentation/operators/amb.html)\n\n     - parameter right: Second observable sequence.\n     - returns: An observable sequence that surfaces either of the given sequences, whichever reacted first.\n     */\n    func amb<O2: ObservableType>\n    (_ right: O2)\n        -> Observable<Element> where O2.Element == Element\n    {\n        Amb(left: asObservable(), right: right.asObservable())\n    }\n}\n\nprivate enum AmbState {\n    case neither\n    case left\n    case right\n}\n\nprivate final class AmbObserver<Observer: ObserverType>: ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = AmbSink<Observer>\n    typealias This = AmbObserver<Observer>\n    typealias Sink = (This, Event<Element>) -> Void\n\n    private let parent: Parent\n    fileprivate var sink: Sink\n    fileprivate var cancel: Disposable\n\n    init(parent: Parent, cancel: Disposable, sink: @escaping Sink) {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n\n        self.parent = parent\n        self.sink = sink\n        self.cancel = cancel\n    }\n\n    func on(_ event: Event<Element>) {\n        sink(self, event)\n        if event.isStopEvent {\n            cancel.dispose()\n        }\n    }\n\n    deinit {\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n\nprivate final class AmbSink<Observer: ObserverType>: Sink<Observer> {\n    typealias Element = Observer.Element\n    typealias Parent = Amb<Element>\n    typealias AmbObserverType = AmbObserver<Observer>\n\n    private let parent: Parent\n\n    private let lock = RecursiveLock()\n    // state\n    private var choice = AmbState.neither\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let disposeAll = Disposables.create(subscription1, subscription2)\n\n        let forwardEvent = { (_: AmbObserverType, event: Event<Element>) in\n            self.forwardOn(event)\n            if event.isStopEvent {\n                self.dispose()\n            }\n        }\n\n        let decide = { (o: AmbObserverType, event: Event<Element>, me: AmbState, otherSubscription: Disposable) in\n            self.lock.performLocked {\n                if self.choice == .neither {\n                    self.choice = me\n                    o.sink = forwardEvent\n                    o.cancel = disposeAll\n                    otherSubscription.dispose()\n                }\n\n                if self.choice == me {\n                    self.forwardOn(event)\n                    if event.isStopEvent {\n                        self.dispose()\n                    }\n                }\n            }\n        }\n\n        let sink1 = AmbObserver(parent: self, cancel: subscription1) { o, e in\n            decide(o, e, .left, subscription2)\n        }\n\n        let sink2 = AmbObserver(parent: self, cancel: subscription1) { o, e in\n            decide(o, e, .right, subscription1)\n        }\n\n        subscription1.setDisposable(parent.left.subscribe(sink1))\n        subscription2.setDisposable(parent.right.subscribe(sink2))\n\n        return disposeAll\n    }\n}\n\nprivate final class Amb<Element>: Producer<Element> {\n    fileprivate let left: Observable<Element>\n    fileprivate let right: Observable<Element>\n\n    init(left: Observable<Element>, right: Observable<Element>) {\n        self.left = left\n        self.right = right\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = AmbSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/AsMaybe.swift",
    "content": "//\n//  AsMaybe.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/12/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nprivate final class AsMaybeSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n\n    private var element: Event<Element>?\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            if element != nil {\n                forwardOn(.error(RxError.moreThanOneElement))\n                dispose()\n            }\n\n            element = event\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if let element {\n                forwardOn(element)\n            }\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nfinal class AsMaybe<Element>: Producer<Element> {\n    private let source: Observable<Element>\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = AsMaybeSink(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/AsSingle.swift",
    "content": "//\n//  AsSingle.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/12/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nprivate final class AsSingleSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n\n    private var element: Event<Element>?\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            if element != nil {\n                forwardOn(.error(RxError.moreThanOneElement))\n                dispose()\n            }\n\n            element = event\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if let element {\n                forwardOn(element)\n                forwardOn(.completed)\n            } else {\n                forwardOn(.error(RxError.noElements))\n            }\n            dispose()\n        }\n    }\n}\n\nfinal class AsSingle<Element>: Producer<Element> {\n    private let source: Observable<Element>\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = AsSingleSink(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Buffer.swift",
    "content": "//\n//  Buffer.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence into a buffer that's sent out when either it's full or a given amount of time has elapsed, using the specified scheduler to run timers.\n\n     A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first.\n\n     - seealso: [buffer operator on reactivex.io](http://reactivex.io/documentation/operators/buffer.html)\n\n     - parameter timeSpan: Maximum time length of a buffer.\n     - parameter count: Maximum element count of a buffer.\n     - parameter scheduler: Scheduler to run buffering timers on.\n     - returns: An observable sequence of buffers.\n     */\n    func buffer(timeSpan: RxTimeInterval, count: Int, scheduler: SchedulerType)\n        -> Observable<[Element]>\n    {\n        BufferTimeCount(source: asObservable(), timeSpan: timeSpan, count: count, scheduler: scheduler)\n    }\n}\n\nprivate final class BufferTimeCount<Element>: Producer<[Element]> {\n    fileprivate let timeSpan: RxTimeInterval\n    fileprivate let count: Int\n    fileprivate let scheduler: SchedulerType\n    fileprivate let source: Observable<Element>\n\n    init(source: Observable<Element>, timeSpan: RxTimeInterval, count: Int, scheduler: SchedulerType) {\n        self.source = source\n        self.timeSpan = timeSpan\n        self.count = count\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == [Element] {\n        let sink = BufferTimeCountSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class BufferTimeCountSink<Element, Observer: ObserverType>:\n    Sink<Observer>,\n    LockOwnerType,\n    ObserverType,\n    SynchronizedOnType where Observer.Element == [Element]\n{\n    typealias Parent = BufferTimeCount<Element>\n\n    private let parent: Parent\n\n    let lock = RecursiveLock()\n\n    // state\n    private let timerD = SerialDisposable()\n    private var buffer = [Element]()\n    private var windowID = 0\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        createTimer(windowID)\n        return Disposables.create(timerD, parent.source.subscribe(self))\n    }\n\n    func startNewWindowAndSendCurrentOne() {\n        self.windowID = self.windowID &+ 1\n        let windowID = windowID\n\n        let buffer = buffer\n        self.buffer = []\n        forwardOn(.next(buffer))\n\n        createTimer(windowID)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            buffer.append(element)\n\n            if buffer.count == parent.count {\n                startNewWindowAndSendCurrentOne()\n            }\n\n        case let .error(error):\n            buffer = []\n            forwardOn(.error(error))\n            dispose()\n\n        case .completed:\n            forwardOn(.next(buffer))\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n\n    func createTimer(_ windowID: Int) {\n        if timerD.isDisposed {\n            return\n        }\n\n        if self.windowID != windowID {\n            return\n        }\n\n        let nextTimer = SingleAssignmentDisposable()\n\n        timerD.disposable = nextTimer\n\n        let disposable = parent.scheduler.scheduleRelative(windowID, dueTime: parent.timeSpan) { previousWindowID in\n            self.lock.performLocked {\n                if previousWindowID != self.windowID {\n                    return\n                }\n\n                self.startNewWindowAndSendCurrentOne()\n            }\n\n            return Disposables.create()\n        }\n\n        nextTimer.setDisposable(disposable)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Catch.swift",
    "content": "//\n//  Catch.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter handler: Error handler function, producing another observable sequence.\n     - returns: An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an error occurred.\n     */\n    func `catch`(_ handler: @escaping (Swift.Error) throws -> Observable<Element>)\n        -> Observable<Element>\n    {\n        Catch(source: asObservable(), handler: handler)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter handler: Error handler function, producing another observable sequence.\n     - returns: An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an error occurred.\n     */\n    @available(*, deprecated, renamed: \"catch(_:)\")\n    func catchError(_ handler: @escaping (Swift.Error) throws -> Observable<Element>)\n        -> Observable<Element>\n    {\n        `catch`(handler)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    func catchAndReturn(_ element: Element)\n        -> Observable<Element>\n    {\n        Catch(source: asObservable(), handler: { _ in Observable.just(element) })\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    @available(*, deprecated, renamed: \"catchAndReturn(_:)\")\n    func catchErrorJustReturn(_ element: Element)\n        -> Observable<Element>\n    {\n        catchAndReturn(element)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Continues an observable sequence that is terminated by an error with the next observable sequence.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - returns: An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully.\n     */\n    @available(*, deprecated, renamed: \"catch(onSuccess:onFailure:onDisposed:)\")\n    static func catchError<Sequence: Swift.Sequence>(_ sequence: Sequence) -> Observable<Element>\n        where Sequence.Element == Observable<Element>\n    {\n        `catch`(sequence: sequence)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with the next observable sequence.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - returns: An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully.\n     */\n    static func `catch`<Sequence: Swift.Sequence>(sequence: Sequence) -> Observable<Element>\n        where Sequence.Element == Observable<Element>\n    {\n        CatchSequence(sources: sequence)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Repeats the source observable sequence until it successfully terminates.\n\n     **This could potentially create an infinite sequence.**\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - returns: Observable sequence to repeat until it successfully terminates.\n     */\n    func retry() -> Observable<Element> {\n        CatchSequence(sources: InfiniteSequence(repeatedValue: asObservable()))\n    }\n\n    /**\n     Repeats the source observable sequence the specified number of times in case of an error or until it successfully terminates.\n\n     If you encounter an error and want it to retry once, then you must use `retry(2)`\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter maxAttemptCount: Maximum number of times to repeat the sequence.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.\n     */\n    func retry(_ maxAttemptCount: Int)\n        -> Observable<Element>\n    {\n        CatchSequence(sources: Swift.repeatElement(asObservable(), count: maxAttemptCount))\n    }\n}\n\n// catch with callback\n\nprivate final class CatchSinkProxy<Observer: ObserverType>: ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = CatchSink<Observer>\n\n    private let parent: Parent\n\n    init(parent: Parent) {\n        self.parent = parent\n    }\n\n    func on(_ event: Event<Element>) {\n        parent.forwardOn(event)\n\n        switch event {\n        case .next:\n            break\n        case .error, .completed:\n            parent.dispose()\n        }\n    }\n}\n\nprivate final class CatchSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = Catch<Element>\n\n    private let parent: Parent\n    private let subscription = SerialDisposable()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let d1 = SingleAssignmentDisposable()\n        subscription.disposable = d1\n        d1.setDisposable(parent.source.subscribe(self))\n\n        return subscription\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case .completed:\n            forwardOn(event)\n            dispose()\n        case let .error(error):\n            do {\n                let catchSequence = try parent.handler(error)\n\n                let observer = CatchSinkProxy(parent: self)\n\n                subscription.disposable = catchSequence.subscribe(observer)\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        }\n    }\n}\n\nprivate final class Catch<Element>: Producer<Element> {\n    typealias Handler = (Swift.Error) throws -> Observable<Element>\n\n    fileprivate let source: Observable<Element>\n    fileprivate let handler: Handler\n\n    init(source: Observable<Element>, handler: @escaping Handler) {\n        self.source = source\n        self.handler = handler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = CatchSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// catch enumerable\n\nprivate final class CatchSequenceSink<Sequence: Swift.Sequence, Observer: ObserverType>:\n    TailRecursiveSink<Sequence, Observer>,\n    ObserverType where Sequence.Element: ObservableConvertibleType, Sequence.Element.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n    typealias Parent = CatchSequence<Sequence>\n\n    private var lastError: Swift.Error?\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case let .error(error):\n            lastError = error\n            schedule(.moveNext)\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n\n    override func subscribeToNext(_ source: Observable<Element>) -> Disposable {\n        source.subscribe(self)\n    }\n\n    override func done() {\n        if let lastError {\n            forwardOn(.error(lastError))\n        } else {\n            forwardOn(.completed)\n        }\n\n        dispose()\n    }\n\n    override func extract(_ observable: Observable<Element>) -> SequenceGenerator? {\n        if let onError = observable as? CatchSequence<Sequence> {\n            (onError.sources.makeIterator(), nil)\n        } else {\n            nil\n        }\n    }\n}\n\nprivate final class CatchSequence<Sequence: Swift.Sequence>: Producer<Sequence.Element.Element> where Sequence.Element: ObservableConvertibleType {\n    typealias Element = Sequence.Element.Element\n\n    let sources: Sequence\n\n    init(sources: Sequence) {\n        self.sources = sources\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = CatchSequenceSink<Sequence, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run((sources.makeIterator(), nil))\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/CombineLatest+Collection.swift",
    "content": "//\n//  CombineLatest+Collection.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/29/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<Collection: Swift.Collection>(_ collection: Collection, resultSelector: @escaping ([Collection.Element.Element]) throws -> Element) -> Observable<Element>\n        where Collection.Element: ObservableType\n    {\n        CombineLatestCollectionType(sources: collection, resultSelector: resultSelector)\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.\n\n     - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<Collection: Swift.Collection>(_ collection: Collection) -> Observable<[Element]>\n        where Collection.Element: ObservableType, Collection.Element.Element == Element\n    {\n        CombineLatestCollectionType(sources: collection, resultSelector: { $0 })\n    }\n}\n\nfinal class CombineLatestCollectionTypeSink<Collection: Swift.Collection, Observer: ObserverType>:\n    Sink<Observer> where Collection.Element: ObservableConvertibleType\n{\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatestCollectionType<Collection, Result>\n    typealias SourceElement = Collection.Element.Element\n\n    let parent: Parent\n\n    let lock = RecursiveLock()\n\n    // state\n    var numberOfValues = 0\n    var values: [SourceElement?]\n    var isDone: [Bool]\n    var numberOfDone = 0\n    var subscriptions: [SingleAssignmentDisposable]\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        values = [SourceElement?](repeating: nil, count: parent.count)\n        isDone = [Bool](repeating: false, count: parent.count)\n        subscriptions = [SingleAssignmentDisposable]()\n        subscriptions.reserveCapacity(parent.count)\n\n        for _ in 0 ..< parent.count {\n            subscriptions.append(SingleAssignmentDisposable())\n        }\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceElement>, atIndex: Int) {\n        lock.lock(); defer { self.lock.unlock() }\n        switch event {\n        case let .next(element):\n            if values[atIndex] == nil {\n                numberOfValues += 1\n            }\n\n            values[atIndex] = element\n\n            if numberOfValues < parent.count {\n                let numberOfOthersThatAreDone = numberOfDone - (isDone[atIndex] ? 1 : 0)\n                if numberOfOthersThatAreDone == parent.count - 1 {\n                    forwardOn(.completed)\n                    dispose()\n                }\n                return\n            }\n\n            do {\n                let result = try parent.resultSelector(values.map { $0! })\n                forwardOn(.next(result))\n            } catch {\n                forwardOn(.error(error))\n                dispose()\n            }\n\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n\n        case .completed:\n            if isDone[atIndex] {\n                return\n            }\n\n            isDone[atIndex] = true\n            numberOfDone += 1\n\n            if numberOfDone == parent.count {\n                forwardOn(.completed)\n                dispose()\n            } else {\n                subscriptions[atIndex].dispose()\n            }\n        }\n    }\n\n    func run() -> Disposable {\n        var j = 0\n        for i in parent.sources {\n            let index = j\n            let source = i.asObservable()\n            let disposable = source.subscribe(AnyObserver { event in\n                self.on(event, atIndex: index)\n            })\n\n            subscriptions[j].setDisposable(disposable)\n\n            j += 1\n        }\n\n        if parent.sources.isEmpty {\n            do {\n                let result = try parent.resultSelector([])\n                forwardOn(.next(result))\n                forwardOn(.completed)\n                dispose()\n            } catch {\n                forwardOn(.error(error))\n                dispose()\n            }\n        }\n\n        return Disposables.create(subscriptions)\n    }\n}\n\nfinal class CombineLatestCollectionType<Collection: Swift.Collection, Result>: Producer<Result> where Collection.Element: ObservableConvertibleType {\n    typealias ResultSelector = ([Collection.Element.Element]) throws -> Result\n\n    let sources: Collection\n    let resultSelector: ResultSelector\n    let count: Int\n\n    init(sources: Collection, resultSelector: @escaping ResultSelector) {\n        self.sources = sources\n        self.resultSelector = resultSelector\n        count = self.sources.count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestCollectionTypeSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/CombineLatest+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  CombineLatest+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// 2\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType>\n    (_ source1: O1, _ source2: O2, resultSelector: @escaping (O1.Element, O2.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest2(\n            source1: source1.asObservable(), source2: source2.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType>\n    (_ source1: O1, _ source2: O2)\n        -> Observable<(O1.Element, O2.Element)>\n    {\n        CombineLatest2(\n            source1: source1.asObservable(), source2: source2.asObservable(),\n            resultSelector: { ($0, $1) }\n        )\n    }\n}\n\nfinal class CombineLatestSink2_<E1, E2, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest2<E1, E2, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 2, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n\n        return Disposables.create([\n            subscription1,\n            subscription2\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2)\n    }\n}\n\nfinal class CombineLatest2<E1, E2, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink2_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 3\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.Element, O2.Element, O3.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest3(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3)\n        -> Observable<(O1.Element, O2.Element, O3.Element)>\n    {\n        CombineLatest3(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(),\n            resultSelector: { ($0, $1, $2) }\n        )\n    }\n}\n\nfinal class CombineLatestSink3_<E1, E2, E3, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest3<E1, E2, E3, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 3, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3)\n    }\n}\n\nfinal class CombineLatest3<E1, E2, E3, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink3_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 4\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest4(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element)>\n    {\n        CombineLatest4(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(),\n            resultSelector: { ($0, $1, $2, $3) }\n        )\n    }\n}\n\nfinal class CombineLatestSink4_<E1, E2, E3, E4, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest4<E1, E2, E3, E4, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n    var latestElement4: E4!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 4, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n        let observer4 = CombineLatestObserver(lock: lock, parent: self, index: 3, setLatestValue: { (e: E4) in self.latestElement4 = e }, this: subscription4)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3, latestElement4)\n    }\n}\n\nfinal class CombineLatest4<E1, E2, E3, E4, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink4_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 5\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest5(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)>\n    {\n        CombineLatest5(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4) }\n        )\n    }\n}\n\nfinal class CombineLatestSink5_<E1, E2, E3, E4, E5, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest5<E1, E2, E3, E4, E5, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n    var latestElement4: E4!\n    var latestElement5: E5!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 5, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n        let observer4 = CombineLatestObserver(lock: lock, parent: self, index: 3, setLatestValue: { (e: E4) in self.latestElement4 = e }, this: subscription4)\n        let observer5 = CombineLatestObserver(lock: lock, parent: self, index: 4, setLatestValue: { (e: E5) in self.latestElement5 = e }, this: subscription5)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3, latestElement4, latestElement5)\n    }\n}\n\nfinal class CombineLatest5<E1, E2, E3, E4, E5, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink5_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 6\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest6(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)>\n    {\n        CombineLatest6(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5) }\n        )\n    }\n}\n\nfinal class CombineLatestSink6_<E1, E2, E3, E4, E5, E6, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest6<E1, E2, E3, E4, E5, E6, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n    var latestElement4: E4!\n    var latestElement5: E5!\n    var latestElement6: E6!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 6, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n        let observer4 = CombineLatestObserver(lock: lock, parent: self, index: 3, setLatestValue: { (e: E4) in self.latestElement4 = e }, this: subscription4)\n        let observer5 = CombineLatestObserver(lock: lock, parent: self, index: 4, setLatestValue: { (e: E5) in self.latestElement5 = e }, this: subscription5)\n        let observer6 = CombineLatestObserver(lock: lock, parent: self, index: 5, setLatestValue: { (e: E6) in self.latestElement6 = e }, this: subscription6)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3, latestElement4, latestElement5, latestElement6)\n    }\n}\n\nfinal class CombineLatest6<E1, E2, E3, E4, E5, E6, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink6_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 7\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest7(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)>\n    {\n        CombineLatest7(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6) }\n        )\n    }\n}\n\nfinal class CombineLatestSink7_<E1, E2, E3, E4, E5, E6, E7, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest7<E1, E2, E3, E4, E5, E6, E7, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n    var latestElement4: E4!\n    var latestElement5: E5!\n    var latestElement6: E6!\n    var latestElement7: E7!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 7, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n        let subscription7 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n        let observer4 = CombineLatestObserver(lock: lock, parent: self, index: 3, setLatestValue: { (e: E4) in self.latestElement4 = e }, this: subscription4)\n        let observer5 = CombineLatestObserver(lock: lock, parent: self, index: 4, setLatestValue: { (e: E5) in self.latestElement5 = e }, this: subscription5)\n        let observer6 = CombineLatestObserver(lock: lock, parent: self, index: 5, setLatestValue: { (e: E6) in self.latestElement6 = e }, this: subscription6)\n        let observer7 = CombineLatestObserver(lock: lock, parent: self, index: 6, setLatestValue: { (e: E7) in self.latestElement7 = e }, this: subscription7)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n        subscription7.setDisposable(parent.source7.subscribe(observer7))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6,\n            subscription7\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3, latestElement4, latestElement5, latestElement6, latestElement7)\n    }\n}\n\nfinal class CombineLatest7<E1, E2, E3, E4, E5, E6, E7, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6, E7) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n    let source7: Observable<E7>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, source7: Observable<E7>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n        self.source7 = source7\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink7_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 8\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType, O8: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        CombineLatest8(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType, O8: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)>\n    {\n        CombineLatest8(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6, $7) }\n        )\n    }\n}\n\nfinal class CombineLatestSink8_<E1, E2, E3, E4, E5, E6, E7, E8, Observer: ObserverType>: CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest8<E1, E2, E3, E4, E5, E6, E7, E8, Result>\n\n    let parent: Parent\n\n    var latestElement1: E1!\n    var latestElement2: E2!\n    var latestElement3: E3!\n    var latestElement4: E4!\n    var latestElement5: E5!\n    var latestElement6: E6!\n    var latestElement7: E7!\n    var latestElement8: E8!\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 8, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n        let subscription7 = SingleAssignmentDisposable()\n        let subscription8 = SingleAssignmentDisposable()\n\n        let observer1 = CombineLatestObserver(lock: lock, parent: self, index: 0, setLatestValue: { (e: E1) in self.latestElement1 = e }, this: subscription1)\n        let observer2 = CombineLatestObserver(lock: lock, parent: self, index: 1, setLatestValue: { (e: E2) in self.latestElement2 = e }, this: subscription2)\n        let observer3 = CombineLatestObserver(lock: lock, parent: self, index: 2, setLatestValue: { (e: E3) in self.latestElement3 = e }, this: subscription3)\n        let observer4 = CombineLatestObserver(lock: lock, parent: self, index: 3, setLatestValue: { (e: E4) in self.latestElement4 = e }, this: subscription4)\n        let observer5 = CombineLatestObserver(lock: lock, parent: self, index: 4, setLatestValue: { (e: E5) in self.latestElement5 = e }, this: subscription5)\n        let observer6 = CombineLatestObserver(lock: lock, parent: self, index: 5, setLatestValue: { (e: E6) in self.latestElement6 = e }, this: subscription6)\n        let observer7 = CombineLatestObserver(lock: lock, parent: self, index: 6, setLatestValue: { (e: E7) in self.latestElement7 = e }, this: subscription7)\n        let observer8 = CombineLatestObserver(lock: lock, parent: self, index: 7, setLatestValue: { (e: E8) in self.latestElement8 = e }, this: subscription8)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n        subscription7.setDisposable(parent.source7.subscribe(observer7))\n        subscription8.setDisposable(parent.source8.subscribe(observer8))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6,\n            subscription7,\n            subscription8\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(latestElement1, latestElement2, latestElement3, latestElement4, latestElement5, latestElement6, latestElement7, latestElement8)\n    }\n}\n\nfinal class CombineLatest8<E1, E2, E3, E4, E5, E6, E7, E8, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6, E7, E8) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n    let source7: Observable<E7>\n    let source8: Observable<E8>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, source7: Observable<E7>, source8: Observable<E8>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n        self.source7 = source7\n        self.source8 = source8\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink8_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/CombineLatest+arity.tt",
    "content": "//\n//  CombineLatest+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n<% for i in 2 ... 8 { %>\n\n// <%= i %>\n\nextension ObservableType {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n    - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n    - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func combineLatest<<%= (Array(1...i).map { \"O\\($0): ObservableType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>) throws -> Element)\n            -> Observable<Element> {\n        return CombineLatest<%= i %>(\n            <%= (Array(1...i).map { \"source\\($0): source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: resultSelector\n        )\n    }\n}\n\nextension ObservableType where Element == Any {\n    /**\n    Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n    - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n    - returns: An observable sequence containing the result of combining elements of the sources.\n    */\n    public static func combineLatest<<%= (Array(1...i).map { \"O\\($0): ObservableType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>)\n            -> Observable<(<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)> {\n        return CombineLatest<%= i %>(\n            <%= (Array(1...i).map { \"source\\($0): source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: { (<%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \", \") %>) }\n        )\n    }\n}\n\nfinal class CombineLatestSink<%= i %>_<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Observer: ObserverType> : CombineLatestSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = CombineLatest<%= i %><<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Result>\n\n    let parent: Parent\n\n<%= (Array(1...i).map {\n\"    var latestElement\\($0): E\\($0)! = nil\"\n}).joined(separator: \"\\n\") %>\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: <%= i %>, observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n<%= (Array(1...i).map {\n\"        let subscription\\($0) = SingleAssignmentDisposable()\"\n}).joined(separator: \"\\n\") %>\n\n<%= (Array(1...i).map {\n\"        let observer\\($0) = CombineLatestObserver(lock: self.lock, parent: self, index: \\($0 - 1), setLatestValue: { (e: E\\($0)) -> Void in self.latestElement\\($0) = e }, this: subscription\\($0))\"\n}).joined(separator: \"\\n\") %>\n\n<%= (Array(1...i).map {\n\"         subscription\\($0).setDisposable(self.parent.source\\($0).subscribe(observer\\($0)))\"\n}).joined(separator: \"\\n\") %>\n\n        return Disposables.create([\n<%= (Array(1...i).map { \"                subscription\\($0)\" }).joined(separator: \",\\n\") %>\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try self.parent.resultSelector(<%= (Array(1...i).map { \"self.latestElement\\($0)\" }).joined(separator: \", \") %>)\n    }\n}\n\nfinal class CombineLatest<%= i %><<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Result> : Producer<Result> {\n    typealias ResultSelector = (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>) throws -> Result\n\n<%= (Array(1...i).map {\n\"    let source\\($0): Observable<E\\($0)>\"\n}).joined(separator: \"\\n\") %>\n\n    let resultSelector: ResultSelector\n\n    init(<%= (Array(1...i).map { \"source\\($0): Observable<E\\($0)>\" }).joined(separator: \", \") %>, resultSelector: @escaping ResultSelector) {\n<%= (Array(1...i).map {\n\"        self.source\\($0) = source\\($0)\"\n}).joined(separator: \"\\n\")  %>\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = CombineLatestSink<%= i %>_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n<% } %>\n"
  },
  {
    "path": "RxSwift/Observables/CombineLatest.swift",
    "content": "//\n//  CombineLatest.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol CombineLatestProtocol: AnyObject {\n    func next(_ index: Int)\n    func fail(_ error: Swift.Error)\n    func done(_ index: Int)\n}\n\nclass CombineLatestSink<Observer: ObserverType>:\n    Sink<Observer>,\n    CombineLatestProtocol\n{\n    typealias Element = Observer.Element\n\n    let lock = RecursiveLock()\n\n    private let arity: Int\n    private var numberOfValues = 0\n    private var numberOfDone = 0\n    private var hasValue: [Bool]\n    private var isDone: [Bool]\n\n    init(arity: Int, observer: Observer, cancel: Cancelable) {\n        self.arity = arity\n        hasValue = [Bool](repeating: false, count: arity)\n        isDone = [Bool](repeating: false, count: arity)\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func getResult() throws -> Element {\n        rxAbstractMethod()\n    }\n\n    func next(_ index: Int) {\n        if !hasValue[index] {\n            hasValue[index] = true\n            numberOfValues += 1\n        }\n\n        if numberOfValues == arity {\n            do {\n                let result = try getResult()\n                forwardOn(.next(result))\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        } else {\n            var allOthersDone = true\n\n            for i in 0 ..< arity {\n                if i != index, !isDone[i] {\n                    allOthersDone = false\n                    break\n                }\n            }\n\n            if allOthersDone {\n                forwardOn(.completed)\n                dispose()\n            }\n        }\n    }\n\n    func fail(_ error: Swift.Error) {\n        forwardOn(.error(error))\n        dispose()\n    }\n\n    func done(_ index: Int) {\n        if isDone[index] {\n            return\n        }\n\n        isDone[index] = true\n        numberOfDone += 1\n\n        if numberOfDone == arity {\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nfinal class CombineLatestObserver<Element>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias ValueSetter = (Element) -> Void\n\n    private let parent: CombineLatestProtocol\n\n    let lock: RecursiveLock\n    private let index: Int\n    private let this: Disposable\n    private let setLatestValue: ValueSetter\n\n    init(lock: RecursiveLock, parent: CombineLatestProtocol, index: Int, setLatestValue: @escaping ValueSetter, this: Disposable) {\n        self.lock = lock\n        self.parent = parent\n        self.index = index\n        self.this = this\n        self.setLatestValue = setLatestValue\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            setLatestValue(value)\n            parent.next(index)\n        case let .error(error):\n            this.dispose()\n            parent.fail(error)\n        case .completed:\n            this.dispose()\n            parent.done(index)\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/CompactMap.swift",
    "content": "//\n//  CompactMap.swift\n//  RxSwift\n//\n//  Created by Michael Long on 04/09/2019.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence into an optional form and filters all optional results.\n\n     - parameter transform: A transform function to apply to each source element and which returns an element or nil.\n     - returns: An observable sequence whose elements are the result of filtering the transform function for each element of the source.\n\n     */\n    func compactMap<Result>(_ transform: @escaping (Element) throws -> Result?)\n        -> Observable<Result>\n    {\n        CompactMap(source: asObservable(), transform: transform)\n    }\n}\n\nprivate final class CompactMapSink<SourceType, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Transform = (SourceType) throws -> ResultType?\n\n    typealias ResultType = Observer.Element\n    typealias Element = SourceType\n\n    private let transform: Transform\n\n    init(transform: @escaping Transform, observer: Observer, cancel: Cancelable) {\n        self.transform = transform\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case let .next(element):\n            do {\n                if let mappedElement = try transform(element) {\n                    forwardOn(.next(mappedElement))\n                }\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class CompactMap<SourceType, ResultType>: Producer<ResultType> {\n    typealias Transform = (SourceType) throws -> ResultType?\n\n    private let source: Observable<SourceType>\n\n    private let transform: Transform\n\n    init(source: Observable<SourceType>, transform: @escaping Transform) {\n        self.source = source\n        self.transform = transform\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == ResultType {\n        let sink = CompactMapSink(transform: transform, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Concat.swift",
    "content": "//\n//  Concat.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func concat<Source: ObservableConvertibleType>(_ second: Source) -> Observable<Element> where Source.Element == Element {\n        Observable.concat([asObservable(), second.asObservable()])\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Sequence: Swift.Sequence>(_ sequence: Sequence) -> Observable<Element>\n        where Sequence.Element == Observable<Element>\n    {\n        Concat(sources: sequence, count: nil)\n    }\n\n    /**\n     Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Collection: Swift.Collection>(_ collection: Collection) -> Observable<Element>\n        where Collection.Element == Observable<Element>\n    {\n        Concat(sources: collection, count: Int64(collection.count))\n    }\n\n    /**\n     Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat(_ sources: Observable<Element> ...) -> Observable<Element> {\n        Concat(sources: sources, count: Int64(sources.count))\n    }\n}\n\nprivate final class ConcatSink<Sequence: Swift.Sequence, Observer: ObserverType>:\n    TailRecursiveSink<Sequence, Observer>,\n    ObserverType where Sequence.Element: ObservableConvertibleType, Sequence.Element.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            schedule(.moveNext)\n        }\n    }\n\n    override func subscribeToNext(_ source: Observable<Element>) -> Disposable {\n        source.subscribe(self)\n    }\n\n    override func extract(_ observable: Observable<Element>) -> SequenceGenerator? {\n        if let source = observable as? Concat<Sequence> {\n            (source.sources.makeIterator(), source.count)\n        } else {\n            nil\n        }\n    }\n}\n\nprivate final class Concat<Sequence: Swift.Sequence>: Producer<Sequence.Element.Element> where Sequence.Element: ObservableConvertibleType {\n    typealias Element = Sequence.Element.Element\n\n    fileprivate let sources: Sequence\n    fileprivate let count: IntMax?\n\n    init(sources: Sequence, count: IntMax?) {\n        self.sources = sources\n        self.count = count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ConcatSink<Sequence, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run((sources.makeIterator(), count))\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Create.swift",
    "content": "//\n//  Create.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    // MARK: create\n\n    /**\n     Creates an observable sequence from a specified subscribe method implementation.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method.\n     - returns: The observable sequence with the specified implementation for the `subscribe` method.\n     */\n    static func create(_ subscribe: @escaping (AnyObserver<Element>) -> Disposable) -> Observable<Element> {\n        AnonymousObservable(subscribe)\n    }\n}\n\nprivate final class AnonymousObservableSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = AnonymousObservable<Element>\n\n    // state\n    private let isStopped = AtomicInt(0)\n\n    #if DEBUG\n    private let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        switch event {\n        case .next:\n            if load(isStopped) == 1 {\n                return\n            }\n            forwardOn(event)\n        case .error, .completed:\n            if fetchOr(isStopped, 1) == 0 {\n                forwardOn(event)\n                dispose()\n            }\n        }\n    }\n\n    func run(_ parent: Parent) -> Disposable {\n        parent.subscribeHandler(AnyObserver(self))\n    }\n}\n\nprivate final class AnonymousObservable<Element>: Producer<Element> {\n    typealias SubscribeHandler = (AnyObserver<Element>) -> Disposable\n\n    let subscribeHandler: SubscribeHandler\n\n    init(_ subscribeHandler: @escaping SubscribeHandler) {\n        self.subscribeHandler = subscribeHandler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = AnonymousObservableSink(observer: observer, cancel: cancel)\n        let subscription = sink.run(self)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Debounce.swift",
    "content": "//\n//  Debounce.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/11/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.\n\n     - seealso: [debounce operator on reactivex.io](http://reactivex.io/documentation/operators/debounce.html)\n\n     - parameter dueTime: Throttling duration for each element.\n     - parameter scheduler: Scheduler to run the throttle timers on.\n     - returns: The throttled sequence.\n     */\n    func debounce(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Debounce(source: asObservable(), dueTime: dueTime, scheduler: scheduler)\n    }\n}\n\nprivate final class DebounceSink<Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Element = Observer.Element\n    typealias ParentType = Debounce<Element>\n\n    private let parent: ParentType\n\n    let lock = RecursiveLock()\n\n    // state\n    private var id = 0 as UInt64\n    private var value: Element?\n\n    let cancellable = SerialDisposable()\n\n    init(parent: ParentType, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription = parent.source.subscribe(self)\n\n        return Disposables.create(subscription, cancellable)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            id = id &+ 1\n            let currentId = id\n            value = element\n\n            let scheduler = parent.scheduler\n            let dueTime = parent.dueTime\n\n            let d = SingleAssignmentDisposable()\n            cancellable.disposable = d\n            d.setDisposable(scheduler.scheduleRelative(currentId, dueTime: dueTime, action: propagate))\n        case .error:\n            value = nil\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if let value {\n                self.value = nil\n                forwardOn(.next(value))\n            }\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n\n    func propagate(_ currentId: UInt64) -> Disposable {\n        lock.performLocked {\n            let originalValue = self.value\n\n            if let value = originalValue, self.id == currentId {\n                self.value = nil\n                self.forwardOn(.next(value))\n            }\n\n            return Disposables.create()\n        }\n    }\n}\n\nprivate final class Debounce<Element>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let dueTime: RxTimeInterval\n    fileprivate let scheduler: SchedulerType\n\n    init(source: Observable<Element>, dueTime: RxTimeInterval, scheduler: SchedulerType) {\n        self.source = source\n        self.dueTime = dueTime\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = DebounceSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Debug.swift",
    "content": "//\n//  Debug.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Prints received events for all observers on standard output.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter identifier: Identifier that is printed together with event description to standard output.\n     - parameter trimOutput: Should output be trimmed to max 40 characters.\n     - returns: An observable sequence whose events are printed to standard output.\n     */\n    func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function)\n        -> Observable<Element>\n    {\n        Debug(source: self, identifier: identifier, trimOutput: trimOutput, file: file, line: line, function: function)\n    }\n}\n\nprivate let dateFormat = \"yyyy-MM-dd HH:mm:ss.SSS\"\n\nprivate func logEvent(_ identifier: String, dateFormat: DateFormatter, content: String) {\n    print(\"\\(dateFormat.string(from: Date())): \\(identifier) -> \\(content)\")\n}\n\nprivate final class DebugSink<Source: ObservableType, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == Source.Element {\n    typealias Element = Observer.Element\n    typealias Parent = Debug<Source>\n\n    private let parent: Parent\n    private let timestampFormatter = DateFormatter()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        timestampFormatter.dateFormat = dateFormat\n\n        logEvent(self.parent.identifier, dateFormat: timestampFormatter, content: \"subscribed\")\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        let maxEventTextLength = 40\n        let eventText = \"\\(event)\"\n\n        let eventNormalized = (eventText.count > maxEventTextLength) && parent.trimOutput\n            ? String(eventText.prefix(maxEventTextLength / 2)) + \"...\" + String(eventText.suffix(maxEventTextLength / 2))\n            : eventText\n\n        logEvent(parent.identifier, dateFormat: timestampFormatter, content: \"Event \\(eventNormalized)\")\n\n        forwardOn(event)\n        if event.isStopEvent {\n            dispose()\n        }\n    }\n\n    override func dispose() {\n        if !isDisposed {\n            logEvent(parent.identifier, dateFormat: timestampFormatter, content: \"isDisposed\")\n        }\n        super.dispose()\n    }\n}\n\nprivate final class Debug<Source: ObservableType>: Producer<Source.Element> {\n    fileprivate let identifier: String\n    fileprivate let trimOutput: Bool\n    private let source: Source\n\n    init(source: Source, identifier: String?, trimOutput: Bool, file: String, line: UInt, function: String) {\n        self.trimOutput = trimOutput\n        if let identifier {\n            self.identifier = identifier\n        } else {\n            let trimmedFile: String = if let lastIndex = file.lastIndex(of: \"/\") {\n                String(file[file.index(after: lastIndex) ..< file.endIndex])\n            } else {\n                file\n            }\n            self.identifier = \"\\(trimmedFile):\\(line) (\\(function))\"\n        }\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Source.Element {\n        let sink = DebugSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Decode.swift",
    "content": "//\n//  Decode.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 24/07/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType where Element == Data {\n    /// Attempt to decode the emitted `Data` using a provided decoder.\n    ///\n    /// - parameter type: A `Decodable`-conforming type to attempt to decode to\n    /// - parameter decoder: A capable decoder, e.g. `JSONDecoder` or `PropertyListDecoder`\n    ///\n    /// - note: If using a custom decoder, it must conform to the `DataDecoder` protocol.\n    ///\n    /// - returns: An `Observable` of the decoded type\n    func decode<Item: Decodable>(\n        type: Item.Type,\n        decoder: some DataDecoder\n    ) -> Observable<Item> {\n        map { try decoder.decode(type, from: $0) }\n    }\n}\n\n/// Represents an entity capable of decoding raw `Data`\n/// into a concrete `Decodable` type\npublic protocol DataDecoder {\n    func decode<Item: Decodable>(_ type: Item.Type, from data: Data) throws -> Item\n}\n\nextension JSONDecoder: DataDecoder {}\nextension PropertyListDecoder: DataDecoder {}\n"
  },
  {
    "path": "RxSwift/Observables/DefaultIfEmpty.swift",
    "content": "//\n//  DefaultIfEmpty.swift\n//  RxSwift\n//\n//  Created by sergdort on 23/12/2016.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.\n\n     - seealso: [DefaultIfEmpty operator on reactivex.io](http://reactivex.io/documentation/operators/defaultifempty.html)\n\n     - parameter default: Default element to be sent if the source does not emit any elements\n     - returns: An observable sequence which emits default element end completes in case the original sequence is empty\n     */\n    func ifEmpty(default: Element) -> Observable<Element> {\n        DefaultIfEmpty(source: asObservable(), default: `default`)\n    }\n}\n\nprivate final class DefaultIfEmptySink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    private let `default`: Element\n    private var isEmpty = true\n\n    init(default: Element, observer: Observer, cancel: Cancelable) {\n        self.default = `default`\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            isEmpty = false\n            forwardOn(event)\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if isEmpty {\n                forwardOn(.next(self.default))\n            }\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class DefaultIfEmpty<SourceType>: Producer<SourceType> {\n    private let source: Observable<SourceType>\n    private let `default`: SourceType\n\n    init(source: Observable<SourceType>, default: SourceType) {\n        self.source = source\n        self.default = `default`\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceType {\n        let sink = DefaultIfEmptySink(default: self.default, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Deferred.swift",
    "content": "//\n//  Deferred.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.\n\n     - seealso: [defer operator on reactivex.io](http://reactivex.io/documentation/operators/defer.html)\n\n     - parameter observableFactory: Observable factory function to invoke for each observer that subscribes to the resulting sequence.\n     - returns: An observable sequence whose observers trigger an invocation of the given observable factory function.\n     */\n    static func deferred(_ observableFactory: @escaping () throws -> Observable<Element>)\n        -> Observable<Element>\n    {\n        Deferred(observableFactory: observableFactory)\n    }\n}\n\nprivate final class DeferredSink<Source: ObservableType, Observer: ObserverType>: Sink<Observer>, ObserverType where Source.Element == Observer.Element {\n    typealias Element = Observer.Element\n    typealias Parent = Deferred<Source>\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run(_ parent: Parent) -> Disposable {\n        do {\n            let result = try parent.observableFactory()\n            return result.subscribe(self)\n        } catch let e {\n            self.forwardOn(.error(e))\n            self.dispose()\n            return Disposables.create()\n        }\n    }\n\n    func on(_ event: Event<Element>) {\n        forwardOn(event)\n\n        switch event {\n        case .next:\n            break\n        case .error:\n            dispose()\n        case .completed:\n            dispose()\n        }\n    }\n}\n\nprivate final class Deferred<Source: ObservableType>: Producer<Source.Element> {\n    typealias Factory = () throws -> Source\n\n    let observableFactory: Factory\n\n    init(observableFactory: @escaping Factory) {\n        self.observableFactory = observableFactory\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable)\n        where Observer.Element == Source.Element\n    {\n        let sink = DeferredSink<Source, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run(self)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Delay.swift",
    "content": "//\n//  Delay.swift\n//  RxSwift\n//\n//  Created by tarunon on 2016/02/09.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.\n\n     - seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)\n\n     - parameter dueTime: Relative time shift of the source by.\n     - parameter scheduler: Scheduler to run the subscription delay timer on.\n     - returns: the source Observable shifted in time by the specified delay.\n     */\n    func delay(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Delay(source: asObservable(), dueTime: dueTime, scheduler: scheduler)\n    }\n}\n\nprivate final class DelaySink<Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType\n{\n    typealias Element = Observer.Element\n    typealias Source = Observable<Element>\n    typealias DisposeKey = Bag<Disposable>.KeyType\n\n    private let lock = RecursiveLock()\n\n    private let dueTime: RxTimeInterval\n    private let scheduler: SchedulerType\n\n    private let sourceSubscription = SingleAssignmentDisposable()\n    private let cancelable = SerialDisposable()\n\n    // is scheduled some action\n    private var active = false\n    // is \"run loop\" on different scheduler running\n    private var running = false\n    private var errorEvent: Event<Element>?\n\n    // state\n    private var queue = Queue<(eventTime: RxTime, event: Event<Element>)>(capacity: 0)\n\n    init(observer: Observer, dueTime: RxTimeInterval, scheduler: SchedulerType, cancel: Cancelable) {\n        self.dueTime = dueTime\n        self.scheduler = scheduler\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    // All of these complications in this method are caused by the fact that\n    // error should be propagated immediately. Error can be potentially received on different\n    // scheduler so this process needs to be synchronized somehow.\n    //\n    // Another complication is that scheduler is potentially concurrent so internal queue is used.\n    func drainQueue(state _: (), scheduler: AnyRecursiveScheduler<Void>) {\n        lock.lock()\n        let hasFailed = errorEvent != nil\n        if !hasFailed {\n            running = true\n        }\n        lock.unlock()\n\n        if hasFailed {\n            return\n        }\n\n        var ranAtLeastOnce = false\n\n        while true {\n            lock.lock()\n            let errorEvent = errorEvent\n\n            let eventToForwardImmediately = ranAtLeastOnce ? nil : queue.dequeue()?.event\n            let nextEventToScheduleOriginalTime: Date? = ranAtLeastOnce && !queue.isEmpty ? queue.peek().eventTime : nil\n\n            if errorEvent == nil {\n                if eventToForwardImmediately != nil {}\n                else if nextEventToScheduleOriginalTime != nil {\n                    running = false\n                } else {\n                    running = false\n                    active = false\n                }\n            }\n            lock.unlock()\n\n            if let errorEvent {\n                forwardOn(errorEvent)\n                dispose()\n                return\n            } else {\n                if let eventToForwardImmediately {\n                    ranAtLeastOnce = true\n                    forwardOn(eventToForwardImmediately)\n                    if case .completed = eventToForwardImmediately {\n                        dispose()\n                        return\n                    }\n                } else if let nextEventToScheduleOriginalTime {\n                    scheduler.schedule((), dueTime: dueTime.reduceWithSpanBetween(earlierDate: nextEventToScheduleOriginalTime, laterDate: self.scheduler.now))\n                    return\n                } else {\n                    return\n                }\n            }\n        }\n    }\n\n    func on(_ event: Event<Element>) {\n        if event.isStopEvent {\n            sourceSubscription.dispose()\n        }\n\n        switch event {\n        case .error:\n            lock.lock()\n            let shouldSendImmediately = !running\n            queue = Queue(capacity: 0)\n            errorEvent = event\n            lock.unlock()\n\n            if shouldSendImmediately {\n                forwardOn(event)\n                dispose()\n            }\n        default:\n            lock.lock()\n            let shouldSchedule = !active\n            active = true\n            queue.enqueue((scheduler.now, event))\n            lock.unlock()\n\n            if shouldSchedule {\n                cancelable.disposable = scheduler.scheduleRecursive((), dueTime: dueTime, action: drainQueue)\n            }\n        }\n    }\n\n    func run(source: Observable<Element>) -> Disposable {\n        sourceSubscription.setDisposable(source.subscribe(self))\n        return Disposables.create(sourceSubscription, cancelable)\n    }\n}\n\nprivate final class Delay<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    private let dueTime: RxTimeInterval\n    private let scheduler: SchedulerType\n\n    init(source: Observable<Element>, dueTime: RxTimeInterval, scheduler: SchedulerType) {\n        self.source = source\n        self.dueTime = dueTime\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = DelaySink(observer: observer, dueTime: dueTime, scheduler: scheduler, cancel: cancel)\n        let subscription = sink.run(source: source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/DelaySubscription.swift",
    "content": "//\n//  DelaySubscription.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.\n\n     - seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)\n\n     - parameter dueTime: Relative time shift of the subscription.\n     - parameter scheduler: Scheduler to run the subscription delay timer on.\n     - returns: Time-shifted sequence.\n     */\n    func delaySubscription(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        DelaySubscription(source: asObservable(), dueTime: dueTime, scheduler: scheduler)\n    }\n}\n\nprivate final class DelaySubscriptionSink<Observer: ObserverType>:\n    Sink<Observer>, ObserverType\n{\n    typealias Element = Observer.Element\n\n    func on(_ event: Event<Element>) {\n        forwardOn(event)\n        if event.isStopEvent {\n            dispose()\n        }\n    }\n}\n\nprivate final class DelaySubscription<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    private let dueTime: RxTimeInterval\n    private let scheduler: SchedulerType\n\n    init(source: Observable<Element>, dueTime: RxTimeInterval, scheduler: SchedulerType) {\n        self.source = source\n        self.dueTime = dueTime\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = DelaySubscriptionSink(observer: observer, cancel: cancel)\n        let subscription = scheduler.scheduleRelative((), dueTime: dueTime) { _ in\n            self.source.subscribe(sink)\n        }\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Dematerialize.swift",
    "content": "//\n//  Dematerialize.swift\n//  RxSwift\n//\n//  Created by Jamie Pinkham on 3/13/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType where Element: EventConvertible {\n    /**\n     Convert any previously materialized Observable into it's original form.\n     - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html)\n     - returns: The dematerialized observable sequence.\n     */\n    func dematerialize() -> Observable<Element.Element> {\n        Dematerialize(source: asObservable())\n    }\n}\n\nprivate final class DematerializeSink<T: EventConvertible, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == T.Element {\n    fileprivate func on(_ event: Event<T>) {\n        switch event {\n        case let .next(element):\n            forwardOn(element.event)\n            if element.event.isStopEvent {\n                dispose()\n            }\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        }\n    }\n}\n\nprivate final class Dematerialize<T: EventConvertible>: Producer<T.Element> {\n    private let source: Observable<T>\n\n    init(source: Observable<T>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == T.Element {\n        let sink = DematerializeSink<T, Observer>(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/DistinctUntilChanged.swift",
    "content": "//\n//  DistinctUntilChanged.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType where Element: Equatable {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to equality operator.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - returns: An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.\n     */\n    func distinctUntilChanged()\n        -> Observable<Element>\n    {\n        distinctUntilChanged {\n            $0\n        } comparer: {\n            $0 == $1\n        }\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `keySelector`.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.\n     */\n    func distinctUntilChanged(_ keySelector: @escaping (Element) throws -> some Equatable)\n        -> Observable<Element>\n    {\n        distinctUntilChanged(keySelector, comparer: { $0 == $1 })\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `comparer`.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on `comparer`, from the source sequence.\n     */\n    func distinctUntilChanged(_ comparer: @escaping (Element, Element) throws -> Bool)\n        -> Observable<Element>\n    {\n        distinctUntilChanged({ $0 }, comparer: comparer)\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.\n     */\n    func distinctUntilChanged<K>(_ keySelector: @escaping (Element) throws -> K, comparer: @escaping (K, K) throws -> Bool)\n        -> Observable<Element>\n    {\n        DistinctUntilChanged(source: asObservable(), selector: keySelector, comparer: comparer)\n    }\n\n    /**\n     Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - returns: An observable sequence only containing the distinct contiguous elements, based on equality operator on the provided key path\n     */\n    func distinctUntilChanged(at keyPath: KeyPath<Element, some Equatable>) ->\n        Observable<Element>\n    {\n        distinctUntilChanged { $0[keyPath: keyPath] == $1[keyPath: keyPath] }\n    }\n}\n\nprivate final class DistinctUntilChangedSink<Observer: ObserverType, Key>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n\n    private let parent: DistinctUntilChanged<Element, Key>\n    private var currentKey: Key?\n\n    init(parent: DistinctUntilChanged<Element, Key>, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            do {\n                let key = try parent.selector(value)\n                var areEqual = false\n                if let currentKey {\n                    areEqual = try parent.comparer(currentKey, key)\n                }\n\n                if areEqual {\n                    return\n                }\n\n                currentKey = key\n\n                forwardOn(event)\n            } catch {\n                forwardOn(.error(error))\n                dispose()\n            }\n        case .error, .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class DistinctUntilChanged<Element, Key>: Producer<Element> {\n    typealias KeySelector = (Element) throws -> Key\n    typealias EqualityComparer = (Key, Key) throws -> Bool\n\n    private let source: Observable<Element>\n    fileprivate let selector: KeySelector\n    fileprivate let comparer: EqualityComparer\n\n    init(source: Observable<Element>, selector: @escaping KeySelector, comparer: @escaping EqualityComparer) {\n        self.source = source\n        self.selector = selector\n        self.comparer = comparer\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = DistinctUntilChangedSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Do.swift",
    "content": "//\n//  Do.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter afterNext: Action to invoke for each element after the observable has passed an onNext event along to its downstream.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter afterError: Action to invoke after errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter afterCompleted: Action to invoke after graceful termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(onNext: ((Element) throws -> Void)? = nil, afterNext: ((Element) throws -> Void)? = nil, onError: ((Swift.Error) throws -> Void)? = nil, afterError: ((Swift.Error) throws -> Void)? = nil, onCompleted: (() throws -> Void)? = nil, afterCompleted: (() throws -> Void)? = nil, onSubscribe: (() -> Void)? = nil, onSubscribed: (() -> Void)? = nil, onDispose: (() -> Void)? = nil)\n        -> Observable<Element>\n    {\n        Do(source: asObservable(), eventHandler: { e in\n            switch e {\n            case let .next(element):\n                try onNext?(element)\n            case let .error(e):\n                try onError?(e)\n            case .completed:\n                try onCompleted?()\n            }\n        }, afterEventHandler: { e in\n            switch e {\n            case let .next(element):\n                try afterNext?(element)\n            case let .error(e):\n                try afterError?(e)\n            case .completed:\n                try afterCompleted?()\n            }\n        }, onSubscribe: onSubscribe, onSubscribed: onSubscribed, onDispose: onDispose)\n    }\n}\n\nprivate final class DoSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias EventHandler = (Event<Element>) throws -> Void\n    typealias AfterEventHandler = (Event<Element>) throws -> Void\n\n    private let eventHandler: EventHandler\n    private let afterEventHandler: AfterEventHandler\n\n    init(eventHandler: @escaping EventHandler, afterEventHandler: @escaping AfterEventHandler, observer: Observer, cancel: Cancelable) {\n        self.eventHandler = eventHandler\n        self.afterEventHandler = afterEventHandler\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        do {\n            try eventHandler(event)\n            forwardOn(event)\n            try afterEventHandler(event)\n            if event.isStopEvent {\n                dispose()\n            }\n        } catch {\n            forwardOn(.error(error))\n            dispose()\n        }\n    }\n}\n\nprivate final class Do<Element>: Producer<Element> {\n    typealias EventHandler = (Event<Element>) throws -> Void\n    typealias AfterEventHandler = (Event<Element>) throws -> Void\n\n    private let source: Observable<Element>\n    private let eventHandler: EventHandler\n    private let afterEventHandler: AfterEventHandler\n    private let onSubscribe: (() -> Void)?\n    private let onSubscribed: (() -> Void)?\n    private let onDispose: (() -> Void)?\n\n    init(source: Observable<Element>, eventHandler: @escaping EventHandler, afterEventHandler: @escaping AfterEventHandler, onSubscribe: (() -> Void)?, onSubscribed: (() -> Void)?, onDispose: (() -> Void)?) {\n        self.source = source\n        self.eventHandler = eventHandler\n        self.afterEventHandler = afterEventHandler\n        self.onSubscribe = onSubscribe\n        self.onSubscribed = onSubscribed\n        self.onDispose = onDispose\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        onSubscribe?()\n        let sink = DoSink(eventHandler: eventHandler, afterEventHandler: afterEventHandler, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        onSubscribed?()\n        let onDispose = onDispose\n        let allSubscriptions = Disposables.create {\n            subscription.dispose()\n            onDispose?()\n        }\n        return (sink: sink, subscription: allSubscriptions)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/ElementAt.swift",
    "content": "//\n//  ElementAt.swift\n//  RxSwift\n//\n//  Created by Junior B. on 21/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns a sequence emitting only element _n_ emitted by an Observable\n\n     - seealso: [elementAt operator on reactivex.io](http://reactivex.io/documentation/operators/elementat.html)\n\n     - parameter index: The index of the required element (starting from 0).\n     - returns: An observable sequence that emits the desired element as its own sole emission.\n     */\n    @available(*, deprecated, renamed: \"element(at:)\")\n    func elementAt(_ index: Int)\n        -> Observable<Element>\n    {\n        element(at: index)\n    }\n\n    /**\n     Returns a sequence emitting only element _n_ emitted by an Observable\n\n     - seealso: [elementAt operator on reactivex.io](http://reactivex.io/documentation/operators/elementat.html)\n\n     - parameter index: The index of the required element (starting from 0).\n     - returns: An observable sequence that emits the desired element as its own sole emission.\n     */\n    func element(at index: Int)\n        -> Observable<Element>\n    {\n        ElementAt(source: asObservable(), index: index, throwOnEmpty: true)\n    }\n}\n\nprivate final class ElementAtSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias SourceType = Observer.Element\n    typealias Parent = ElementAt<SourceType>\n\n    let parent: Parent\n    var i: Int\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        i = parent.index\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case .next:\n            if i == 0 {\n                forwardOn(event)\n                forwardOn(.completed)\n                dispose()\n            }\n\n            do {\n                _ = try decrementChecked(&i)\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n                return\n            }\n\n        case let .error(e):\n            forwardOn(.error(e))\n            dispose()\n\n        case .completed:\n            if parent.throwOnEmpty {\n                forwardOn(.error(RxError.argumentOutOfRange))\n            } else {\n                forwardOn(.completed)\n            }\n\n            dispose()\n        }\n    }\n}\n\nprivate final class ElementAt<SourceType>: Producer<SourceType> {\n    let source: Observable<SourceType>\n    let throwOnEmpty: Bool\n    let index: Int\n\n    init(source: Observable<SourceType>, index: Int, throwOnEmpty: Bool) {\n        if index < 0 {\n            rxFatalError(\"index can't be negative\")\n        }\n\n        self.source = source\n        self.index = index\n        self.throwOnEmpty = throwOnEmpty\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceType {\n        let sink = ElementAtSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Empty.swift",
    "content": "//\n//  Empty.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.\n\n     - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence with no elements.\n     */\n    static func empty() -> Observable<Element> {\n        EmptyProducer<Element>()\n    }\n}\n\nprivate final class EmptyProducer<Element>: Producer<Element> {\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        observer.on(.completed)\n        return Disposables.create()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Enumerated.swift",
    "content": "//\n//  Enumerated.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/6/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Enumerates the elements of an observable sequence.\n\n     - seealso: [map operator on reactivex.io](http://reactivex.io/documentation/operators/map.html)\n\n     - returns: An observable sequence that contains tuples of source sequence elements and their indexes.\n     */\n    func enumerated()\n        -> Observable<(index: Int, element: Element)>\n    {\n        Enumerated(source: asObservable())\n    }\n}\n\nprivate final class EnumeratedSink<Element, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == (index: Int, element: Element) {\n    var index = 0\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            do {\n                let nextIndex = try incrementChecked(&index)\n                let next = (index: nextIndex, element: value)\n                forwardOn(.next(next))\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        }\n    }\n}\n\nprivate final class Enumerated<Element>: Producer<(index: Int, element: Element)> {\n    private let source: Observable<Element>\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == (index: Int, element: Element) {\n        let sink = EnumeratedSink<Element, Observer>(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Error.swift",
    "content": "//\n//  Error.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence that terminates with an `error`.\n\n     - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: The observable sequence that terminates with specified error.\n     */\n    static func error(_ error: Swift.Error) -> Observable<Element> {\n        ErrorProducer(error: error)\n    }\n}\n\nprivate final class ErrorProducer<Element>: Producer<Element> {\n    private let error: Swift.Error\n\n    init(error: Swift.Error) {\n        self.error = error\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        observer.on(.error(error))\n        return Disposables.create()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Filter.swift",
    "content": "//\n//  Filter.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Filters the elements of an observable sequence based on a predicate.\n\n     - seealso: [filter operator on reactivex.io](http://reactivex.io/documentation/operators/filter.html)\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that contains elements from the input sequence that satisfy the condition.\n     */\n    func filter(_ predicate: @escaping (Element) throws -> Bool)\n        -> Observable<Element>\n    {\n        Filter(source: asObservable(), predicate: predicate)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Skips elements and completes (or errors) when the observable sequence completes (or errors). Equivalent to filter that always returns false.\n\n     - seealso: [ignoreElements operator on reactivex.io](http://reactivex.io/documentation/operators/ignoreelements.html)\n\n     - returns: An observable sequence that skips all elements of the source sequence.\n     */\n    func ignoreElements()\n        -> Observable<Never>\n    {\n        flatMap { _ in Observable<Never>.empty() }\n    }\n}\n\nprivate final class FilterSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Predicate = (Element) throws -> Bool\n    typealias Element = Observer.Element\n\n    private let predicate: Predicate\n\n    init(predicate: @escaping Predicate, observer: Observer, cancel: Cancelable) {\n        self.predicate = predicate\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            do {\n                let satisfies = try predicate(value)\n                if satisfies {\n                    forwardOn(.next(value))\n                }\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case .completed, .error:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class Filter<Element>: Producer<Element> {\n    typealias Predicate = (Element) throws -> Bool\n\n    private let source: Observable<Element>\n    private let predicate: Predicate\n\n    init(source: Observable<Element>, predicate: @escaping Predicate) {\n        self.source = source\n        self.predicate = predicate\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = FilterSink(predicate: predicate, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/First.swift",
    "content": "//\n//  First.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 7/31/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nprivate final class FirstSink<Element, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == Element? {\n    typealias Parent = First<Element>\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            forwardOn(.next(value))\n            forwardOn(.completed)\n            dispose()\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            forwardOn(.next(nil))\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nfinal class First<Element>: Producer<Element?> {\n    private let source: Observable<Element>\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element? {\n        let sink = FirstSink(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Generate.swift",
    "content": "//\n//  Generate.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Generates an observable sequence by running a state-driven loop producing the sequence's elements, using the specified scheduler\n     to run the loop send out observer messages.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter initialState: Initial state.\n     - parameter condition: Condition to terminate generation (upon returning `false`).\n     - parameter iterate: Iteration step function.\n     - parameter scheduler: Scheduler on which to run the generator loop.\n     - returns: The generated sequence.\n     */\n    static func generate(initialState: Element, condition: @escaping (Element) throws -> Bool, scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance, iterate: @escaping (Element) throws -> Element) -> Observable<Element> {\n        Generate(initialState: initialState, condition: condition, iterate: iterate, resultSelector: { $0 }, scheduler: scheduler)\n    }\n}\n\nprivate final class GenerateSink<Sequence, Observer: ObserverType>: Sink<Observer> {\n    typealias Parent = Generate<Sequence, Observer.Element>\n\n    private let parent: Parent\n\n    private var state: Sequence\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        state = parent.initialState\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.scheduleRecursive(true) { isFirst, recurse in\n            do {\n                if !isFirst {\n                    self.state = try self.parent.iterate(self.state)\n                }\n\n                if try self.parent.condition(self.state) {\n                    let result = try self.parent.resultSelector(self.state)\n                    self.forwardOn(.next(result))\n\n                    recurse(false)\n                } else {\n                    self.forwardOn(.completed)\n                    self.dispose()\n                }\n            } catch {\n                self.forwardOn(.error(error))\n                self.dispose()\n            }\n        }\n    }\n}\n\nprivate final class Generate<Sequence, Element>: Producer<Element> {\n    fileprivate let initialState: Sequence\n    fileprivate let condition: (Sequence) throws -> Bool\n    fileprivate let iterate: (Sequence) throws -> Sequence\n    fileprivate let resultSelector: (Sequence) throws -> Element\n    fileprivate let scheduler: ImmediateSchedulerType\n\n    init(initialState: Sequence, condition: @escaping (Sequence) throws -> Bool, iterate: @escaping (Sequence) throws -> Sequence, resultSelector: @escaping (Sequence) throws -> Element, scheduler: ImmediateSchedulerType) {\n        self.initialState = initialState\n        self.condition = condition\n        self.iterate = iterate\n        self.resultSelector = resultSelector\n        self.scheduler = scheduler\n        super.init()\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = GenerateSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/GroupBy.swift",
    "content": "//\n//  GroupBy.swift\n//  RxSwift\n//\n//  Created by Tomi Koskinen on 01/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /*\n     Groups the elements of an observable sequence according to a specified key selector function.\n\n     - seealso: [groupBy operator on reactivex.io](http://reactivex.io/documentation/operators/groupby.html)\n\n     - parameter keySelector: A function to extract the key for each element.\n     - returns: A sequence of observable groups, each of which corresponds to a unique key value, containing all elements that share that same key value.\n     */\n    func groupBy<Key: Hashable>(keySelector: @escaping (Element) throws -> Key)\n        -> Observable<GroupedObservable<Key, Element>>\n    {\n        GroupBy(source: asObservable(), selector: keySelector)\n    }\n}\n\nprivate final class GroupedObservableImpl<Element>: Observable<Element> {\n    private var subject: PublishSubject<Element>\n    private var refCount: RefCountDisposable\n\n    init(subject: PublishSubject<Element>, refCount: RefCountDisposable) {\n        self.subject = subject\n        self.refCount = refCount\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        let release = refCount.retain()\n        let subscription = subject.subscribe(observer)\n        return Disposables.create(release, subscription)\n    }\n}\n\nprivate final class GroupBySink<Key: Hashable, Element, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType where Observer.Element == GroupedObservable<Key, Element>\n{\n    typealias ResultType = Observer.Element\n    typealias Parent = GroupBy<Key, Element>\n\n    private let parent: Parent\n    private let subscription = SingleAssignmentDisposable()\n    private var refCountDisposable: RefCountDisposable!\n    private var groupedSubjectTable: [Key: PublishSubject<Element>]\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        groupedSubjectTable = [Key: PublishSubject<Element>]()\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        refCountDisposable = RefCountDisposable(disposable: subscription)\n\n        subscription.setDisposable(parent.source.subscribe(self))\n\n        return refCountDisposable\n    }\n\n    private func onGroupEvent(key: Key, value: Element) {\n        if let writer = groupedSubjectTable[key] {\n            writer.on(.next(value))\n        } else {\n            let writer = PublishSubject<Element>()\n            groupedSubjectTable[key] = writer\n\n            let group = GroupedObservable(\n                key: key,\n                source: GroupedObservableImpl(subject: writer, refCount: refCountDisposable)\n            )\n\n            forwardOn(.next(group))\n            writer.on(.next(value))\n        }\n    }\n\n    final func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            do {\n                let groupKey = try parent.selector(value)\n                onGroupEvent(key: groupKey, value: value)\n            } catch let e {\n                self.error(e)\n                return\n            }\n        case let .error(e):\n            error(e)\n        case .completed:\n            forwardOnGroups(event: .completed)\n            forwardOn(.completed)\n            subscription.dispose()\n            dispose()\n        }\n    }\n\n    final func error(_ error: Swift.Error) {\n        forwardOnGroups(event: .error(error))\n        forwardOn(.error(error))\n        subscription.dispose()\n        dispose()\n    }\n\n    final func forwardOnGroups(event: Event<Element>) {\n        for writer in groupedSubjectTable.values {\n            writer.on(event)\n        }\n    }\n}\n\nprivate final class GroupBy<Key: Hashable, Element>: Producer<GroupedObservable<Key, Element>> {\n    typealias KeySelector = (Element) throws -> Key\n\n    fileprivate let source: Observable<Element>\n    fileprivate let selector: KeySelector\n\n    init(source: Observable<Element>, selector: @escaping KeySelector) {\n        self.source = source\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == GroupedObservable<Key, Element> {\n        let sink = GroupBySink(parent: self, observer: observer, cancel: cancel)\n        return (sink: sink, subscription: sink.run())\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Just.swift",
    "content": "//\n//  Just.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element) -> Observable<Element> {\n        Just(element: element)\n    }\n\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - parameter scheduler: Scheduler to send the single element on.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element, scheduler: ImmediateSchedulerType) -> Observable<Element> {\n        JustScheduled(element: element, scheduler: scheduler)\n    }\n}\n\nprivate final class JustScheduledSink<Observer: ObserverType>: Sink<Observer> {\n    typealias Parent = JustScheduled<Observer.Element>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let scheduler = parent.scheduler\n        return scheduler.schedule(parent.element) { element in\n            self.forwardOn(.next(element))\n            return scheduler.schedule(()) { _ in\n                self.forwardOn(.completed)\n                self.dispose()\n                return Disposables.create()\n            }\n        }\n    }\n}\n\nprivate final class JustScheduled<Element>: Producer<Element> {\n    fileprivate let scheduler: ImmediateSchedulerType\n    fileprivate let element: Element\n\n    init(element: Element, scheduler: ImmediateSchedulerType) {\n        self.scheduler = scheduler\n        self.element = element\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = JustScheduledSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class Just<Element>: Producer<Element> {\n    private let element: Element\n\n    init(element: Element) {\n        self.element = element\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        observer.on(.next(element))\n        observer.on(.completed)\n        return Disposables.create()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Map.swift",
    "content": "//\n//  Map.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence into a new form.\n\n     - seealso: [map operator on reactivex.io](http://reactivex.io/documentation/operators/map.html)\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.\n\n     */\n    func map<Result>(_ transform: @escaping (Element) throws -> Result)\n        -> Observable<Result>\n    {\n        Map(source: asObservable(), transform: transform)\n    }\n}\n\nprivate final class MapSink<SourceType, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Transform = (SourceType) throws -> ResultType\n\n    typealias ResultType = Observer.Element\n\n    private let transform: Transform\n\n    init(transform: @escaping Transform, observer: Observer, cancel: Cancelable) {\n        self.transform = transform\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case let .next(element):\n            do {\n                let mappedElement = try transform(element)\n                forwardOn(.next(mappedElement))\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class Map<SourceType, ResultType>: Producer<ResultType> {\n    typealias Transform = (SourceType) throws -> ResultType\n\n    private let source: Observable<SourceType>\n\n    private let transform: Transform\n\n    init(source: Observable<SourceType>, transform: @escaping Transform) {\n        self.source = source\n        self.transform = transform\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == ResultType {\n        let sink = MapSink(transform: transform, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Materialize.swift",
    "content": "//\n//  Materialize.swift\n//  RxSwift\n//\n//  Created by sergdort on 08/03/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Convert any Observable into an Observable of its events.\n     - seealso: [materialize operator on reactivex.io](http://reactivex.io/documentation/operators/materialize-dematerialize.html)\n     - returns: An observable sequence that wraps events in an Event<E>. The returned Observable never errors, but it does complete after observing all of the events of the underlying Observable.\n     */\n    func materialize() -> Observable<Event<Element>> {\n        Materialize(source: asObservable())\n    }\n}\n\nprivate final class MaterializeSink<Element, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == Event<Element> {\n    func on(_ event: Event<Element>) {\n        forwardOn(.next(event))\n        if event.isStopEvent {\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class Materialize<T>: Producer<Event<T>> {\n    private let source: Observable<T>\n\n    init(source: Observable<T>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = MaterializeSink(observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Merge.swift",
    "content": "//\n//  Merge.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMap<Source: ObservableConvertibleType>(_ selector: @escaping (Element) throws -> Source)\n        -> Observable<Source.Element>\n    {\n        FlatMap(source: asObservable(), selector: selector)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n     If element is received while there is some projected observable sequence being merged it will simply be ignored.\n\n     - seealso: [flatMapFirst operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to element that was observed while no observable is executing in parallel.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.\n     */\n    func flatMapFirst<Source: ObservableConvertibleType>(_ selector: @escaping (Element) throws -> Source)\n        -> Observable<Source.Element>\n    {\n        FlatMapFirst(source: asObservable(), selector: selector)\n    }\n}\n\npublic extension ObservableType where Element: ObservableConvertibleType {\n    /**\n     Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    func merge() -> Observable<Element.Element> {\n        Merge(source: asObservable())\n    }\n\n    /**\n     Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter maxConcurrent: Maximum number of inner observable sequences being subscribed to concurrently.\n     - returns: The observable sequence that merges the elements of the inner sequences.\n     */\n    func merge(maxConcurrent: Int)\n        -> Observable<Element.Element>\n    {\n        MergeLimited(source: asObservable(), maxConcurrent: maxConcurrent)\n    }\n}\n\npublic extension ObservableType where Element: ObservableConvertibleType {\n    /**\n     Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each observed inner sequence, in sequential order.\n     */\n    func concat() -> Observable<Element.Element> {\n        merge(maxConcurrent: 1)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Merges elements from all observable sequences from collection into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge<Collection: Swift.Collection>(_ sources: Collection) -> Observable<Element> where Collection.Element == Observable<Element> {\n        MergeArray(sources: Array(sources))\n    }\n\n    /**\n     Merges elements from all observable sequences from array into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Array of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge(_ sources: [Observable<Element>]) -> Observable<Element> {\n        MergeArray(sources: sources)\n    }\n\n    /**\n     Merges elements from all observable sequences into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge(_ sources: Observable<Element>...) -> Observable<Element> {\n        MergeArray(sources: sources)\n    }\n}\n\n// MARK: concatMap\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each observed inner sequence, in sequential order.\n     */\n\n    func concatMap<Source: ObservableConvertibleType>(_ selector: @escaping (Element) throws -> Source)\n        -> Observable<Source.Element>\n    {\n        ConcatMap(source: asObservable(), selector: selector)\n    }\n}\n\nprivate final class MergeLimitedSinkIter<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType where SourceSequence.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n    typealias DisposeKey = CompositeDisposable.DisposeKey\n    typealias Parent = MergeLimitedSink<SourceElement, SourceSequence, Observer>\n\n    private let parent: Parent\n    private let disposeKey: DisposeKey\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    init(parent: Parent, disposeKey: DisposeKey) {\n        self.parent = parent\n        self.disposeKey = disposeKey\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.forwardOn(event)\n        case .error:\n            parent.forwardOn(event)\n            parent.dispose()\n        case .completed:\n            parent.group.remove(for: disposeKey)\n            parent.dequeueNextAndSubscribe()\n        }\n    }\n}\n\nprivate final class ConcatMapSink<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>: MergeLimitedSink<SourceElement, SourceSequence, Observer> where Observer.Element == SourceSequence.Element {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let selector: Selector\n\n    init(selector: @escaping Selector, observer: Observer, cancel: Cancelable) {\n        self.selector = selector\n        super.init(maxConcurrent: 1, observer: observer, cancel: cancel)\n    }\n\n    override func performMap(_ element: SourceElement) throws -> SourceSequence {\n        try selector(element)\n    }\n}\n\nprivate final class MergeLimitedBasicSink<SourceSequence: ObservableConvertibleType, Observer: ObserverType>: MergeLimitedSink<SourceSequence, SourceSequence, Observer> where Observer.Element == SourceSequence.Element {\n    override func performMap(_ element: SourceSequence) throws -> SourceSequence {\n        element\n    }\n}\n\nprivate class MergeLimitedSink<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType where Observer.Element == SourceSequence.Element\n{\n    typealias QueueType = Queue<SourceSequence>\n\n    let maxConcurrent: Int\n\n    let lock = RecursiveLock()\n\n    // state\n    var stopped = false\n    var activeCount = 0\n    var queue = QueueType(capacity: 2)\n\n    let sourceSubscription = SingleAssignmentDisposable()\n    let group = CompositeDisposable()\n\n    init(maxConcurrent: Int, observer: Observer, cancel: Cancelable) {\n        self.maxConcurrent = maxConcurrent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run(_ source: Observable<SourceElement>) -> Disposable {\n        _ = group.insert(sourceSubscription)\n\n        let disposable = source.subscribe(self)\n        sourceSubscription.setDisposable(disposable)\n        return group\n    }\n\n    @discardableResult\n    func subscribe(_ innerSource: SourceSequence, group: CompositeDisposable) -> Disposable {\n        let subscription = SingleAssignmentDisposable()\n\n        let key = group.insert(subscription)\n\n        if let key {\n            let observer = MergeLimitedSinkIter(parent: self, disposeKey: key)\n\n            let disposable = innerSource.asObservable().subscribe(observer)\n            subscription.setDisposable(disposable)\n        }\n        return subscription\n    }\n\n    func dequeueNextAndSubscribe() {\n        if let next = queue.dequeue() {\n            // subscribing immediately can produce values immediately which can re-enter and cause stack overflows\n            let disposable = CurrentThreadScheduler.instance.schedule(()) { _ in\n                // lock again\n                self.lock.performLocked {\n                    self.subscribe(next, group: self.group)\n                }\n            }\n            _ = group.insert(disposable)\n        } else {\n            activeCount -= 1\n\n            if stopped, activeCount == 0 {\n                forwardOn(.completed)\n                dispose()\n            }\n        }\n    }\n\n    func performMap(_: SourceElement) throws -> SourceSequence {\n        rxAbstractMethod()\n    }\n\n    @inline(__always)\n    private final func nextElementArrived(element: SourceElement) -> SourceSequence? {\n        lock.performLocked {\n            let subscribe: Bool\n            if self.activeCount < self.maxConcurrent {\n                self.activeCount += 1\n                subscribe = true\n            } else {\n                do {\n                    let value = try self.performMap(element)\n                    self.queue.enqueue(value)\n                } catch {\n                    self.forwardOn(.error(error))\n                    self.dispose()\n                }\n                subscribe = false\n            }\n\n            if subscribe {\n                do {\n                    return try self.performMap(element)\n                } catch {\n                    self.forwardOn(.error(error))\n                    self.dispose()\n                }\n            }\n\n            return nil\n        }\n    }\n\n    func on(_ event: Event<SourceElement>) {\n        switch event {\n        case let .next(element):\n            if let sequence = nextElementArrived(element: element) {\n                subscribe(sequence, group: group)\n            }\n        case let .error(error):\n            lock.performLocked {\n                self.forwardOn(.error(error))\n                self.dispose()\n            }\n        case .completed:\n            lock.performLocked {\n                if self.activeCount == 0 {\n                    self.forwardOn(.completed)\n                    self.dispose()\n                } else {\n                    self.sourceSubscription.dispose()\n                }\n\n                self.stopped = true\n            }\n        }\n    }\n}\n\nprivate final class MergeLimited<SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.Element> {\n    private let source: Observable<SourceSequence>\n    private let maxConcurrent: Int\n\n    init(source: Observable<SourceSequence>, maxConcurrent: Int) {\n        self.source = source\n        self.maxConcurrent = maxConcurrent\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceSequence.Element {\n        let sink = MergeLimitedBasicSink<SourceSequence, Observer>(maxConcurrent: maxConcurrent, observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// MARK: Merge\n\nprivate final class MergeBasicSink<Source: ObservableConvertibleType, Observer: ObserverType>: MergeSink<Source, Source, Observer> where Observer.Element == Source.Element {\n    override func performMap(_ element: Source) throws -> Source {\n        element\n    }\n}\n\n// MARK: flatMap\n\nprivate final class FlatMapSink<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>: MergeSink<SourceElement, SourceSequence, Observer> where Observer.Element == SourceSequence.Element {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let selector: Selector\n\n    init(selector: @escaping Selector, observer: Observer, cancel: Cancelable) {\n        self.selector = selector\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    override func performMap(_ element: SourceElement) throws -> SourceSequence {\n        try selector(element)\n    }\n}\n\n// MARK: FlatMapFirst\n\nprivate final class FlatMapFirstSink<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>: MergeSink<SourceElement, SourceSequence, Observer> where Observer.Element == SourceSequence.Element {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let selector: Selector\n\n    override var subscribeNext: Bool {\n        activeCount == 0\n    }\n\n    init(selector: @escaping Selector, observer: Observer, cancel: Cancelable) {\n        self.selector = selector\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    override func performMap(_ element: SourceElement) throws -> SourceSequence {\n        try selector(element)\n    }\n}\n\nprivate final class MergeSinkIter<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>: ObserverType where Observer.Element == SourceSequence.Element {\n    typealias Parent = MergeSink<SourceElement, SourceSequence, Observer>\n    typealias DisposeKey = CompositeDisposable.DisposeKey\n    typealias Element = Observer.Element\n\n    private let parent: Parent\n    private let disposeKey: DisposeKey\n\n    init(parent: Parent, disposeKey: DisposeKey) {\n        self.parent = parent\n        self.disposeKey = disposeKey\n    }\n\n    func on(_ event: Event<Element>) {\n        parent.lock.performLocked {\n            switch event {\n            case let .next(value):\n                self.parent.forwardOn(.next(value))\n            case let .error(error):\n                self.parent.forwardOn(.error(error))\n                self.parent.dispose()\n            case .completed:\n                self.parent.group.remove(for: self.disposeKey)\n                self.parent.activeCount -= 1\n                self.parent.checkCompleted()\n            }\n        }\n    }\n}\n\nprivate class MergeSink<SourceElement, SourceSequence: ObservableConvertibleType, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType where Observer.Element == SourceSequence.Element\n{\n    typealias ResultType = Observer.Element\n    typealias Element = SourceElement\n\n    let lock = RecursiveLock()\n\n    var subscribeNext: Bool {\n        true\n    }\n\n    // state\n    let group = CompositeDisposable()\n    let sourceSubscription = SingleAssignmentDisposable()\n\n    var activeCount = 0\n    var stopped = false\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func performMap(_: SourceElement) throws -> SourceSequence {\n        rxAbstractMethod()\n    }\n\n    @inline(__always)\n    private final func nextElementArrived(element: SourceElement) -> SourceSequence? {\n        lock.performLocked {\n            if !self.subscribeNext {\n                return nil\n            }\n\n            do {\n                let value = try self.performMap(element)\n                self.activeCount += 1\n                return value\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n                return nil\n            }\n        }\n    }\n\n    func on(_ event: Event<SourceElement>) {\n        switch event {\n        case let .next(element):\n            if let value = nextElementArrived(element: element) {\n                subscribeInner(value.asObservable())\n            }\n        case let .error(error):\n            lock.performLocked {\n                self.forwardOn(.error(error))\n                self.dispose()\n            }\n        case .completed:\n            lock.performLocked {\n                self.stopped = true\n                self.sourceSubscription.dispose()\n                self.checkCompleted()\n            }\n        }\n    }\n\n    func subscribeInner(_ source: Observable<Observer.Element>) {\n        let iterDisposable = SingleAssignmentDisposable()\n        if let disposeKey = group.insert(iterDisposable) {\n            let iter = MergeSinkIter(parent: self, disposeKey: disposeKey)\n            let subscription = source.subscribe(iter)\n            iterDisposable.setDisposable(subscription)\n        }\n    }\n\n    func run(_ sources: [Observable<Observer.Element>]) -> Disposable {\n        activeCount += sources.count\n\n        for source in sources {\n            subscribeInner(source)\n        }\n\n        stopped = true\n\n        checkCompleted()\n\n        return group\n    }\n\n    @inline(__always)\n    func checkCompleted() {\n        if stopped, activeCount == 0 {\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n\n    func run(_ source: Observable<SourceElement>) -> Disposable {\n        _ = group.insert(sourceSubscription)\n\n        let subscription = source.subscribe(self)\n        sourceSubscription.setDisposable(subscription)\n\n        return group\n    }\n}\n\n// MARK: Producers\n\nprivate final class FlatMap<SourceElement, SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.Element> {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let source: Observable<SourceElement>\n\n    private let selector: Selector\n\n    init(source: Observable<SourceElement>, selector: @escaping Selector) {\n        self.source = source\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceSequence.Element {\n        let sink = FlatMapSink(selector: selector, observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class FlatMapFirst<SourceElement, SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.Element> {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let source: Observable<SourceElement>\n\n    private let selector: Selector\n\n    init(source: Observable<SourceElement>, selector: @escaping Selector) {\n        self.source = source\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceSequence.Element {\n        let sink = FlatMapFirstSink<SourceElement, SourceSequence, Observer>(selector: selector, observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nfinal class ConcatMap<SourceElement, SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.Element> {\n    typealias Selector = (SourceElement) throws -> SourceSequence\n\n    private let source: Observable<SourceElement>\n    private let selector: Selector\n\n    init(source: Observable<SourceElement>, selector: @escaping Selector) {\n        self.source = source\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceSequence.Element {\n        let sink = ConcatMapSink<SourceElement, SourceSequence, Observer>(selector: selector, observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nfinal class Merge<SourceSequence: ObservableConvertibleType>: Producer<SourceSequence.Element> {\n    private let source: Observable<SourceSequence>\n\n    init(source: Observable<SourceSequence>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == SourceSequence.Element {\n        let sink = MergeBasicSink<SourceSequence, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class MergeArray<Element>: Producer<Element> {\n    private let sources: [Observable<Element>]\n\n    init(sources: [Observable<Element>]) {\n        self.sources = sources\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = MergeBasicSink<Observable<Element>, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run(sources)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Multicast.swift",
    "content": "//\n//  Multicast.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence.\n */\npublic class ConnectableObservable<Element>:\n    Observable<Element>,\n    ConnectableObservableType\n{\n    /**\n     Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.\n\n     - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.\n     */\n    public func connect() -> Disposable {\n        rxAbstractMethod()\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function.\n\n     Each subscription to the resulting sequence causes a separate multicast invocation, exposing the sequence resulting from the selector function's invocation.\n\n     For specializations with fixed subject types, see `publish` and `replay`.\n\n     - seealso: [multicast operator on reactivex.io](http://reactivex.io/documentation/operators/publish.html)\n\n     - parameter subjectSelector: Factory function to create an intermediate subject through which the source sequence's elements will be multicast to the selector function.\n     - parameter selector: Selector function which can use the multicasted source sequence subject to the policies enforced by the created subject.\n     - returns: An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function.\n     */\n    func multicast<Subject: SubjectType, Result>(_ subjectSelector: @escaping () throws -> Subject, selector: @escaping (Observable<Subject.Element>) throws -> Observable<Result>)\n        -> Observable<Result> where Subject.Observer.Element == Element\n    {\n        Multicast(\n            source: asObservable(),\n            subjectSelector: subjectSelector,\n            selector: selector\n        )\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Returns a connectable observable sequence that shares a single subscription to the underlying sequence.\n\n     This operator is a specialization of `multicast` using a `PublishSubject`.\n\n     - seealso: [publish operator on reactivex.io](http://reactivex.io/documentation/operators/publish.html)\n\n     - returns: A connectable observable sequence that shares a single subscription to the underlying sequence.\n     */\n    func publish() -> ConnectableObservable<Element> {\n        multicast { PublishSubject() }\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying bufferSize elements.\n\n     This operator is a specialization of `multicast` using a `ReplaySubject`.\n\n     - seealso: [replay operator on reactivex.io](http://reactivex.io/documentation/operators/replay.html)\n\n     - parameter bufferSize: Maximum element count of the replay buffer.\n     - returns: A connectable observable sequence that shares a single subscription to the underlying sequence.\n     */\n    func replay(_ bufferSize: Int)\n        -> ConnectableObservable<Element>\n    {\n        multicast { ReplaySubject.create(bufferSize: bufferSize) }\n    }\n\n    /**\n     Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying all elements.\n\n     This operator is a specialization of `multicast` using a `ReplaySubject`.\n\n     - seealso: [replay operator on reactivex.io](http://reactivex.io/documentation/operators/replay.html)\n\n     - returns: A connectable observable sequence that shares a single subscription to the underlying sequence.\n     */\n    func replayAll()\n        -> ConnectableObservable<Element>\n    {\n        multicast { ReplaySubject.createUnbounded() }\n    }\n}\n\npublic extension ConnectableObservableType {\n    /**\n     Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence.\n\n     - seealso: [refCount operator on reactivex.io](http://reactivex.io/documentation/operators/refcount.html)\n\n     - returns: An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence.\n     */\n    func refCount() -> Observable<Element> {\n        RefCount(source: self)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Multicasts the source sequence notifications through the specified subject to the resulting connectable observable.\n\n     Upon connection of the connectable observable, the subject is subscribed to the source exactly one, and messages are forwarded to the observers registered with the connectable observable.\n\n     For specializations with fixed subject types, see `publish` and `replay`.\n\n     - seealso: [multicast operator on reactivex.io](http://reactivex.io/documentation/operators/publish.html)\n\n     - parameter subject: Subject to push source elements into.\n     - returns: A connectable observable sequence that upon connection causes the source sequence to push results into the specified subject.\n     */\n    func multicast<Subject: SubjectType>(_ subject: Subject)\n        -> ConnectableObservable<Subject.Element> where Subject.Observer.Element == Element\n    {\n        ConnectableObservableAdapter(source: asObservable(), makeSubject: { subject })\n    }\n\n    /**\n     Multicasts the source sequence notifications through an instantiated subject to the resulting connectable observable.\n\n     Upon connection of the connectable observable, the subject is subscribed to the source exactly one, and messages are forwarded to the observers registered with the connectable observable.\n\n     Subject is cleared on connection disposal or in case source sequence produces terminal event.\n\n     - seealso: [multicast operator on reactivex.io](http://reactivex.io/documentation/operators/publish.html)\n\n     - parameter makeSubject: Factory function used to instantiate a subject for each connection.\n     - returns: A connectable observable sequence that upon connection causes the source sequence to push results into the specified subject.\n     */\n    func multicast<Subject: SubjectType>(makeSubject: @escaping () -> Subject)\n        -> ConnectableObservable<Subject.Element> where Subject.Observer.Element == Element\n    {\n        ConnectableObservableAdapter(source: asObservable(), makeSubject: makeSubject)\n    }\n}\n\nprivate final class Connection<Subject: SubjectType>: ObserverType, Disposable {\n    typealias Element = Subject.Observer.Element\n\n    private var lock: RecursiveLock\n    // state\n    private var parent: ConnectableObservableAdapter<Subject>?\n    private var subscription: Disposable?\n    private var subjectObserver: Subject.Observer\n\n    private let disposed = AtomicInt(0)\n\n    init(parent: ConnectableObservableAdapter<Subject>, subjectObserver: Subject.Observer, lock: RecursiveLock, subscription: Disposable) {\n        self.parent = parent\n        self.subscription = subscription\n        self.lock = lock\n        self.subjectObserver = subjectObserver\n    }\n\n    func on(_ event: Event<Subject.Observer.Element>) {\n        if isFlagSet(disposed, 1) {\n            return\n        }\n        if event.isStopEvent {\n            dispose()\n        }\n        subjectObserver.on(event)\n    }\n\n    func dispose() {\n        lock.lock(); defer { lock.unlock() }\n        fetchOr(disposed, 1)\n        guard let parent else {\n            return\n        }\n\n        if parent.connection === self {\n            parent.connection = nil\n            parent.subject = nil\n        }\n        self.parent = nil\n\n        subscription?.dispose()\n        subscription = nil\n    }\n}\n\nprivate final class ConnectableObservableAdapter<Subject: SubjectType>:\n    ConnectableObservable<Subject.Element>\n{\n    typealias ConnectionType = Connection<Subject>\n\n    private let source: Observable<Subject.Observer.Element>\n    private let makeSubject: () -> Subject\n\n    fileprivate let lock = RecursiveLock()\n    fileprivate var subject: Subject?\n\n    // state\n    fileprivate var connection: ConnectionType?\n\n    init(source: Observable<Subject.Observer.Element>, makeSubject: @escaping () -> Subject) {\n        self.source = source\n        self.makeSubject = makeSubject\n        subject = nil\n        connection = nil\n    }\n\n    override func connect() -> Disposable {\n        lock.performLocked {\n            if let connection = self.connection {\n                return connection\n            }\n\n            let singleAssignmentDisposable = SingleAssignmentDisposable()\n            let connection = Connection(parent: self, subjectObserver: self.lazySubject.asObserver(), lock: self.lock, subscription: singleAssignmentDisposable)\n            self.connection = connection\n            let subscription = self.source.subscribe(connection)\n            singleAssignmentDisposable.setDisposable(subscription)\n            return connection\n        }\n    }\n\n    private var lazySubject: Subject {\n        lock.performLocked {\n            if let subject = self.subject {\n                return subject\n            }\n\n            let subject = self.makeSubject()\n            self.subject = subject\n            return subject\n        }\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Subject.Element {\n        lazySubject.subscribe(observer)\n    }\n}\n\nprivate final class RefCountSink<ConnectableSource: ConnectableObservableType, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType where ConnectableSource.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n    typealias Parent = RefCount<ConnectableSource>\n\n    private let parent: Parent\n\n    private var connectionIdSnapshot: Int64 = -1\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription = parent.source.subscribe(self)\n        parent.lock.lock(); defer { self.parent.lock.unlock() }\n\n        connectionIdSnapshot = parent.connectionId\n\n        if isDisposed {\n            return Disposables.create()\n        }\n\n        if parent.count == 0 {\n            parent.count = 1\n            parent.connectableSubscription = parent.source.connect()\n        } else {\n            parent.count += 1\n        }\n\n        return Disposables.create {\n            subscription.dispose()\n            self.parent.lock.lock(); defer { self.parent.lock.unlock() }\n            if self.parent.connectionId != self.connectionIdSnapshot {\n                return\n            }\n            if self.parent.count == 1 {\n                self.parent.count = 0\n                guard let connectableSubscription = self.parent.connectableSubscription else {\n                    return\n                }\n\n                connectableSubscription.dispose()\n                self.parent.connectableSubscription = nil\n            } else if self.parent.count > 1 {\n                self.parent.count -= 1\n            } else {\n                rxFatalError(\"Something went wrong with RefCount disposing mechanism\")\n            }\n        }\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case .error, .completed:\n            parent.lock.lock()\n            if parent.connectionId == connectionIdSnapshot {\n                let connection = parent.connectableSubscription\n                defer { connection?.dispose() }\n                parent.count = 0\n                parent.connectionId = parent.connectionId &+ 1\n                parent.connectableSubscription = nil\n            }\n            parent.lock.unlock()\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class RefCount<ConnectableSource: ConnectableObservableType>: Producer<ConnectableSource.Element> {\n    fileprivate let lock = RecursiveLock()\n\n    // state\n    fileprivate var count = 0\n    fileprivate var connectionId: Int64 = 0\n    fileprivate var connectableSubscription = nil as Disposable?\n\n    fileprivate let source: ConnectableSource\n\n    init(source: ConnectableSource) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable)\n        where Observer.Element == ConnectableSource.Element\n    {\n        let sink = RefCountSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class MulticastSink<Subject: SubjectType, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias ResultType = Element\n    typealias MulticastType = Multicast<Subject, Observer.Element>\n\n    private let parent: MulticastType\n\n    init(parent: MulticastType, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        do {\n            let subject = try parent.subjectSelector()\n            let connectable = ConnectableObservableAdapter(source: parent.source, makeSubject: { subject })\n\n            let observable = try parent.selector(connectable)\n\n            let subscription = observable.subscribe(self)\n            let connection = connectable.connect()\n\n            return Disposables.create(subscription, connection)\n        } catch let e {\n            self.forwardOn(.error(e))\n            self.dispose()\n            return Disposables.create()\n        }\n    }\n\n    func on(_ event: Event<ResultType>) {\n        forwardOn(event)\n        switch event {\n        case .next: break\n        case .error, .completed:\n            dispose()\n        }\n    }\n}\n\nprivate final class Multicast<Subject: SubjectType, Result>: Producer<Result> {\n    typealias SubjectSelectorType = () throws -> Subject\n    typealias SelectorType = (Observable<Subject.Element>) throws -> Observable<Result>\n\n    fileprivate let source: Observable<Subject.Observer.Element>\n    fileprivate let subjectSelector: SubjectSelectorType\n    fileprivate let selector: SelectorType\n\n    init(source: Observable<Subject.Observer.Element>, subjectSelector: @escaping SubjectSelectorType, selector: @escaping SelectorType) {\n        self.source = source\n        self.subjectSelector = subjectSelector\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = MulticastSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Never.swift",
    "content": "//\n//  Never.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns a non-terminating observable sequence, which can be used to denote an infinite duration.\n\n     - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence whose observers will never get called.\n     */\n    static func never() -> Observable<Element> {\n        NeverProducer()\n    }\n}\n\nprivate final class NeverProducer<Element>: Producer<Element> {\n    override func subscribe<Observer: ObserverType>(_: Observer) -> Disposable where Observer.Element == Element {\n        Disposables.create()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/ObserveOn.swift",
    "content": "//\n//  ObserveOn.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 7/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Wraps the source sequence in order to run its observer callbacks on the specified scheduler.\n\n     This only invokes observer callbacks on a `scheduler`. In case the subscription and/or unsubscription\n     actions have side-effects that require to be run on a scheduler, use `subscribeOn`.\n\n     - seealso: [observeOn operator on reactivex.io](http://reactivex.io/documentation/operators/observeon.html)\n\n     - parameter scheduler: Scheduler to notify observers on.\n     - returns: The source sequence whose observations happen on the specified scheduler.\n     */\n    func observe(on scheduler: ImmediateSchedulerType)\n        -> Observable<Element>\n    {\n        guard let serialScheduler = scheduler as? SerialDispatchQueueScheduler else {\n            return ObserveOn(source: asObservable(), scheduler: scheduler)\n        }\n\n        return ObserveOnSerialDispatchQueue(\n            source: asObservable(),\n            scheduler: serialScheduler\n        )\n    }\n\n    /**\n     Wraps the source sequence in order to run its observer callbacks on the specified scheduler.\n\n     This only invokes observer callbacks on a `scheduler`. In case the subscription and/or unsubscription\n     actions have side-effects that require to be run on a scheduler, use `subscribeOn`.\n\n     - seealso: [observeOn operator on reactivex.io](http://reactivex.io/documentation/operators/observeon.html)\n\n     - parameter scheduler: Scheduler to notify observers on.\n     - returns: The source sequence whose observations happen on the specified scheduler.\n     */\n    @available(*, deprecated, renamed: \"observe(on:)\")\n    func observeOn(_ scheduler: ImmediateSchedulerType)\n        -> Observable<Element>\n    {\n        observe(on: scheduler)\n    }\n}\n\nprivate final class ObserveOn<Element>: Producer<Element> {\n    let scheduler: ImmediateSchedulerType\n    let source: Observable<Element>\n\n    init(source: Observable<Element>, scheduler: ImmediateSchedulerType) {\n        self.scheduler = scheduler\n        self.source = source\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ObserveOnSink(scheduler: scheduler, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\nenum ObserveOnState: Int32 {\n    // pump is not running\n    case stopped = 0\n    // pump is running\n    case running = 1\n}\n\nprivate final class ObserveOnSink<Observer: ObserverType>: ObserverBase<Observer.Element> {\n    typealias Element = Observer.Element\n\n    let scheduler: ImmediateSchedulerType\n\n    var lock = SpinLock()\n    let observer: Observer\n\n    // state\n    var state = ObserveOnState.stopped\n    var queue = Queue<Event<Element>>(capacity: 10)\n\n    let scheduleDisposable = SerialDisposable()\n    let cancel: Cancelable\n\n    init(scheduler: ImmediateSchedulerType, observer: Observer, cancel: Cancelable) {\n        self.scheduler = scheduler\n        self.observer = observer\n        self.cancel = cancel\n    }\n\n    override func onCore(_ event: Event<Element>) {\n        let shouldStart = lock.performLocked { () -> Bool in\n            self.queue.enqueue(event)\n\n            switch self.state {\n            case .stopped:\n                self.state = .running\n                return true\n            case .running:\n                return false\n            }\n        }\n\n        if shouldStart {\n            scheduleDisposable.disposable = scheduler.scheduleRecursive((), action: run)\n        }\n    }\n\n    func run(_: (), _ recurse: (()) -> Void) {\n        let (nextEvent, observer) = lock.performLocked { () -> (Event<Element>?, Observer) in\n            if !self.queue.isEmpty {\n                return (self.queue.dequeue(), self.observer)\n            } else {\n                self.state = .stopped\n                return (nil, self.observer)\n            }\n        }\n\n        if let nextEvent, !self.cancel.isDisposed {\n            observer.on(nextEvent)\n            if nextEvent.isStopEvent {\n                dispose()\n            }\n        } else {\n            return\n        }\n\n        let shouldContinue = shouldContinue_synchronized()\n\n        if shouldContinue {\n            recurse(())\n        }\n    }\n\n    func shouldContinue_synchronized() -> Bool {\n        lock.performLocked {\n            let isEmpty = self.queue.isEmpty\n            if isEmpty { self.state = .stopped }\n            return !isEmpty\n        }\n    }\n\n    override func dispose() {\n        super.dispose()\n\n        cancel.dispose()\n        scheduleDisposable.dispose()\n    }\n}\n\n#if TRACE_RESOURCES\nprivate let numberOfSerialDispatchObservables = AtomicInt(0)\npublic extension Resources {\n    /**\n     Counts number of `SerialDispatchQueueObservables`.\n\n     Purposed for unit tests.\n     */\n    static var numberOfSerialDispatchQueueObservables: Int32 {\n        load(numberOfSerialDispatchObservables)\n    }\n}\n#endif\n\nprivate final class ObserveOnSerialDispatchQueueSink<Observer: ObserverType>: ObserverBase<Observer.Element> {\n    let scheduler: SerialDispatchQueueScheduler\n    let observer: Observer\n\n    let cancel: Cancelable\n\n    var cachedScheduleLambda: (((sink: ObserveOnSerialDispatchQueueSink<Observer>, event: Event<Element>)) -> Disposable)!\n\n    init(scheduler: SerialDispatchQueueScheduler, observer: Observer, cancel: Cancelable) {\n        self.scheduler = scheduler\n        self.observer = observer\n        self.cancel = cancel\n        super.init()\n\n        cachedScheduleLambda = { pair in\n            guard !cancel.isDisposed else { return Disposables.create() }\n\n            pair.sink.observer.on(pair.event)\n\n            if pair.event.isStopEvent {\n                pair.sink.dispose()\n            }\n\n            return Disposables.create()\n        }\n    }\n\n    override func onCore(_ event: Event<Element>) {\n        _ = scheduler.schedule((self, event), action: cachedScheduleLambda!)\n    }\n\n    override func dispose() {\n        super.dispose()\n\n        cancel.dispose()\n    }\n}\n\nprivate final class ObserveOnSerialDispatchQueue<Element>: Producer<Element> {\n    let scheduler: SerialDispatchQueueScheduler\n    let source: Observable<Element>\n\n    init(source: Observable<Element>, scheduler: SerialDispatchQueueScheduler) {\n        self.scheduler = scheduler\n        self.source = source\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        _ = increment(numberOfSerialDispatchObservables)\n        #endif\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ObserveOnSerialDispatchQueueSink(scheduler: scheduler, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n        _ = decrement(numberOfSerialDispatchObservables)\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/Observables/Optional.swift",
    "content": "//\n//  Optional.swift\n//  RxSwift\n//\n//  Created by tarunon on 2016/12/13.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Converts a optional to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter optional: Optional element in the resulting observable sequence.\n     - returns: An observable sequence containing the wrapped value or not from given optional.\n     */\n    static func from(optional: Element?) -> Observable<Element> {\n        ObservableOptional(optional: optional)\n    }\n\n    /**\n     Converts a optional to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter optional: Optional element in the resulting observable sequence.\n     - parameter scheduler: Scheduler to send the optional element on.\n     - returns: An observable sequence containing the wrapped value or not from given optional.\n     */\n    static func from(optional: Element?, scheduler: ImmediateSchedulerType) -> Observable<Element> {\n        ObservableOptionalScheduled(optional: optional, scheduler: scheduler)\n    }\n}\n\nprivate final class ObservableOptionalScheduledSink<Observer: ObserverType>: Sink<Observer> {\n    typealias Element = Observer.Element\n    typealias Parent = ObservableOptionalScheduled<Element>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.schedule(parent.optional) { (optional: Element?) -> Disposable in\n            if let next = optional {\n                self.forwardOn(.next(next))\n                return self.parent.scheduler.schedule(()) { _ in\n                    self.forwardOn(.completed)\n                    self.dispose()\n                    return Disposables.create()\n                }\n            } else {\n                self.forwardOn(.completed)\n                self.dispose()\n                return Disposables.create()\n            }\n        }\n    }\n}\n\nprivate final class ObservableOptionalScheduled<Element>: Producer<Element> {\n    fileprivate let optional: Element?\n    fileprivate let scheduler: ImmediateSchedulerType\n\n    init(optional: Element?, scheduler: ImmediateSchedulerType) {\n        self.optional = optional\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ObservableOptionalScheduledSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class ObservableOptional<Element>: Producer<Element> {\n    private let optional: Element?\n\n    init(optional: Element?) {\n        self.optional = optional\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if let element = optional {\n            observer.on(.next(element))\n        }\n        observer.on(.completed)\n        return Disposables.create()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Producer.swift",
    "content": "//\n//  Producer.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/20/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nclass Producer<Element>: Observable<Element> {\n    override init() {\n        super.init()\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if !CurrentThreadScheduler.isScheduleRequired {\n            // The returned disposable needs to release all references once it was disposed.\n            let disposer = SinkDisposer()\n            let sinkAndSubscription = run(observer, cancel: disposer)\n            disposer.setSinkAndSubscription(sink: sinkAndSubscription.sink, subscription: sinkAndSubscription.subscription)\n\n            return disposer\n        } else {\n            return CurrentThreadScheduler.instance.schedule(()) { _ in\n                let disposer = SinkDisposer()\n                let sinkAndSubscription = self.run(observer, cancel: disposer)\n                disposer.setSinkAndSubscription(sink: sinkAndSubscription.sink, subscription: sinkAndSubscription.subscription)\n\n                return disposer\n            }\n        }\n    }\n\n    func run<Observer: ObserverType>(_: Observer, cancel _: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        rxAbstractMethod()\n    }\n}\n\nprivate final class SinkDisposer: Cancelable {\n    private enum DisposeState: Int32 {\n        case disposed = 1\n        case sinkAndSubscriptionSet = 2\n    }\n\n    private let state = AtomicInt(0)\n    private var sink: Disposable?\n    private var subscription: Disposable?\n\n    var isDisposed: Bool {\n        isFlagSet(state, DisposeState.disposed.rawValue)\n    }\n\n    func setSinkAndSubscription(sink: Disposable, subscription: Disposable) {\n        self.sink = sink\n        self.subscription = subscription\n\n        let previousState = fetchOr(state, DisposeState.sinkAndSubscriptionSet.rawValue)\n        if (previousState & DisposeState.sinkAndSubscriptionSet.rawValue) != 0 {\n            rxFatalError(\"Sink and subscription were already set\")\n        }\n\n        if (previousState & DisposeState.disposed.rawValue) != 0 {\n            sink.dispose()\n            subscription.dispose()\n            self.sink = nil\n            self.subscription = nil\n        }\n    }\n\n    func dispose() {\n        let previousState = fetchOr(state, DisposeState.disposed.rawValue)\n\n        if (previousState & DisposeState.disposed.rawValue) != 0 {\n            return\n        }\n\n        if (previousState & DisposeState.sinkAndSubscriptionSet.rawValue) != 0 {\n            guard let sink else {\n                rxFatalError(\"Sink not set\")\n            }\n            guard let subscription else {\n                rxFatalError(\"Subscription not set\")\n            }\n\n            sink.dispose()\n            subscription.dispose()\n\n            self.sink = nil\n            self.subscription = nil\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Range.swift",
    "content": "//\n//  Range.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType where Element: RxAbstractInteger {\n    /**\n     Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to generate and send out observer messages.\n\n     - seealso: [range operator on reactivex.io](http://reactivex.io/documentation/operators/range.html)\n\n     - parameter start: The value of the first integer in the sequence.\n     - parameter count: The number of sequential integers to generate.\n     - parameter scheduler: Scheduler to run the generator loop on.\n     - returns: An observable sequence that contains a range of sequential integral numbers.\n     */\n    static func range(start: Element, count: Element, scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Element> {\n        RangeProducer<Element>(start: start, count: count, scheduler: scheduler)\n    }\n}\n\nprivate final class RangeProducer<Element: RxAbstractInteger>: Producer<Element> {\n    fileprivate let start: Element\n    fileprivate let count: Element\n    fileprivate let scheduler: ImmediateSchedulerType\n\n    init(start: Element, count: Element, scheduler: ImmediateSchedulerType) {\n        guard count >= 0 else {\n            rxFatalError(\"count can't be negative\")\n        }\n\n        guard start &+ (count - 1) >= start || count == 0 else {\n            rxFatalError(\"overflow of count\")\n        }\n\n        self.start = start\n        self.count = count\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = RangeSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class RangeSink<Observer: ObserverType>: Sink<Observer> where Observer.Element: RxAbstractInteger {\n    typealias Parent = RangeProducer<Observer.Element>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.scheduleRecursive(0 as Observer.Element) { i, recurse in\n            if i < self.parent.count {\n                self.forwardOn(.next(self.parent.start + i))\n                recurse(i + 1)\n            } else {\n                self.forwardOn(.completed)\n                self.dispose()\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Reduce.swift",
    "content": "//\n//  Reduce.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Applies an `accumulator` function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified `seed` value is used as the initial accumulator value.\n\n     For aggregation behavior with incremental intermediate results, see `scan`.\n\n     - seealso: [reduce operator on reactivex.io](http://reactivex.io/documentation/operators/reduce.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: A accumulator function to be invoked on each element.\n     - parameter mapResult: A function to transform the final accumulator value into the result value.\n     - returns: An observable sequence containing a single element with the final accumulator value.\n     */\n    func reduce<A, Result>(_ seed: A, accumulator: @escaping (A, Element) throws -> A, mapResult: @escaping (A) throws -> Result)\n        -> Observable<Result>\n    {\n        Reduce(source: asObservable(), seed: seed, accumulator: accumulator, mapResult: mapResult)\n    }\n\n    /**\n     Applies an `accumulator` function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified `seed` value is used as the initial accumulator value.\n\n     For aggregation behavior with incremental intermediate results, see `scan`.\n\n     - seealso: [reduce operator on reactivex.io](http://reactivex.io/documentation/operators/reduce.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: A accumulator function to be invoked on each element.\n     - returns: An observable sequence containing a single element with the final accumulator value.\n     */\n    func reduce<A>(_ seed: A, accumulator: @escaping (A, Element) throws -> A)\n        -> Observable<A>\n    {\n        Reduce(source: asObservable(), seed: seed, accumulator: accumulator, mapResult: { $0 })\n    }\n}\n\nprivate final class ReduceSink<SourceType, AccumulateType, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias ResultType = Observer.Element\n    typealias Parent = Reduce<SourceType, AccumulateType, ResultType>\n\n    private let parent: Parent\n    private var accumulation: AccumulateType\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        accumulation = parent.seed\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case let .next(value):\n            do {\n                accumulation = try parent.accumulator(accumulation, value)\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case let .error(e):\n            forwardOn(.error(e))\n            dispose()\n        case .completed:\n            do {\n                let result = try parent.mapResult(accumulation)\n                forwardOn(.next(result))\n                forwardOn(.completed)\n                dispose()\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        }\n    }\n}\n\nprivate final class Reduce<SourceType, AccumulateType, ResultType>: Producer<ResultType> {\n    typealias AccumulatorType = (AccumulateType, SourceType) throws -> AccumulateType\n    typealias ResultSelectorType = (AccumulateType) throws -> ResultType\n\n    private let source: Observable<SourceType>\n    fileprivate let seed: AccumulateType\n    fileprivate let accumulator: AccumulatorType\n    fileprivate let mapResult: ResultSelectorType\n\n    init(source: Observable<SourceType>, seed: AccumulateType, accumulator: @escaping AccumulatorType, mapResult: @escaping ResultSelectorType) {\n        self.source = source\n        self.seed = seed\n        self.accumulator = accumulator\n        self.mapResult = mapResult\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == ResultType {\n        let sink = ReduceSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Repeat.swift",
    "content": "//\n//  Repeat.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Generates an observable sequence that repeats the given element infinitely, using the specified scheduler to send out observer messages.\n\n     - seealso: [repeat operator on reactivex.io](http://reactivex.io/documentation/operators/repeat.html)\n\n     - parameter element: Element to repeat.\n     - parameter scheduler: Scheduler to run the producer loop on.\n     - returns: An observable sequence that repeats the given element infinitely.\n     */\n    static func repeatElement(_ element: Element, scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Element> {\n        RepeatElement(element: element, scheduler: scheduler)\n    }\n}\n\nprivate final class RepeatElement<Element>: Producer<Element> {\n    fileprivate let element: Element\n    fileprivate let scheduler: ImmediateSchedulerType\n\n    init(element: Element, scheduler: ImmediateSchedulerType) {\n        self.element = element\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = RepeatElementSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class RepeatElementSink<Observer: ObserverType>: Sink<Observer> {\n    typealias Parent = RepeatElement<Observer.Element>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.scheduleRecursive(parent.element) { e, recurse in\n            self.forwardOn(.next(e))\n            recurse(e)\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/RetryWhen.swift",
    "content": "//\n//  RetryWhen.swift\n//  RxSwift\n//\n//  Created by Junior B. on 06/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    func retry<Error: Swift.Error>(when notificationHandler: @escaping (Observable<Error>) -> some ObservableType)\n        -> Observable<Element>\n    {\n        RetryWhenSequence(sources: InfiniteSequence(repeatedValue: asObservable()), notificationHandler: notificationHandler)\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    @available(*, deprecated, renamed: \"retry(when:)\")\n    func retryWhen<Error: Swift.Error>(_ notificationHandler: @escaping (Observable<Error>) -> some ObservableType)\n        -> Observable<Element>\n    {\n        retry(when: notificationHandler)\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    func retry(when notificationHandler: @escaping (Observable<Swift.Error>) -> some ObservableType)\n        -> Observable<Element>\n    {\n        RetryWhenSequence(sources: InfiniteSequence(repeatedValue: asObservable()), notificationHandler: notificationHandler)\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    @available(*, deprecated, renamed: \"retry(when:)\")\n    func retryWhen(_ notificationHandler: @escaping (Observable<Swift.Error>) -> some ObservableType)\n        -> Observable<Element>\n    {\n        RetryWhenSequence(sources: InfiniteSequence(repeatedValue: asObservable()), notificationHandler: notificationHandler)\n    }\n}\n\nprivate final class RetryTriggerSink<Sequence: Swift.Sequence, Observer: ObserverType, TriggerObservable: ObservableType, Error>:\n    ObserverType where Sequence.Element: ObservableType, Sequence.Element.Element == Observer.Element\n{\n    typealias Element = TriggerObservable.Element\n\n    typealias Parent = RetryWhenSequenceSinkIter<Sequence, Observer, TriggerObservable, Error>\n\n    private let parent: Parent\n\n    init(parent: Parent) {\n        self.parent = parent\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.parent.lastError = nil\n            parent.parent.schedule(.moveNext)\n        case let .error(e):\n            parent.parent.forwardOn(.error(e))\n            parent.parent.dispose()\n        case .completed:\n            parent.parent.forwardOn(.completed)\n            parent.parent.dispose()\n        }\n    }\n}\n\nprivate final class RetryWhenSequenceSinkIter<Sequence: Swift.Sequence, Observer: ObserverType, TriggerObservable: ObservableType, Error>:\n    ObserverType,\n    Disposable where Sequence.Element: ObservableType, Sequence.Element.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n    typealias Parent = RetryWhenSequenceSink<Sequence, Observer, TriggerObservable, Error>\n\n    fileprivate let parent: Parent\n    private let errorHandlerSubscription = SingleAssignmentDisposable()\n    private let subscription: Disposable\n\n    init(parent: Parent, subscription: Disposable) {\n        self.parent = parent\n        self.subscription = subscription\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.forwardOn(event)\n        case let .error(error):\n            parent.lastError = error\n\n            if let failedWith = error as? Error {\n                // dispose current subscription\n                subscription.dispose()\n\n                let errorHandlerSubscription = parent.notifier.subscribe(RetryTriggerSink(parent: self))\n                self.errorHandlerSubscription.setDisposable(errorHandlerSubscription)\n                parent.errorSubject.on(.next(failedWith))\n            } else {\n                parent.forwardOn(.error(error))\n                parent.dispose()\n            }\n        case .completed:\n            parent.forwardOn(event)\n            parent.dispose()\n        }\n    }\n\n    final func dispose() {\n        subscription.dispose()\n        errorHandlerSubscription.dispose()\n    }\n}\n\nprivate final class RetryWhenSequenceSink<Sequence: Swift.Sequence, Observer: ObserverType, TriggerObservable: ObservableType, Error>:\n    TailRecursiveSink<Sequence, Observer> where Sequence.Element: ObservableType, Sequence.Element.Element == Observer.Element\n{\n    typealias Element = Observer.Element\n    typealias Parent = RetryWhenSequence<Sequence, TriggerObservable, Error>\n\n    let lock = RecursiveLock()\n\n    private let parent: Parent\n\n    fileprivate var lastError: Swift.Error?\n    fileprivate let errorSubject = PublishSubject<Error>()\n    private let handler: Observable<TriggerObservable.Element>\n    fileprivate let notifier = PublishSubject<TriggerObservable.Element>()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        handler = parent.notificationHandler(errorSubject).asObservable()\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    override func done() {\n        if let lastError {\n            forwardOn(.error(lastError))\n            self.lastError = nil\n        } else {\n            forwardOn(.completed)\n        }\n\n        dispose()\n    }\n\n    override func extract(_: Observable<Element>) -> SequenceGenerator? {\n        // It is important to always return `nil` here because there are side effects in the `run` method\n        // that are dependent on particular `retryWhen` operator so single operator stack can't be reused in this\n        // case.\n        nil\n    }\n\n    override func subscribeToNext(_ source: Observable<Element>) -> Disposable {\n        let subscription = SingleAssignmentDisposable()\n        let iter = RetryWhenSequenceSinkIter(parent: self, subscription: subscription)\n        subscription.setDisposable(source.subscribe(iter))\n        return iter\n    }\n\n    override func run(_ sources: SequenceGenerator) -> Disposable {\n        let triggerSubscription = handler.subscribe(notifier.asObserver())\n        let superSubscription = super.run(sources)\n        return Disposables.create(superSubscription, triggerSubscription)\n    }\n}\n\nprivate final class RetryWhenSequence<Sequence: Swift.Sequence, TriggerObservable: ObservableType, Error>: Producer<Sequence.Element.Element> where Sequence.Element: ObservableType {\n    typealias Element = Sequence.Element.Element\n\n    private let sources: Sequence\n    fileprivate let notificationHandler: (Observable<Error>) -> TriggerObservable\n\n    init(sources: Sequence, notificationHandler: @escaping (Observable<Error>) -> TriggerObservable) {\n        self.sources = sources\n        self.notificationHandler = notificationHandler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = RetryWhenSequenceSink<Sequence, Observer, TriggerObservable, Error>(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run((sources.makeIterator(), nil))\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Sample.swift",
    "content": "//\n//  Sample.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Samples the source observable sequence using a sampler observable sequence producing sampling ticks.\n\n     Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence.\n\n     **In case there were no new elements between sampler ticks, you may provide a default value to be emitted, instead\n       to the resulting sequence otherwise no element is sent.**\n\n     - seealso: [sample operator on reactivex.io](http://reactivex.io/documentation/operators/sample.html)\n\n     - parameter sampler: Sampling tick sequence.\n     - parameter defaultValue: a value to return if there are no new elements between sampler ticks\n     - returns: Sampled observable sequence.\n     */\n    func sample(_ sampler: some ObservableType, defaultValue: Element? = nil)\n        -> Observable<Element>\n    {\n        Sample(source: asObservable(), sampler: sampler.asObservable(), defaultValue: defaultValue)\n    }\n}\n\nprivate final class SamplerSink<Observer: ObserverType, SampleType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Element = SampleType\n\n    typealias Parent = SampleSequenceSink<Observer, SampleType>\n\n    private let parent: Parent\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    init(parent: Parent) {\n        self.parent = parent\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next, .completed:\n            if let element = parent.element ?? parent.defaultValue {\n                parent.element = nil\n                parent.forwardOn(.next(element))\n            }\n\n            if parent.atEnd {\n                parent.forwardOn(.completed)\n                parent.dispose()\n            }\n        case let .error(e):\n            parent.forwardOn(.error(e))\n            parent.dispose()\n        }\n    }\n}\n\nprivate final class SampleSequenceSink<Observer: ObserverType, SampleType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Element = Observer.Element\n    typealias Parent = Sample<Element, SampleType>\n\n    fileprivate let parent: Parent\n    fileprivate let defaultValue: Element?\n\n    let lock = RecursiveLock()\n\n    // state\n    fileprivate var element = nil as Element?\n    fileprivate var atEnd = false\n\n    private let sourceSubscription = SingleAssignmentDisposable()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable, defaultValue: Element? = nil) {\n        self.parent = parent\n        self.defaultValue = defaultValue\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        sourceSubscription.setDisposable(parent.source.subscribe(self))\n        let samplerSubscription = parent.sampler.subscribe(SamplerSink(parent: self))\n\n        return Disposables.create(sourceSubscription, samplerSubscription)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            self.element = element\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            atEnd = true\n            sourceSubscription.dispose()\n        }\n    }\n}\n\nprivate final class Sample<Element, SampleType>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let sampler: Observable<SampleType>\n    fileprivate let defaultValue: Element?\n\n    init(source: Observable<Element>, sampler: Observable<SampleType>, defaultValue: Element? = nil) {\n        self.source = source\n        self.sampler = sampler\n        self.defaultValue = defaultValue\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SampleSequenceSink(parent: self, observer: observer, cancel: cancel, defaultValue: defaultValue)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Scan.swift",
    "content": "//\n//  Scan.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.\n\n     For aggregation behavior with no intermediate results, see `reduce`.\n\n     - seealso: [scan operator on reactivex.io](http://reactivex.io/documentation/operators/scan.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: An accumulator function to be invoked on each element.\n     - returns: An observable sequence containing the accumulated values.\n     */\n    func scan<A>(into seed: A, accumulator: @escaping (inout A, Element) throws -> Void)\n        -> Observable<A>\n    {\n        Scan(source: asObservable(), seed: seed, accumulator: accumulator)\n    }\n\n    /**\n     Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.\n\n     For aggregation behavior with no intermediate results, see `reduce`.\n\n     - seealso: [scan operator on reactivex.io](http://reactivex.io/documentation/operators/scan.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: An accumulator function to be invoked on each element.\n     - returns: An observable sequence containing the accumulated values.\n     */\n    func scan<A>(_ seed: A, accumulator: @escaping (A, Element) throws -> A)\n        -> Observable<A>\n    {\n        Scan(source: asObservable(), seed: seed) { acc, element in\n            let currentAcc = acc\n            acc = try accumulator(currentAcc, element)\n        }\n    }\n}\n\nprivate final class ScanSink<Element, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Accumulate = Observer.Element\n    typealias Parent = Scan<Element, Accumulate>\n\n    private let parent: Parent\n    private var accumulate: Accumulate\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        accumulate = parent.seed\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            do {\n                try parent.accumulator(&accumulate, element)\n                forwardOn(.next(accumulate))\n            } catch {\n                forwardOn(.error(error))\n                dispose()\n            }\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class Scan<Element, Accumulate>: Producer<Accumulate> {\n    typealias Accumulator = (inout Accumulate, Element) throws -> Void\n\n    private let source: Observable<Element>\n    fileprivate let seed: Accumulate\n    fileprivate let accumulator: Accumulator\n\n    init(source: Observable<Element>, seed: Accumulate, accumulator: @escaping Accumulator) {\n        self.source = source\n        self.seed = seed\n        self.accumulator = accumulator\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Accumulate {\n        let sink = ScanSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Sequence.swift",
    "content": "//\n//  Sequence.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 11/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    // MARK: of\n\n    /**\n     This method creates a new Observable instance with a variable number of elements.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter elements: Elements to generate.\n     - parameter scheduler: Scheduler to send elements on. If `nil`, elements are sent immediately on subscription.\n     - returns: The observable sequence whose elements are pulled from the given arguments.\n     */\n    static func of(_ elements: Element ..., scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Element> {\n        ObservableSequence(elements: elements, scheduler: scheduler)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Converts an array to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - returns: The observable sequence whose elements are pulled from the given enumerable sequence.\n     */\n    static func from(_ array: [Element], scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Element> {\n        ObservableSequence(elements: array, scheduler: scheduler)\n    }\n\n    /**\n     Converts a sequence to an observable sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - returns: The observable sequence whose elements are pulled from the given enumerable sequence.\n     */\n    static func from<Sequence: Swift.Sequence>(_ sequence: Sequence, scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Element> where Sequence.Element == Element {\n        ObservableSequence(elements: sequence, scheduler: scheduler)\n    }\n}\n\nprivate final class ObservableSequenceSink<Sequence: Swift.Sequence, Observer: ObserverType>: Sink<Observer> where Sequence.Element == Observer.Element {\n    typealias Parent = ObservableSequence<Sequence>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.scheduleRecursive(parent.elements.makeIterator()) { iterator, recurse in\n            var mutableIterator = iterator\n            if let next = mutableIterator.next() {\n                self.forwardOn(.next(next))\n                recurse(mutableIterator)\n            } else {\n                self.forwardOn(.completed)\n                self.dispose()\n            }\n        }\n    }\n}\n\nprivate final class ObservableSequence<Sequence: Swift.Sequence>: Producer<Sequence.Element> {\n    fileprivate let elements: Sequence\n    fileprivate let scheduler: ImmediateSchedulerType\n\n    init(elements: Sequence, scheduler: ImmediateSchedulerType) {\n        self.elements = elements\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ObservableSequenceSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/ShareReplayScope.swift",
    "content": "//\n//  ShareReplayScope.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/28/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n/// Subject lifetime scope\npublic enum SubjectLifetimeScope {\n    /**\n     **Each connection will have it's own subject instance to store replay events.**\n     **Connections will be isolated from each another.**\n\n     Configures the underlying implementation to behave equivalent to.\n\n     ```\n     source.multicast(makeSubject: { MySubject() }).refCount()\n     ```\n\n     **This is the recommended default.**\n\n     This has the following consequences:\n     * `retry` or `concat` operators will function as expected because terminating the sequence will clear internal state.\n     * Each connection to source observable sequence will use it's own subject.\n     * When the number of subscribers drops from 1 to 0 and connection to source sequence is disposed, subject will be cleared.\n\n     ```\n     let xs = Observable.deferred { () -> Observable<TimeInterval> in\n             print(\"Performing work ...\")\n             return Observable.just(Date().timeIntervalSince1970)\n         }\n         .share(replay: 1, scope: .whileConnected)\n\n     _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n     _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n     _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n\n     ```\n\n     Notice how time interval is different and `Performing work ...` is printed each time)\n\n     ```\n     Performing work ...\n     next 1495998900.82141\n     completed\n\n     Performing work ...\n     next 1495998900.82359\n     completed\n\n     Performing work ...\n     next 1495998900.82444\n     completed\n\n     ```\n\n     */\n    case whileConnected\n\n    /**\n      **One subject will store replay events for all connections to source.**\n      **Connections won't be isolated from each another.**\n\n      Configures the underlying implementation behave equivalent to.\n\n      ```\n      source.multicast(MySubject()).refCount()\n      ```\n\n      This has the following consequences:\n      * Using `retry` or `concat` operators after this operator usually isn't advised.\n      * Each connection to source observable sequence will share the same subject.\n      * After number of subscribers drops from 1 to 0 and connection to source observable sequence is dispose, this operator will\n        continue holding a reference to the same subject.\n        If at some later moment a new observer initiates a new connection to source it can potentially receive\n        some of the stale events received during previous connection.\n      * After source sequence terminates any new observer will always immediately receive replayed elements and terminal event.\n        No new subscriptions to source observable sequence will be attempted.\n\n      ```\n      let xs = Observable.deferred { () -> Observable<TimeInterval> in\n              print(\"Performing work ...\")\n              return Observable.just(Date().timeIntervalSince1970)\n          }\n          .share(replay: 1, scope: .forever)\n\n      _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n      _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n      _ = xs.subscribe(onNext: { print(\"next \\($0)\") }, onCompleted: { print(\"completed\\n\") })\n      ```\n\n      Notice how time interval is the same, replayed, and `Performing work ...` is printed only once\n\n      ```\n      Performing work ...\n      next 1495999013.76356\n      completed\n\n      next 1495999013.76356\n      completed\n\n      next 1495999013.76356\n      completed\n      ```\n\n     */\n    case forever\n}\n\npublic extension ObservableType {\n    /**\n     Returns an observable sequence that **shares a single subscription to the underlying sequence**, and immediately upon subscription replays  elements in buffer.\n\n     This operator is equivalent to:\n     * `.whileConnected`\n     ```\n     // Each connection will have it's own subject instance to store replay events.\n     // Connections will be isolated from each another.\n     source.multicast(makeSubject: { Replay.create(bufferSize: replay) }).refCount()\n     ```\n     * `.forever`\n     ```\n     // One subject will store replay events for all connections to source.\n     // Connections won't be isolated from each another.\n     source.multicast(Replay.create(bufferSize: replay)).refCount()\n     ```\n\n     It uses optimized versions of the operators for most common operations.\n\n     - parameter replay: Maximum element count of the replay buffer.\n     - parameter scope: Lifetime scope of sharing subject. For more information see `SubjectLifetimeScope` enum.\n\n     - seealso: [shareReplay operator on reactivex.io](http://reactivex.io/documentation/operators/replay.html)\n\n     - returns: An observable sequence that contains the elements of a sequence produced by multicasting the source sequence.\n     */\n    func share(replay: Int = 0, scope: SubjectLifetimeScope = .whileConnected)\n        -> Observable<Element>\n    {\n        switch scope {\n        case .forever:\n            switch replay {\n            case 0: multicast(PublishSubject()).refCount()\n            default: multicast(ReplaySubject.create(bufferSize: replay)).refCount()\n            }\n        case .whileConnected:\n            switch replay {\n            case 0: ShareWhileConnected(source: asObservable())\n            case 1: ShareReplay1WhileConnected(source: asObservable())\n            default: multicast(makeSubject: { ReplaySubject.create(bufferSize: replay) }).refCount()\n            }\n        }\n    }\n}\n\nprivate final class ShareReplay1WhileConnectedConnection<Element>:\n    ObserverType,\n    SynchronizedUnsubscribeType\n{\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    typealias Parent = ShareReplay1WhileConnected<Element>\n    private let parent: Parent\n    private let subscription = SingleAssignmentDisposable()\n\n    private let lock: RecursiveLock\n    private var disposed: Bool = false\n    fileprivate var observers = Observers()\n    fileprivate var element: Element?\n\n    init(parent: Parent, lock: RecursiveLock) {\n        self.parent = parent\n        self.lock = lock\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    final func on(_ event: Event<Element>) {\n        let observers = lock.performLocked { self.synchronized_on(event) }\n        dispatch(observers, event)\n    }\n\n    private final func synchronized_on(_ event: Event<Element>) -> Observers {\n        if disposed {\n            return Observers()\n        }\n\n        switch event {\n        case let .next(element):\n            self.element = element\n            return observers\n        case .error, .completed:\n            let observers = observers\n            synchronized_dispose()\n            return observers\n        }\n    }\n\n    final func connect() {\n        subscription.setDisposable(parent.source.subscribe(self))\n    }\n\n    private final func synchronized_dispose() {\n        disposed = true\n        if parent.connection === self {\n            parent.connection = nil\n        }\n        observers = Observers()\n    }\n\n    final func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        if lock.performLocked({ self.synchronized_unsubscribe(disposeKey) }) {\n            subscription.dispose()\n        }\n    }\n\n    @inline(__always)\n    private final func synchronized_unsubscribe(_ disposeKey: DisposeKey) -> Bool {\n        // if already unsubscribed, just return\n        if observers.removeKey(disposeKey) == nil {\n            return false\n        }\n\n        if observers.count == 0 {\n            synchronized_dispose()\n            return true\n        }\n\n        return false\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\n// optimized version of share replay for most common case\nprivate final class ShareReplay1WhileConnected<Element>:\n    Observable<Element>\n{\n    fileprivate typealias Connection = ShareReplay1WhileConnectedConnection<Element>\n\n    fileprivate let source: Observable<Element>\n\n    private let lock = RecursiveLock()\n\n    fileprivate var connection: Connection?\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.lock()\n        let connection = synchronized_subscribe(observer)\n        let count = connection.observers.count\n\n        let disposeKey = connection.observers.insert(observer.on)\n\n        let initialValueToReplay = connection.element\n        lock.unlock()\n\n        if let initialValueToReplay {\n            observer.on(.next(initialValueToReplay))\n        }\n\n        if count == 0 {\n            connection.connect()\n        }\n\n        return SubscriptionDisposable(owner: connection, key: disposeKey)\n    }\n\n    @inline(__always)\n    private func synchronized_subscribe<Observer: ObserverType>(_: Observer) -> Connection where Observer.Element == Element {\n        let connection: Connection\n\n        if let existingConnection = self.connection {\n            connection = existingConnection\n        } else {\n            connection = ShareReplay1WhileConnectedConnection<Element>(\n                parent: self,\n                lock: lock\n            )\n            self.connection = connection\n        }\n\n        return connection\n    }\n}\n\nprivate final class ShareWhileConnectedConnection<Element>:\n    ObserverType,\n    SynchronizedUnsubscribeType\n{\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    typealias Parent = ShareWhileConnected<Element>\n    private let parent: Parent\n    private let subscription = SingleAssignmentDisposable()\n\n    private let lock: RecursiveLock\n    private var disposed: Bool = false\n    fileprivate var observers = Observers()\n\n    init(parent: Parent, lock: RecursiveLock) {\n        self.parent = parent\n        self.lock = lock\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    final func on(_ event: Event<Element>) {\n        let observers = lock.performLocked { self.synchronized_on(event) }\n        dispatch(observers, event)\n    }\n\n    private final func synchronized_on(_ event: Event<Element>) -> Observers {\n        if disposed {\n            return Observers()\n        }\n\n        switch event {\n        case .next:\n            return observers\n        case .error, .completed:\n            let observers = observers\n            synchronized_dispose()\n            return observers\n        }\n    }\n\n    final func connect() {\n        subscription.setDisposable(parent.source.subscribe(self))\n    }\n\n    final func synchronized_subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.performLocked {\n            let disposeKey = self.observers.insert(observer.on)\n\n            return SubscriptionDisposable(owner: self, key: disposeKey)\n        }\n    }\n\n    private final func synchronized_dispose() {\n        disposed = true\n        if parent.connection === self {\n            parent.connection = nil\n        }\n        observers = Observers()\n    }\n\n    final func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        if lock.performLocked({ self.synchronized_unsubscribe(disposeKey) }) {\n            subscription.dispose()\n        }\n    }\n\n    @inline(__always)\n    private final func synchronized_unsubscribe(_ disposeKey: DisposeKey) -> Bool {\n        // if already unsubscribed, just return\n        if observers.removeKey(disposeKey) == nil {\n            return false\n        }\n\n        if observers.count == 0 {\n            synchronized_dispose()\n            return true\n        }\n\n        return false\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\n// optimized version of share replay for most common case\nprivate final class ShareWhileConnected<Element>:\n    Observable<Element>\n{\n    fileprivate typealias Connection = ShareWhileConnectedConnection<Element>\n\n    fileprivate let source: Observable<Element>\n\n    private let lock = RecursiveLock()\n\n    fileprivate var connection: Connection?\n\n    init(source: Observable<Element>) {\n        self.source = source\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.lock()\n        let connection = synchronized_subscribe(observer)\n        let count = connection.observers.count\n\n        lock.unlock()\n        let disposable = connection.synchronized_subscribe(observer)\n\n        if count == 0 {\n            connection.connect()\n        }\n\n        return disposable\n    }\n\n    @inline(__always)\n    private func synchronized_subscribe<Observer: ObserverType>(_: Observer) -> Connection where Observer.Element == Element {\n        let connection: Connection\n\n        if let existingConnection = self.connection {\n            connection = existingConnection\n        } else {\n            connection = ShareWhileConnectedConnection<Element>(\n                parent: self,\n                lock: lock\n            )\n            self.connection = connection\n        }\n\n        return connection\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/SingleAsync.swift",
    "content": "//\n//  SingleAsync.swift\n//  RxSwift\n//\n//  Created by Junior B. on 09/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     The single operator is similar to first, but throws a `RxError.noElements` or `RxError.moreThanOneElement`\n     if the source Observable does not emit exactly one element before successfully completing.\n\n     - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)\n\n     - returns: An observable sequence that emits a single element or throws an exception if more (or none) of them are emitted.\n     */\n    func single()\n        -> Observable<Element>\n    {\n        SingleAsync(source: asObservable())\n    }\n\n    /**\n     The single operator is similar to first, but throws a `RxError.NoElements` or `RxError.MoreThanOneElement`\n     if the source Observable does not emit exactly one element before successfully completing.\n\n     - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that emits a single element or throws an exception if more (or none) of them are emitted.\n     */\n    func single(_ predicate: @escaping (Element) throws -> Bool)\n        -> Observable<Element>\n    {\n        SingleAsync(source: asObservable(), predicate: predicate)\n    }\n}\n\nprivate final class SingleAsyncSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = SingleAsync<Element>\n\n    private let parent: Parent\n    private var seenValue: Bool = false\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            do {\n                let forward = try parent.predicate?(value) ?? true\n                if !forward {\n                    return\n                }\n            } catch {\n                forwardOn(.error(error as Swift.Error))\n                dispose()\n                return\n            }\n\n            if seenValue {\n                forwardOn(.error(RxError.moreThanOneElement))\n                dispose()\n                return\n            }\n\n            seenValue = true\n            forwardOn(.next(value))\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if seenValue {\n                forwardOn(.completed)\n            } else {\n                forwardOn(.error(RxError.noElements))\n            }\n            dispose()\n        }\n    }\n}\n\nfinal class SingleAsync<Element>: Producer<Element> {\n    typealias Predicate = (Element) throws -> Bool\n\n    private let source: Observable<Element>\n    fileprivate let predicate: Predicate?\n\n    init(source: Observable<Element>, predicate: Predicate? = nil) {\n        self.source = source\n        self.predicate = predicate\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SingleAsyncSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Sink.swift",
    "content": "//\n//  Sink.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nclass Sink<Observer: ObserverType>: Disposable {\n    fileprivate let observer: Observer\n    fileprivate let cancel: Cancelable\n    private let disposed = AtomicInt(0)\n\n    #if DEBUG\n    private let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    init(observer: Observer, cancel: Cancelable) {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n        self.observer = observer\n        self.cancel = cancel\n    }\n\n    final func forwardOn(_ event: Event<Observer.Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        if isFlagSet(disposed, 1) {\n            return\n        }\n        observer.on(event)\n    }\n\n    final func forwarder() -> SinkForward<Observer> {\n        SinkForward(forward: self)\n    }\n\n    final var isDisposed: Bool {\n        isFlagSet(disposed, 1)\n    }\n\n    func dispose() {\n        fetchOr(disposed, 1)\n        cancel.dispose()\n    }\n\n    deinit {\n        #if TRACE_RESOURCES\n        _ = Resources.decrementTotal()\n        #endif\n    }\n}\n\nfinal class SinkForward<Observer: ObserverType>: ObserverType {\n    typealias Element = Observer.Element\n\n    private let forward: Sink<Observer>\n\n    init(forward: Sink<Observer>) {\n        self.forward = forward\n    }\n\n    final func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forward.observer.on(event)\n        case .error, .completed:\n            forward.observer.on(event)\n            forward.cancel.dispose()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Skip.swift",
    "content": "//\n//  Skip.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Bypasses a specified number of elements in an observable sequence and then returns the remaining elements.\n\n     - seealso: [skip operator on reactivex.io](http://reactivex.io/documentation/operators/skip.html)\n\n     - parameter count: The number of elements to skip before returning the remaining elements.\n     - returns: An observable sequence that contains the elements that occur after the specified index in the input sequence.\n     */\n    func skip(_ count: Int)\n        -> Observable<Element>\n    {\n        SkipCount(source: asObservable(), count: count)\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Skips elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.\n\n     - seealso: [skip operator on reactivex.io](http://reactivex.io/documentation/operators/skip.html)\n\n     - parameter duration: Duration for skipping elements from the start of the sequence.\n     - parameter scheduler: Scheduler to run the timer on.\n     - returns: An observable sequence with the elements skipped during the specified duration from the start of the source sequence.\n     */\n    func skip(_ duration: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        SkipTime(source: asObservable(), duration: duration, scheduler: scheduler)\n    }\n}\n\n// count version\n\nprivate final class SkipCountSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = SkipCount<Element>\n\n    let parent: Parent\n\n    var remaining: Int\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        remaining = parent.count\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            if remaining <= 0 {\n                forwardOn(.next(value))\n            } else {\n                remaining -= 1\n            }\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class SkipCount<Element>: Producer<Element> {\n    let source: Observable<Element>\n    let count: Int\n\n    init(source: Observable<Element>, count: Int) {\n        self.source = source\n        self.count = count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SkipCountSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// time version\n\nprivate final class SkipTimeSink<Element, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == Element {\n    typealias Parent = SkipTime<Element>\n\n    let parent: Parent\n\n    // state\n    var open = false\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            if open {\n                forwardOn(.next(value))\n            }\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n\n    func tick() {\n        open = true\n    }\n\n    func run() -> Disposable {\n        let disposeTimer = parent.scheduler.scheduleRelative((), dueTime: parent.duration) { _ in\n            self.tick()\n            return Disposables.create()\n        }\n\n        let disposeSubscription = parent.source.subscribe(self)\n\n        return Disposables.create(disposeTimer, disposeSubscription)\n    }\n}\n\nprivate final class SkipTime<Element>: Producer<Element> {\n    let source: Observable<Element>\n    let duration: RxTimeInterval\n    let scheduler: SchedulerType\n\n    init(source: Observable<Element>, duration: RxTimeInterval, scheduler: SchedulerType) {\n        self.source = source\n        self.scheduler = scheduler\n        self.duration = duration\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SkipTimeSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/SkipUntil.swift",
    "content": "//\n//  SkipUntil.swift\n//  RxSwift\n//\n//  Created by Yury Korolev on 10/3/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.\n\n     - seealso: [skipUntil operator on reactivex.io](http://reactivex.io/documentation/operators/skipuntil.html)\n\n     - parameter other: Observable sequence that starts propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.\n     */\n    func skip(until other: some ObservableType)\n        -> Observable<Element>\n    {\n        SkipUntil(source: asObservable(), other: other.asObservable())\n    }\n\n    /**\n     Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.\n\n     - seealso: [skipUntil operator on reactivex.io](http://reactivex.io/documentation/operators/skipuntil.html)\n\n     - parameter other: Observable sequence that starts propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.\n     */\n    @available(*, deprecated, renamed: \"skip(until:)\")\n    func skipUntil(_ other: some ObservableType)\n        -> Observable<Element>\n    {\n        skip(until: other)\n    }\n}\n\nprivate final class SkipUntilSinkOther<Other, Observer: ObserverType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Parent = SkipUntilSink<Other, Observer>\n    typealias Element = Other\n\n    private let parent: Parent\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    let subscription = SingleAssignmentDisposable()\n\n    init(parent: Parent) {\n        self.parent = parent\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.forwardElements = true\n            subscription.dispose()\n        case let .error(e):\n            parent.forwardOn(.error(e))\n            parent.dispose()\n        case .completed:\n            subscription.dispose()\n        }\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\nprivate final class SkipUntilSink<Other, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Element = Observer.Element\n    typealias Parent = SkipUntil<Element, Other>\n\n    let lock = RecursiveLock()\n    private let parent: Parent\n    fileprivate var forwardElements = false\n\n    private let sourceSubscription = SingleAssignmentDisposable()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            if forwardElements {\n                forwardOn(event)\n            }\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if forwardElements {\n                forwardOn(event)\n            }\n            dispose()\n        }\n    }\n\n    func run() -> Disposable {\n        let sourceSubscription = parent.source.subscribe(self)\n        let otherObserver = SkipUntilSinkOther(parent: self)\n        let otherSubscription = parent.other.subscribe(otherObserver)\n        self.sourceSubscription.setDisposable(sourceSubscription)\n        otherObserver.subscription.setDisposable(otherSubscription)\n\n        return Disposables.create(sourceSubscription, otherObserver.subscription)\n    }\n}\n\nprivate final class SkipUntil<Element, Other>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let other: Observable<Other>\n\n    init(source: Observable<Element>, other: Observable<Other>) {\n        self.source = source\n        self.other = other\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SkipUntilSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/SkipWhile.swift",
    "content": "//\n//  SkipWhile.swift\n//  RxSwift\n//\n//  Created by Yury Korolev on 10/9/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.\n\n     - seealso: [skipWhile operator on reactivex.io](http://reactivex.io/documentation/operators/skipwhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.\n     */\n    func skip(while predicate: @escaping (Element) throws -> Bool) -> Observable<Element> {\n        SkipWhile(source: asObservable(), predicate: predicate)\n    }\n\n    /**\n     Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.\n\n     - seealso: [skipWhile operator on reactivex.io](http://reactivex.io/documentation/operators/skipwhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.\n     */\n    @available(*, deprecated, renamed: \"skip(while:)\")\n    func skipWhile(_ predicate: @escaping (Element) throws -> Bool) -> Observable<Element> {\n        SkipWhile(source: asObservable(), predicate: predicate)\n    }\n}\n\nprivate final class SkipWhileSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = SkipWhile<Element>\n\n    private let parent: Parent\n    private var running = false\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            if !running {\n                do {\n                    running = try !parent.predicate(value)\n                } catch let e {\n                    self.forwardOn(.error(e))\n                    self.dispose()\n                    return\n                }\n            }\n\n            if running {\n                forwardOn(.next(value))\n            }\n        case .error, .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class SkipWhile<Element>: Producer<Element> {\n    typealias Predicate = (Element) throws -> Bool\n\n    private let source: Observable<Element>\n    fileprivate let predicate: Predicate\n\n    init(source: Observable<Element>, predicate: @escaping Predicate) {\n        self.source = source\n        self.predicate = predicate\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SkipWhileSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/StartWith.swift",
    "content": "//\n//  StartWith.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Prepends a sequence of values to an observable sequence.\n\n     - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html)\n\n     - parameter elements: Elements to prepend to the specified sequence.\n     - returns: The source sequence prepended with the specified values.\n     */\n    func startWith(_ elements: Element ...)\n        -> Observable<Element>\n    {\n        StartWith(source: asObservable(), elements: elements)\n    }\n}\n\nprivate final class StartWith<Element>: Producer<Element> {\n    let elements: [Element]\n    let source: Observable<Element>\n\n    init(source: Observable<Element>, elements: [Element]) {\n        self.source = source\n        self.elements = elements\n        super.init()\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel _: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        for e in elements {\n            observer.on(.next(e))\n        }\n\n        return (sink: Disposables.create(), subscription: source.subscribe(observer))\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/SubscribeOn.swift",
    "content": "//\n//  SubscribeOn.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\n     scheduler.\n\n     This operation is not commonly used.\n\n     This only performs the side-effects of subscription and unsubscription on the specified scheduler.\n\n     In order to invoke observer callbacks on a `scheduler`, use `observeOn`.\n\n     - seealso: [subscribeOn operator on reactivex.io](http://reactivex.io/documentation/operators/subscribeon.html)\n\n     - parameter scheduler: Scheduler to perform subscription and unsubscription actions on.\n     - returns: The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.\n     */\n    func subscribe(on scheduler: ImmediateSchedulerType)\n        -> Observable<Element>\n    {\n        SubscribeOn(source: self, scheduler: scheduler)\n    }\n\n    /**\n     Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\n     scheduler.\n\n     This operation is not commonly used.\n\n     This only performs the side-effects of subscription and unsubscription on the specified scheduler.\n\n     In order to invoke observer callbacks on a `scheduler`, use `observeOn`.\n\n     - seealso: [subscribeOn operator on reactivex.io](http://reactivex.io/documentation/operators/subscribeon.html)\n\n     - parameter scheduler: Scheduler to perform subscription and unsubscription actions on.\n     - returns: The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.\n     */\n    @available(*, deprecated, renamed: \"subscribe(on:)\")\n    func subscribeOn(_ scheduler: ImmediateSchedulerType)\n        -> Observable<Element>\n    {\n        subscribe(on: scheduler)\n    }\n}\n\nprivate final class SubscribeOnSink<Ob: ObservableType, Observer: ObserverType>: Sink<Observer>, ObserverType where Ob.Element == Observer.Element {\n    typealias Element = Observer.Element\n    typealias Parent = SubscribeOn<Ob>\n\n    let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        forwardOn(event)\n\n        if event.isStopEvent {\n            dispose()\n        }\n    }\n\n    func run() -> Disposable {\n        let disposeEverything = SerialDisposable()\n        let cancelSchedule = SingleAssignmentDisposable()\n\n        disposeEverything.disposable = cancelSchedule\n\n        let disposeSchedule = parent.scheduler.schedule(()) { _ -> Disposable in\n            let subscription = self.parent.source.subscribe(self)\n            disposeEverything.disposable = ScheduledDisposable(scheduler: self.parent.scheduler, disposable: subscription)\n            return Disposables.create()\n        }\n\n        cancelSchedule.setDisposable(disposeSchedule)\n\n        return disposeEverything\n    }\n}\n\nprivate final class SubscribeOn<Ob: ObservableType>: Producer<Ob.Element> {\n    let source: Ob\n    let scheduler: ImmediateSchedulerType\n\n    init(source: Ob, scheduler: ImmediateSchedulerType) {\n        self.source = source\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Ob.Element {\n        let sink = SubscribeOnSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Switch.swift",
    "content": "//\n//  Switch.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence into a new sequence of observable sequences and then\n     transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.\n\n     It is a combination of `map` + `switchLatest` operator\n\n     - seealso: [flatMapLatest operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\n     Observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func flatMapLatest<Source: ObservableConvertibleType>(_ selector: @escaping (Element) throws -> Source)\n        -> Observable<Source.Element>\n    {\n        FlatMapLatest(source: asObservable(), selector: selector)\n    }\n\n    /**\n     Projects each element of an observable sequence into a new sequence of observable sequences and then\n     transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.\n\n     It is a combination of `map` + `switchLatest` operator\n\n     - seealso: [flatMapLatest operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\n     Observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func flatMapLatest<Source: InfallibleType>(_ selector: @escaping (Element) throws -> Source)\n        -> Infallible<Source.Element>\n    {\n        Infallible(flatMapLatest(selector))\n    }\n}\n\npublic extension ObservableType where Element: ObservableConvertibleType {\n    /**\n     Transforms an observable sequence of observable sequences into an observable sequence\n     producing values only from the most recent observable sequence.\n\n     Each time a new inner observable sequence is received, unsubscribe from the\n     previous inner observable sequence.\n\n     - seealso: [switch operator on reactivex.io](http://reactivex.io/documentation/operators/switch.html)\n\n     - returns: The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func switchLatest() -> Observable<Element.Element> {\n        Switch(source: asObservable())\n    }\n}\n\nprivate class SwitchSink<SourceType, Source: ObservableConvertibleType, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType where Source.Element == Observer.Element\n{\n    typealias Element = SourceType\n\n    private let subscriptions: SingleAssignmentDisposable = .init()\n    private let innerSubscription: SerialDisposable = .init()\n\n    let lock = RecursiveLock()\n\n    // state\n    fileprivate var stopped = false\n    fileprivate var latest = 0\n    fileprivate var hasLatest = false\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run(_ source: Observable<SourceType>) -> Disposable {\n        let subscription = source.subscribe(self)\n        subscriptions.setDisposable(subscription)\n        return Disposables.create(subscriptions, innerSubscription)\n    }\n\n    func performMap(_: SourceType) throws -> Source {\n        rxAbstractMethod()\n    }\n\n    @inline(__always)\n    private final func nextElementArrived(element: Element) -> (Int, Observable<Source.Element>)? {\n        lock.lock(); defer { self.lock.unlock() }\n\n        do {\n            let observable = try performMap(element).asObservable()\n            hasLatest = true\n            latest = latest &+ 1\n            return (latest, observable)\n        } catch {\n            forwardOn(.error(error))\n            dispose()\n        }\n\n        return nil\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            if let (latest, observable) = nextElementArrived(element: element) {\n                let d = SingleAssignmentDisposable()\n                innerSubscription.disposable = d\n\n                let observer = SwitchSinkIter(parent: self, id: latest, this: d)\n                let disposable = observable.subscribe(observer)\n                d.setDisposable(disposable)\n            }\n        case let .error(error):\n            lock.lock(); defer { self.lock.unlock() }\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            lock.lock(); defer { self.lock.unlock() }\n            stopped = true\n\n            subscriptions.dispose()\n\n            if !hasLatest {\n                forwardOn(.completed)\n                dispose()\n            }\n        }\n    }\n}\n\nprivate final class SwitchSinkIter<SourceType, Source: ObservableConvertibleType, Observer: ObserverType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType where Source.Element == Observer.Element\n{\n    typealias Element = Source.Element\n    typealias Parent = SwitchSink<SourceType, Source, Observer>\n\n    private let parent: Parent\n    private let id: Int\n    private let this: Disposable\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    init(parent: Parent, id: Int, this: Disposable) {\n        self.parent = parent\n        self.id = id\n        self.this = this\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next: break\n        case .error, .completed:\n            this.dispose()\n        }\n\n        if parent.latest != id {\n            return\n        }\n\n        switch event {\n        case .next:\n            parent.forwardOn(event)\n        case .error:\n            parent.forwardOn(event)\n            parent.dispose()\n        case .completed:\n            parent.hasLatest = false\n            if parent.stopped {\n                parent.forwardOn(event)\n                parent.dispose()\n            }\n        }\n    }\n}\n\n// MARK: Specializations\n\nprivate final class SwitchIdentitySink<Source: ObservableConvertibleType, Observer: ObserverType>: SwitchSink<Source, Source, Observer>\n    where Observer.Element == Source.Element\n{\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    override func performMap(_ element: Source) throws -> Source {\n        element\n    }\n}\n\nprivate final class MapSwitchSink<SourceType, Source: ObservableConvertibleType, Observer: ObserverType>: SwitchSink<SourceType, Source, Observer> where Observer.Element == Source.Element {\n    typealias Selector = (SourceType) throws -> Source\n\n    private let selector: Selector\n\n    init(selector: @escaping Selector, observer: Observer, cancel: Cancelable) {\n        self.selector = selector\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    override func performMap(_ element: SourceType) throws -> Source {\n        try selector(element)\n    }\n}\n\n// MARK: Producers\n\nprivate final class Switch<Source: ObservableConvertibleType>: Producer<Source.Element> {\n    private let source: Observable<Source>\n\n    init(source: Observable<Source>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Source.Element {\n        let sink = SwitchIdentitySink<Source, Observer>(observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class FlatMapLatest<SourceType, Source: ObservableConvertibleType>: Producer<Source.Element> {\n    typealias Selector = (SourceType) throws -> Source\n\n    private let source: Observable<SourceType>\n    private let selector: Selector\n\n    init(source: Observable<SourceType>, selector: @escaping Selector) {\n        self.source = source\n        self.selector = selector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Source.Element {\n        let sink = MapSwitchSink<SourceType, Source, Observer>(selector: selector, observer: observer, cancel: cancel)\n        let subscription = sink.run(source)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/SwitchIfEmpty.swift",
    "content": "//\n//  SwitchIfEmpty.swift\n//  RxSwift\n//\n//  Created by sergdort on 23/12/2016.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns the elements of the specified sequence or `switchTo` sequence if the sequence is empty.\n\n     - seealso: [DefaultIfEmpty operator on reactivex.io](http://reactivex.io/documentation/operators/defaultifempty.html)\n\n     - parameter other: Observable sequence being returned when source sequence is empty.\n     - returns: Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.\n     */\n    func ifEmpty(switchTo other: Observable<Element>) -> Observable<Element> {\n        SwitchIfEmpty(source: asObservable(), ifEmpty: other)\n    }\n}\n\nprivate final class SwitchIfEmpty<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    private let ifEmpty: Observable<Element>\n\n    init(source: Observable<Element>, ifEmpty: Observable<Element>) {\n        self.source = source\n        self.ifEmpty = ifEmpty\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = SwitchIfEmptySink(\n            ifEmpty: ifEmpty,\n            observer: observer,\n            cancel: cancel\n        )\n        let subscription = sink.run(source.asObservable())\n\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class SwitchIfEmptySink<Observer: ObserverType>: Sink<Observer>,\n    ObserverType\n{\n    typealias Element = Observer.Element\n\n    private let ifEmpty: Observable<Element>\n    private var isEmpty = true\n    private let ifEmptySubscription = SingleAssignmentDisposable()\n\n    init(ifEmpty: Observable<Element>, observer: Observer, cancel: Cancelable) {\n        self.ifEmpty = ifEmpty\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run(_ source: Observable<Observer.Element>) -> Disposable {\n        let subscription = source.subscribe(self)\n        return Disposables.create(subscription, ifEmptySubscription)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            isEmpty = false\n            forwardOn(event)\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            guard isEmpty else {\n                forwardOn(.completed)\n                dispose()\n                return\n            }\n            let ifEmptySink = SwitchIfEmptySinkIter(parent: self)\n            ifEmptySubscription.setDisposable(ifEmpty.subscribe(ifEmptySink))\n        }\n    }\n}\n\nprivate final class SwitchIfEmptySinkIter<Observer: ObserverType>:\n    ObserverType\n{\n    typealias Element = Observer.Element\n    typealias Parent = SwitchIfEmptySink<Observer>\n\n    private let parent: Parent\n\n    init(parent: Parent) {\n        self.parent = parent\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.forwardOn(event)\n        case .error:\n            parent.forwardOn(event)\n            parent.dispose()\n        case .completed:\n            parent.forwardOn(event)\n            parent.dispose()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Take.swift",
    "content": "//\n//  Take.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Returns a specified number of contiguous elements from the start of an observable sequence.\n\n     - seealso: [take operator on reactivex.io](http://reactivex.io/documentation/operators/take.html)\n\n     - parameter count: The number of elements to return.\n     - returns: An observable sequence that contains the specified number of elements from the start of the input sequence.\n     */\n    func take(_ count: Int)\n        -> Observable<Element>\n    {\n        if count == 0 {\n            Observable.empty()\n        } else {\n            TakeCount(source: asObservable(), count: count)\n        }\n    }\n}\n\npublic extension ObservableType {\n    /**\n     Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.\n\n     - seealso: [take operator on reactivex.io](http://reactivex.io/documentation/operators/take.html)\n\n     - parameter duration: Duration for taking elements from the start of the sequence.\n     - parameter scheduler: Scheduler to run the timer on.\n     - returns: An observable sequence with the elements taken during the specified duration from the start of the source sequence.\n     */\n    func take(for duration: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        TakeTime(source: asObservable(), duration: duration, scheduler: scheduler)\n    }\n\n    /**\n     Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.\n\n     - seealso: [take operator on reactivex.io](http://reactivex.io/documentation/operators/take.html)\n\n     - parameter duration: Duration for taking elements from the start of the sequence.\n     - parameter scheduler: Scheduler to run the timer on.\n     - returns: An observable sequence with the elements taken during the specified duration from the start of the source sequence.\n     */\n    @available(*, deprecated, renamed: \"take(for:scheduler:)\")\n    func take(_ duration: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        take(for: duration, scheduler: scheduler)\n    }\n}\n\n// count version\n\nprivate final class TakeCountSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = TakeCount<Element>\n\n    private let parent: Parent\n\n    private var remaining: Int\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        remaining = parent.count\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            if remaining > 0 {\n                remaining -= 1\n\n                forwardOn(.next(value))\n\n                if remaining == 0 {\n                    forwardOn(.completed)\n                    dispose()\n                }\n            }\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class TakeCount<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    fileprivate let count: Int\n\n    init(source: Observable<Element>, count: Int) {\n        if count < 0 {\n            rxFatalError(\"count can't be negative\")\n        }\n        self.source = source\n        self.count = count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TakeCountSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// time version\n\nprivate final class TakeTimeSink<Element, Observer: ObserverType>:\n    Sink<Observer>,\n    LockOwnerType,\n    ObserverType,\n    SynchronizedOnType where Observer.Element == Element\n{\n    typealias Parent = TakeTime<Element>\n\n    private let parent: Parent\n\n    let lock = RecursiveLock()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            forwardOn(.next(value))\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n\n    func tick() {\n        lock.performLocked {\n            self.forwardOn(.completed)\n            self.dispose()\n        }\n    }\n\n    func run() -> Disposable {\n        let disposeTimer = parent.scheduler.scheduleRelative((), dueTime: parent.duration) { _ in\n            self.tick()\n            return Disposables.create()\n        }\n\n        let disposeSubscription = parent.source.subscribe(self)\n\n        return Disposables.create(disposeTimer, disposeSubscription)\n    }\n}\n\nprivate final class TakeTime<Element>: Producer<Element> {\n    typealias TimeInterval = RxTimeInterval\n\n    fileprivate let source: Observable<Element>\n    fileprivate let duration: TimeInterval\n    fileprivate let scheduler: SchedulerType\n\n    init(source: Observable<Element>, duration: TimeInterval, scheduler: SchedulerType) {\n        self.source = source\n        self.scheduler = scheduler\n        self.duration = duration\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TakeTimeSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/TakeLast.swift",
    "content": "//\n//  TakeLast.swift\n//  RxSwift\n//\n//  Created by Tomi Koskinen on 25/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns a specified number of contiguous elements from the end of an observable sequence.\n\n     This operator accumulates a buffer with a length enough to store elements count elements. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed.\n\n     - seealso: [takeLast operator on reactivex.io](http://reactivex.io/documentation/operators/takelast.html)\n\n     - parameter count: Number of elements to take from the end of the source sequence.\n     - returns: An observable sequence containing the specified number of elements from the end of the source sequence.\n     */\n    func takeLast(_ count: Int)\n        -> Observable<Element>\n    {\n        TakeLast(source: asObservable(), count: count)\n    }\n}\n\nprivate final class TakeLastSink<Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = TakeLast<Element>\n\n    private let parent: Parent\n\n    private var elements: Queue<Element>\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        elements = Queue<Element>(capacity: parent.count + 1)\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            elements.enqueue(value)\n            if elements.count > parent.count {\n                _ = elements.dequeue()\n            }\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            for e in elements {\n                forwardOn(.next(e))\n            }\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class TakeLast<Element>: Producer<Element> {\n    private let source: Observable<Element>\n    fileprivate let count: Int\n\n    init(source: Observable<Element>, count: Int) {\n        if count < 0 {\n            rxFatalError(\"count can't be negative\")\n        }\n        self.source = source\n        self.count = count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TakeLastSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/TakeWithPredicate.swift",
    "content": "//\n//  TakeWithPredicate.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Returns the elements from the source observable sequence until the other observable sequence produces an element.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter other: Observable sequence that terminates propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.\n     */\n    func take(until other: some ObservableType)\n        -> Observable<Element>\n    {\n        TakeUntil(source: asObservable(), other: other.asObservable())\n    }\n\n    /**\n     Returns elements from an observable sequence until the specified condition is true.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - parameter behavior: Whether or not to include the last element matching the predicate. Defaults to `exclusive`.\n\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.\n     */\n    func take(\n        until predicate: @escaping (Element) throws -> Bool,\n        behavior: TakeBehavior = .exclusive\n    )\n        -> Observable<Element>\n    {\n        TakeUntilPredicate(\n            source: asObservable(),\n            behavior: behavior,\n            predicate: predicate\n        )\n    }\n\n    /**\n     Returns elements from an observable sequence as long as a specified condition is true.\n\n     - seealso: [takeWhile operator on reactivex.io](http://reactivex.io/documentation/operators/takewhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.\n     */\n    func take(\n        while predicate: @escaping (Element) throws -> Bool,\n        behavior: TakeBehavior = .exclusive\n    )\n        -> Observable<Element>\n    {\n        take(until: { try !predicate($0) }, behavior: behavior)\n    }\n\n    /**\n     Returns the elements from the source observable sequence until the other observable sequence produces an element.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter other: Observable sequence that terminates propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.\n     */\n    @available(*, deprecated, renamed: \"take(until:)\")\n    func takeUntil(_ other: some ObservableType)\n        -> Observable<Element>\n    {\n        take(until: other)\n    }\n\n    /**\n     Returns elements from an observable sequence until the specified condition is true.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter behavior: Whether or not to include the last element matching the predicate.\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.\n     */\n    @available(*, deprecated, renamed: \"take(until:behavior:)\")\n    func takeUntil(\n        _ behavior: TakeBehavior,\n        predicate: @escaping (Element) throws -> Bool\n    )\n        -> Observable<Element>\n    {\n        take(until: predicate, behavior: behavior)\n    }\n\n    /**\n     Returns elements from an observable sequence as long as a specified condition is true.\n\n     - seealso: [takeWhile operator on reactivex.io](http://reactivex.io/documentation/operators/takewhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.\n     */\n    @available(*, deprecated, renamed: \"take(while:)\")\n    func takeWhile(_ predicate: @escaping (Element) throws -> Bool)\n        -> Observable<Element>\n    {\n        take(until: { try !predicate($0) }, behavior: .exclusive)\n    }\n}\n\n/// Behaviors for the take operator family.\npublic enum TakeBehavior {\n    /// Include the last element matching the predicate.\n    case inclusive\n\n    /// Exclude the last element matching the predicate.\n    case exclusive\n}\n\n// MARK: - TakeUntil Observable\n\nprivate final class TakeUntilSinkOther<Other, Observer: ObserverType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Parent = TakeUntilSink<Other, Observer>\n    typealias Element = Other\n\n    private let parent: Parent\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    fileprivate let subscription = SingleAssignmentDisposable()\n\n    init(parent: Parent) {\n        self.parent = parent\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            parent.forwardOn(.completed)\n            parent.dispose()\n        case let .error(e):\n            parent.forwardOn(.error(e))\n            parent.dispose()\n        case .completed:\n            subscription.dispose()\n        }\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\nprivate final class TakeUntilSink<Other, Observer: ObserverType>:\n    Sink<Observer>,\n    LockOwnerType,\n    ObserverType,\n    SynchronizedOnType\n{\n    typealias Element = Observer.Element\n    typealias Parent = TakeUntil<Element, Other>\n\n    private let parent: Parent\n\n    let lock = RecursiveLock()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            forwardOn(event)\n        case .error:\n            forwardOn(event)\n            dispose()\n        case .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n\n    func run() -> Disposable {\n        let otherObserver = TakeUntilSinkOther(parent: self)\n        let otherSubscription = parent.other.subscribe(otherObserver)\n        otherObserver.subscription.setDisposable(otherSubscription)\n        let sourceSubscription = parent.source.subscribe(self)\n\n        return Disposables.create(sourceSubscription, otherObserver.subscription)\n    }\n}\n\nprivate final class TakeUntil<Element, Other>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let other: Observable<Other>\n\n    init(source: Observable<Element>, other: Observable<Other>) {\n        self.source = source\n        self.other = other\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TakeUntilSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// MARK: - TakeUntil Predicate\n\nprivate final class TakeUntilPredicateSink<Observer: ObserverType>:\n    Sink<Observer>, ObserverType\n{\n    typealias Element = Observer.Element\n    typealias Parent = TakeUntilPredicate<Element>\n\n    private let parent: Parent\n    private var running = true\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            if !running {\n                return\n            }\n\n            do {\n                running = try !parent.predicate(value)\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n                return\n            }\n\n            if running {\n                forwardOn(.next(value))\n            } else {\n                if parent.behavior == .inclusive {\n                    forwardOn(.next(value))\n                }\n\n                forwardOn(.completed)\n                dispose()\n            }\n        case .error, .completed:\n            forwardOn(event)\n            dispose()\n        }\n    }\n}\n\nprivate final class TakeUntilPredicate<Element>: Producer<Element> {\n    typealias Predicate = (Element) throws -> Bool\n\n    private let source: Observable<Element>\n    fileprivate let predicate: Predicate\n    fileprivate let behavior: TakeBehavior\n\n    init(\n        source: Observable<Element>,\n        behavior: TakeBehavior,\n        predicate: @escaping Predicate\n    ) {\n        self.source = source\n        self.behavior = behavior\n        self.predicate = predicate\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TakeUntilPredicateSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Throttle.swift",
    "content": "//\n//  Throttle.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.\n\n     This operator makes sure that no two elements are emitted in less then dueTime.\n\n     - seealso: [debounce operator on reactivex.io](http://reactivex.io/documentation/operators/debounce.html)\n\n     - parameter dueTime: Throttling duration for each element.\n     - parameter latest: Should latest element received in a dueTime wide time window since last element emission be emitted.\n     - parameter scheduler: Scheduler to run the throttle timers on.\n     - returns: The throttled sequence.\n     */\n    func throttle(_ dueTime: RxTimeInterval, latest: Bool = true, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Throttle(source: asObservable(), dueTime: dueTime, latest: latest, scheduler: scheduler)\n    }\n}\n\nprivate final class ThrottleSink<Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias Element = Observer.Element\n    typealias ParentType = Throttle<Element>\n\n    private let parent: ParentType\n\n    let lock = RecursiveLock()\n\n    // state\n    private var lastUnsentElement: Element?\n    private var lastSentTime: Date?\n    private var completed: Bool = false\n\n    let cancellable = SerialDisposable()\n\n    init(parent: ParentType, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let subscription = parent.source.subscribe(self)\n\n        return Disposables.create(subscription, cancellable)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(element):\n            let now = parent.scheduler.now\n\n            let reducedScheduledTime: RxTimeInterval = if let lastSendingTime = lastSentTime {\n                parent.dueTime.reduceWithSpanBetween(earlierDate: lastSendingTime, laterDate: now)\n            } else {\n                .nanoseconds(0)\n            }\n\n            if reducedScheduledTime.isNow {\n                sendNow(element: element)\n                return\n            }\n\n            if !parent.latest {\n                return\n            }\n\n            let isThereAlreadyInFlightRequest = lastUnsentElement != nil\n\n            lastUnsentElement = element\n\n            if isThereAlreadyInFlightRequest {\n                return\n            }\n\n            let scheduler = parent.scheduler\n\n            let d = SingleAssignmentDisposable()\n            cancellable.disposable = d\n\n            d.setDisposable(scheduler.scheduleRelative(0, dueTime: reducedScheduledTime, action: propagate))\n        case .error:\n            lastUnsentElement = nil\n            forwardOn(event)\n            dispose()\n        case .completed:\n            if lastUnsentElement != nil {\n                completed = true\n            } else {\n                forwardOn(.completed)\n                dispose()\n            }\n        }\n    }\n\n    private func sendNow(element: Element) {\n        lastUnsentElement = nil\n        forwardOn(.next(element))\n        // in case element processing takes a while, this should give some more room\n        lastSentTime = parent.scheduler.now\n    }\n\n    func propagate(_: Int) -> Disposable {\n        lock.performLocked {\n            if let lastUnsentElement = self.lastUnsentElement {\n                self.sendNow(element: lastUnsentElement)\n            }\n\n            if self.completed {\n                self.forwardOn(.completed)\n                self.dispose()\n            }\n        }\n\n        return Disposables.create()\n    }\n}\n\nprivate final class Throttle<Element>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let dueTime: RxTimeInterval\n    fileprivate let latest: Bool\n    fileprivate let scheduler: SchedulerType\n\n    init(source: Observable<Element>, dueTime: RxTimeInterval, latest: Bool, scheduler: SchedulerType) {\n        self.source = source\n        self.dueTime = dueTime\n        self.latest = latest\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ThrottleSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Timeout.swift",
    "content": "//\n//  Timeout.swift\n//  RxSwift\n//\n//  Created by Tomi Koskinen on 13/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Applies a timeout policy for each element in the observable sequence. If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.\n\n     - seealso: [timeout operator on reactivex.io](http://reactivex.io/documentation/operators/timeout.html)\n\n     - parameter dueTime: Maximum duration between values before a timeout occurs.\n     - parameter scheduler: Scheduler to run the timeout timer on.\n     - returns: An observable sequence with a `RxError.timeout` in case of a timeout.\n     */\n    func timeout(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Timeout(source: asObservable(), dueTime: dueTime, other: Observable.error(RxError.timeout), scheduler: scheduler)\n    }\n\n    /**\n     Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.\n\n     - seealso: [timeout operator on reactivex.io](http://reactivex.io/documentation/operators/timeout.html)\n\n     - parameter dueTime: Maximum duration between values before a timeout occurs.\n     - parameter other: Sequence to return in case of a timeout.\n     - parameter scheduler: Scheduler to run the timeout timer on.\n     - returns: The source sequence switching to the other sequence in case of a timeout.\n     */\n    func timeout<Source: ObservableConvertibleType>(_ dueTime: RxTimeInterval, other: Source, scheduler: SchedulerType)\n        -> Observable<Element> where Element == Source.Element\n    {\n        Timeout(source: asObservable(), dueTime: dueTime, other: other.asObservable(), scheduler: scheduler)\n    }\n}\n\nprivate final class TimeoutSink<Observer: ObserverType>: Sink<Observer>, LockOwnerType, ObserverType {\n    typealias Element = Observer.Element\n    typealias Parent = Timeout<Element>\n\n    private let parent: Parent\n\n    let lock = RecursiveLock()\n\n    private let timerD = SerialDisposable()\n    private let subscription = SerialDisposable()\n\n    private var id = 0\n    private var switched = false\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let original = SingleAssignmentDisposable()\n        subscription.disposable = original\n\n        createTimeoutTimer()\n\n        original.setDisposable(parent.source.subscribe(self))\n\n        return Disposables.create(subscription, timerD)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            var onNextWins = false\n\n            lock.performLocked {\n                onNextWins = !self.switched\n                if onNextWins {\n                    self.id = self.id &+ 1\n                }\n            }\n\n            if onNextWins {\n                forwardOn(event)\n                createTimeoutTimer()\n            }\n        case .error, .completed:\n            var onEventWins = false\n\n            lock.performLocked {\n                onEventWins = !self.switched\n                if onEventWins {\n                    self.id = self.id &+ 1\n                }\n            }\n\n            if onEventWins {\n                forwardOn(event)\n                dispose()\n            }\n        }\n    }\n\n    private func createTimeoutTimer() {\n        if timerD.isDisposed {\n            return\n        }\n\n        let nextTimer = SingleAssignmentDisposable()\n        timerD.disposable = nextTimer\n\n        let disposeSchedule = parent.scheduler.scheduleRelative(id, dueTime: parent.dueTime) { state in\n            var timerWins = false\n\n            self.lock.performLocked {\n                self.switched = (state == self.id)\n                timerWins = self.switched\n            }\n\n            if timerWins {\n                self.subscription.disposable = self.parent.other.subscribe(self.forwarder())\n            }\n\n            return Disposables.create()\n        }\n\n        nextTimer.setDisposable(disposeSchedule)\n    }\n}\n\nprivate final class Timeout<Element>: Producer<Element> {\n    fileprivate let source: Observable<Element>\n    fileprivate let dueTime: RxTimeInterval\n    fileprivate let other: Observable<Element>\n    fileprivate let scheduler: SchedulerType\n\n    init(source: Observable<Element>, dueTime: RxTimeInterval, other: Observable<Element>, scheduler: SchedulerType) {\n        self.source = source\n        self.dueTime = dueTime\n        self.other = other\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = TimeoutSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Timer.swift",
    "content": "//\n//  Timer.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType where Element: RxAbstractInteger {\n    /**\n     Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages.\n\n     - seealso: [interval operator on reactivex.io](http://reactivex.io/documentation/operators/interval.html)\n\n     - parameter period: Period for producing the values in the resulting sequence.\n     - parameter scheduler: Scheduler to run the timer on.\n     - returns: An observable sequence that produces a value after each period.\n     */\n    static func interval(_ period: RxTimeInterval, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Timer(\n            dueTime: period,\n            period: period,\n            scheduler: scheduler\n        )\n    }\n}\n\npublic extension ObservableType where Element: RxAbstractInteger {\n    /**\n     Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.\n\n     - seealso: [timer operator on reactivex.io](http://reactivex.io/documentation/operators/timer.html)\n\n     - parameter dueTime: Relative time at which to produce the first value.\n     - parameter period: Period to produce subsequent values.\n     - parameter scheduler: Scheduler to run timers on.\n     - returns: An observable sequence that produces a value after due time has elapsed and then each period.\n     */\n    static func timer(_ dueTime: RxTimeInterval, period: RxTimeInterval? = nil, scheduler: SchedulerType)\n        -> Observable<Element>\n    {\n        Timer(\n            dueTime: dueTime,\n            period: period,\n            scheduler: scheduler\n        )\n    }\n}\n\nimport Foundation\n\nprivate final class TimerSink<Observer: ObserverType>: Sink<Observer> where Observer.Element: RxAbstractInteger {\n    typealias Parent = Timer<Observer.Element>\n\n    private let parent: Parent\n    private let lock = RecursiveLock()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.schedulePeriodic(0 as Observer.Element, startAfter: parent.dueTime, period: parent.period!) { state in\n            self.lock.performLocked {\n                self.forwardOn(.next(state))\n                return state &+ 1\n            }\n        }\n    }\n}\n\nprivate final class TimerOneOffSink<Observer: ObserverType>: Sink<Observer> where Observer.Element: RxAbstractInteger {\n    typealias Parent = Timer<Observer.Element>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        parent.scheduler.scheduleRelative(self, dueTime: parent.dueTime) { [unowned self] _ -> Disposable in\n            forwardOn(.next(0))\n            forwardOn(.completed)\n            dispose()\n\n            return Disposables.create()\n        }\n    }\n}\n\nprivate final class Timer<Element: RxAbstractInteger>: Producer<Element> {\n    fileprivate let scheduler: SchedulerType\n    fileprivate let dueTime: RxTimeInterval\n    fileprivate let period: RxTimeInterval?\n\n    init(dueTime: RxTimeInterval, period: RxTimeInterval?, scheduler: SchedulerType) {\n        self.scheduler = scheduler\n        self.dueTime = dueTime\n        self.period = period\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        if period != nil {\n            let sink = TimerSink(parent: self, observer: observer, cancel: cancel)\n            let subscription = sink.run()\n            return (sink: sink, subscription: subscription)\n        } else {\n            let sink = TimerOneOffSink(parent: self, observer: observer, cancel: cancel)\n            let subscription = sink.run()\n            return (sink: sink, subscription: subscription)\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/ToArray.swift",
    "content": "//\n//  ToArray.swift\n//  RxSwift\n//\n//  Created by Junior B. on 20/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Converts an Observable into a Single that emits the whole sequence as a single array and then terminates.\n\n     For aggregation behavior see `reduce`.\n\n     - seealso: [toArray operator on reactivex.io](http://reactivex.io/documentation/operators/to.html)\n\n     - returns: A Single sequence containing all the emitted elements as array.\n     */\n    func toArray()\n        -> Single<[Element]>\n    {\n        PrimitiveSequence(raw: ToArray(source: asObservable()))\n    }\n}\n\nprivate final class ToArraySink<SourceType, Observer: ObserverType>: Sink<Observer>, ObserverType where Observer.Element == [SourceType] {\n    typealias Parent = ToArray<SourceType>\n\n    let parent: Parent\n    var list = [SourceType]()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case let .next(value):\n            list.append(value)\n        case let .error(e):\n            forwardOn(.error(e))\n            dispose()\n        case .completed:\n            forwardOn(.next(list))\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class ToArray<SourceType>: Producer<[SourceType]> {\n    let source: Observable<SourceType>\n\n    init(source: Observable<SourceType>) {\n        self.source = source\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == [SourceType] {\n        let sink = ToArraySink(parent: self, observer: observer, cancel: cancel)\n        let subscription = source.subscribe(sink)\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Using.swift",
    "content": "//\n//  Using.swift\n//  RxSwift\n//\n//  Created by Yury Korolev on 10/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime.\n\n     - seealso: [using operator on reactivex.io](http://reactivex.io/documentation/operators/using.html)\n\n     - parameter resourceFactory: Factory function to obtain a resource object.\n     - parameter observableFactory: Factory function to obtain an observable sequence that depends on the obtained resource.\n     - returns: An observable sequence whose lifetime controls the lifetime of the dependent resource object.\n     */\n    static func using<Resource: Disposable>(_ resourceFactory: @escaping () throws -> Resource, observableFactory: @escaping (Resource) throws -> Observable<Element>) -> Observable<Element> {\n        Using(resourceFactory: resourceFactory, observableFactory: observableFactory)\n    }\n}\n\nprivate final class UsingSink<ResourceType: Disposable, Observer: ObserverType>: Sink<Observer>, ObserverType {\n    typealias SourceType = Observer.Element\n    typealias Parent = Using<SourceType, ResourceType>\n\n    private let parent: Parent\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        var disposable = Disposables.create()\n\n        do {\n            let resource = try parent.resourceFactory()\n            disposable = resource\n            let source = try parent.observableFactory(resource)\n\n            return Disposables.create(\n                source.subscribe(self),\n                disposable\n            )\n        } catch {\n            return Disposables.create(\n                Observable.error(error).subscribe(self),\n                disposable\n            )\n        }\n    }\n\n    func on(_ event: Event<SourceType>) {\n        switch event {\n        case let .next(value):\n            forwardOn(.next(value))\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nprivate final class Using<SourceType, ResourceType: Disposable>: Producer<SourceType> {\n    typealias Element = SourceType\n\n    typealias ResourceFactory = () throws -> ResourceType\n    typealias ObservableFactory = (ResourceType) throws -> Observable<SourceType>\n\n    fileprivate let resourceFactory: ResourceFactory\n    fileprivate let observableFactory: ObservableFactory\n\n    init(resourceFactory: @escaping ResourceFactory, observableFactory: @escaping ObservableFactory) {\n        self.resourceFactory = resourceFactory\n        self.observableFactory = observableFactory\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = UsingSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Window.swift",
    "content": "//\n//  Window.swift\n//  RxSwift\n//\n//  Created by Junior B. on 29/10/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension ObservableType {\n    /**\n     Projects each element of an observable sequence into a window that is completed when either it’s full or a given amount of time has elapsed.\n\n     - seealso: [window operator on reactivex.io](http://reactivex.io/documentation/operators/window.html)\n\n     - parameter timeSpan: Maximum time length of a window.\n     - parameter count: Maximum element count of a window.\n     - parameter scheduler: Scheduler to run windowing timers on.\n     - returns: An observable sequence of windows (instances of `Observable`).\n     */\n    func window(timeSpan: RxTimeInterval, count: Int, scheduler: SchedulerType)\n        -> Observable<Observable<Element>>\n    {\n        WindowTimeCount(source: asObservable(), timeSpan: timeSpan, count: count, scheduler: scheduler)\n    }\n}\n\nprivate final class WindowTimeCountSink<Element, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType where Observer.Element == Observable<Element>\n{\n    typealias Parent = WindowTimeCount<Element>\n\n    private let parent: Parent\n\n    let lock = RecursiveLock()\n\n    private var subject = PublishSubject<Element>()\n    private var count = 0\n    private var windowId = 0\n\n    private let timerD = SerialDisposable()\n    private let refCountDisposable: RefCountDisposable\n    private let groupDisposable = CompositeDisposable()\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n\n        _ = groupDisposable.insert(timerD)\n\n        refCountDisposable = RefCountDisposable(disposable: groupDisposable)\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        forwardOn(.next(AddRef(source: subject, refCount: refCountDisposable).asObservable()))\n        createTimer(windowId)\n\n        _ = groupDisposable.insert(parent.source.subscribe(self))\n        return refCountDisposable\n    }\n\n    func startNewWindowAndCompleteCurrentOne() {\n        subject.on(.completed)\n        subject = PublishSubject<Element>()\n\n        forwardOn(.next(AddRef(source: subject, refCount: refCountDisposable).asObservable()))\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        var newWindow = false\n        var newId = 0\n\n        switch event {\n        case let .next(element):\n            subject.on(.next(element))\n\n            do {\n                _ = try incrementChecked(&count)\n            } catch let e {\n                self.subject.on(.error(e as Swift.Error))\n                self.dispose()\n            }\n\n            if count == parent.count {\n                newWindow = true\n                count = 0\n                windowId += 1\n                newId = windowId\n                startNewWindowAndCompleteCurrentOne()\n            }\n\n        case let .error(error):\n            subject.on(.error(error))\n            forwardOn(.error(error))\n            dispose()\n\n        case .completed:\n            subject.on(.completed)\n            forwardOn(.completed)\n            dispose()\n        }\n\n        if newWindow {\n            createTimer(newId)\n        }\n    }\n\n    func createTimer(_ windowId: Int) {\n        if timerD.isDisposed {\n            return\n        }\n\n        if self.windowId != windowId {\n            return\n        }\n\n        let nextTimer = SingleAssignmentDisposable()\n\n        timerD.disposable = nextTimer\n\n        let scheduledRelative = parent.scheduler.scheduleRelative(windowId, dueTime: parent.timeSpan) { previousWindowId in\n            var newId = 0\n\n            self.lock.performLocked {\n                if previousWindowId != self.windowId {\n                    return\n                }\n\n                self.count = 0\n                self.windowId = self.windowId &+ 1\n                newId = self.windowId\n                self.startNewWindowAndCompleteCurrentOne()\n            }\n\n            self.createTimer(newId)\n\n            return Disposables.create()\n        }\n\n        nextTimer.setDisposable(scheduledRelative)\n    }\n}\n\nprivate final class WindowTimeCount<Element>: Producer<Observable<Element>> {\n    fileprivate let timeSpan: RxTimeInterval\n    fileprivate let count: Int\n    fileprivate let scheduler: SchedulerType\n    fileprivate let source: Observable<Element>\n\n    init(source: Observable<Element>, timeSpan: RxTimeInterval, count: Int, scheduler: SchedulerType) {\n        self.source = source\n        self.timeSpan = timeSpan\n        self.count = count\n        self.scheduler = scheduler\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Observable<Element> {\n        let sink = WindowTimeCountSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/WithLatestFrom.swift",
    "content": "//\n//  WithLatestFrom.swift\n//  RxSwift\n//\n//  Created by Yury Korolev on 10/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n     - note: Elements emitted by self before the second source has emitted any values will be omitted.\n\n     - parameter second: Second observable source.\n     - parameter resultSelector: Function to invoke for each element from the self combined with the latest element from the second source, if any.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<Source: ObservableConvertibleType, ResultType>(_ second: Source, resultSelector: @escaping (Element, Source.Element) throws -> ResultType) -> Observable<ResultType> {\n        WithLatestFrom(first: asObservable(), second: second.asObservable(), resultSelector: resultSelector)\n    }\n\n    /**\n     Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when `self` emits an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n     - note: Elements emitted by self before the second source has emitted any values will be omitted.\n\n     - parameter second: Second observable source.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<Source: ObservableConvertibleType>(_ second: Source) -> Observable<Source.Element> {\n        WithLatestFrom(first: asObservable(), second: second.asObservable(), resultSelector: { $1 })\n    }\n}\n\nprivate final class WithLatestFromSink<FirstType, SecondType, Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias ResultType = Observer.Element\n    typealias Parent = WithLatestFrom<FirstType, SecondType, ResultType>\n    typealias Element = FirstType\n\n    private let parent: Parent\n\n    fileprivate var lock = RecursiveLock()\n    fileprivate var latest: SecondType?\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run() -> Disposable {\n        let sndSubscription = SingleAssignmentDisposable()\n        let sndO = WithLatestFromSecond(parent: self, disposable: sndSubscription)\n\n        sndSubscription.setDisposable(parent.second.subscribe(sndO))\n        let fstSubscription = parent.first.subscribe(self)\n\n        return Disposables.create(fstSubscription, sndSubscription)\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            guard let latest else { return }\n            do {\n                let res = try parent.resultSelector(value, latest)\n\n                forwardOn(.next(res))\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        case .completed:\n            forwardOn(.completed)\n            dispose()\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        }\n    }\n}\n\nprivate final class WithLatestFromSecond<FirstType, SecondType, Observer: ObserverType>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias ResultType = Observer.Element\n    typealias Parent = WithLatestFromSink<FirstType, SecondType, Observer>\n    typealias Element = SecondType\n\n    private let parent: Parent\n    private let disposable: Disposable\n\n    var lock: RecursiveLock {\n        parent.lock\n    }\n\n    init(parent: Parent, disposable: Disposable) {\n        self.parent = parent\n        self.disposable = disposable\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        switch event {\n        case let .next(value):\n            parent.latest = value\n        case .completed:\n            disposable.dispose()\n        case let .error(error):\n            parent.forwardOn(.error(error))\n            parent.dispose()\n        }\n    }\n}\n\nprivate final class WithLatestFrom<FirstType, SecondType, ResultType>: Producer<ResultType> {\n    typealias ResultSelector = (FirstType, SecondType) throws -> ResultType\n\n    fileprivate let first: Observable<FirstType>\n    fileprivate let second: Observable<SecondType>\n    fileprivate let resultSelector: ResultSelector\n\n    init(first: Observable<FirstType>, second: Observable<SecondType>, resultSelector: @escaping ResultSelector) {\n        self.first = first\n        self.second = second\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == ResultType {\n        let sink = WithLatestFromSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/WithUnretained.swift",
    "content": "//\n//  WithUnretained.swift\n//  RxSwift\n//\n//  Created by Vincent Pradeilles on 01/01/2021.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - parameter resultSelector: A function to combine the unretained referenced on `obj` and the value of the observable sequence.\n     - returns: An observable sequence that contains the result of `resultSelector` being called with an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject, Out>(\n        _ obj: Object,\n        resultSelector: @escaping (Object, Element) -> Out\n    ) -> Observable<Out> {\n        map { [weak obj] element -> Out in\n            guard let obj else { throw UnretainedError.failedRetaining }\n\n            return resultSelector(obj, element)\n        }\n        .catch { error -> Observable<Out> in\n            guard let unretainedError = error as? UnretainedError,\n                  unretainedError == .failedRetaining\n            else {\n                return .error(error)\n            }\n\n            return .empty()\n        }\n    }\n\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - returns: An observable sequence of tuples that contains both an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject>(_ obj: Object) -> Observable<(Object, Element)> {\n        withUnretained(obj) { ($0, $1) }\n    }\n}\n\nprivate enum UnretainedError: Swift.Error {\n    case failedRetaining\n}\n"
  },
  {
    "path": "RxSwift/Observables/Zip+Collection.swift",
    "content": "//\n//  Zip+Collection.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<Collection: Swift.Collection>(_ collection: Collection, resultSelector: @escaping ([Collection.Element.Element]) throws -> Element) -> Observable<Element>\n        where Collection.Element: ObservableType\n    {\n        ZipCollectionType(sources: collection, resultSelector: resultSelector)\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<Collection: Swift.Collection>(_ collection: Collection) -> Observable<[Element]>\n        where Collection.Element: ObservableType, Collection.Element.Element == Element\n    {\n        ZipCollectionType(sources: collection, resultSelector: { $0 })\n    }\n}\n\nprivate final class ZipCollectionTypeSink<Collection: Swift.Collection, Observer: ObserverType>:\n    Sink<Observer> where Collection.Element: ObservableConvertibleType\n{\n    typealias Result = Observer.Element\n    typealias Parent = ZipCollectionType<Collection, Result>\n    typealias SourceElement = Collection.Element.Element\n\n    private let parent: Parent\n\n    private let lock = RecursiveLock()\n\n    // state\n    private var numberOfValues = 0\n    private var values: [Queue<SourceElement>]\n    private var isDone: [Bool]\n    private var numberOfDone = 0\n    private var subscriptions: [SingleAssignmentDisposable]\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        values = [Queue<SourceElement>](repeating: Queue(capacity: 4), count: parent.count)\n        isDone = [Bool](repeating: false, count: parent.count)\n        subscriptions = [SingleAssignmentDisposable]()\n        subscriptions.reserveCapacity(parent.count)\n\n        for _ in 0 ..< parent.count {\n            subscriptions.append(SingleAssignmentDisposable())\n        }\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<SourceElement>, atIndex: Int) {\n        lock.lock(); defer { self.lock.unlock() }\n        switch event {\n        case let .next(element):\n            values[atIndex].enqueue(element)\n\n            if values[atIndex].count == 1 {\n                numberOfValues += 1\n            }\n\n            if numberOfValues < parent.count {\n                if numberOfDone == parent.count - 1 {\n                    forwardOn(.completed)\n                    dispose()\n                }\n                return\n            }\n\n            do {\n                var arguments = [SourceElement]()\n                arguments.reserveCapacity(parent.count)\n\n                // recalculate number of values\n                numberOfValues = 0\n\n                for i in 0 ..< values.count {\n                    arguments.append(values[i].dequeue()!)\n                    if !values[i].isEmpty {\n                        numberOfValues += 1\n                    }\n                }\n\n                let result = try parent.resultSelector(arguments)\n                forwardOn(.next(result))\n            } catch {\n                forwardOn(.error(error))\n                dispose()\n            }\n\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n\n        case .completed:\n            if isDone[atIndex] {\n                return\n            }\n\n            isDone[atIndex] = true\n            numberOfDone += 1\n\n            if numberOfDone == parent.count {\n                forwardOn(.completed)\n                dispose()\n            } else {\n                subscriptions[atIndex].dispose()\n            }\n        }\n    }\n\n    func run() -> Disposable {\n        var j = 0\n        for i in parent.sources {\n            let index = j\n            let source = i.asObservable()\n\n            let disposable = source.subscribe(AnyObserver { event in\n                self.on(event, atIndex: index)\n            })\n            subscriptions[j].setDisposable(disposable)\n            j += 1\n        }\n\n        if parent.sources.isEmpty {\n            forwardOn(.completed)\n        }\n\n        return Disposables.create(subscriptions)\n    }\n}\n\nprivate final class ZipCollectionType<Collection: Swift.Collection, Result>: Producer<Result> where Collection.Element: ObservableConvertibleType {\n    typealias ResultSelector = ([Collection.Element.Element]) throws -> Result\n\n    let sources: Collection\n    let resultSelector: ResultSelector\n    let count: Int\n\n    init(sources: Collection, resultSelector: @escaping ResultSelector) {\n        self.sources = sources\n        self.resultSelector = resultSelector\n        count = self.sources.count\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipCollectionTypeSink(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Zip+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  Zip+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// 2\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType>\n    (_ source1: O1, _ source2: O2, resultSelector: @escaping (O1.Element, O2.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip2(\n            source1: source1.asObservable(), source2: source2.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType>\n    (_ source1: O1, _ source2: O2)\n        -> Observable<(O1.Element, O2.Element)>\n    {\n        Zip2(\n            source1: source1.asObservable(), source2: source2.asObservable(),\n            resultSelector: { ($0, $1) }\n        )\n    }\n}\n\nfinal class ZipSink2_<E1, E2, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip2<E1, E2, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 2, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n\n        case 1: !values2.isEmpty\n\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n\n        return Disposables.create([\n            subscription1,\n            subscription2\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!)\n    }\n}\n\nfinal class Zip2<E1, E2, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink2_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 3\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, resultSelector: @escaping (O1.Element, O2.Element, O3.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip3(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3)\n        -> Observable<(O1.Element, O2.Element, O3.Element)>\n    {\n        Zip3(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(),\n            resultSelector: { ($0, $1, $2) }\n        )\n    }\n}\n\nfinal class ZipSink3_<E1, E2, E3, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip3<E1, E2, E3, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 3, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!)\n    }\n}\n\nfinal class Zip3<E1, E2, E3, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink3_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 4\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip4(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element)>\n    {\n        Zip4(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(),\n            resultSelector: { ($0, $1, $2, $3) }\n        )\n    }\n}\n\nfinal class ZipSink4_<E1, E2, E3, E4, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip4<E1, E2, E3, E4, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n    var values4: Queue<E4> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 4, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        case 3: !values4.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n        let observer4 = ZipObserver(lock: lock, parent: self, index: 3, setNextValue: { self.values4.enqueue($0) }, this: subscription4)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!, values4.dequeue()!)\n    }\n}\n\nfinal class Zip4<E1, E2, E3, E4, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink4_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 5\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip5(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)>\n    {\n        Zip5(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4) }\n        )\n    }\n}\n\nfinal class ZipSink5_<E1, E2, E3, E4, E5, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip5<E1, E2, E3, E4, E5, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n    var values4: Queue<E4> = Queue(capacity: 2)\n    var values5: Queue<E5> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 5, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        case 3: !values4.isEmpty\n        case 4: !values5.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n        let observer4 = ZipObserver(lock: lock, parent: self, index: 3, setNextValue: { self.values4.enqueue($0) }, this: subscription4)\n        let observer5 = ZipObserver(lock: lock, parent: self, index: 4, setNextValue: { self.values5.enqueue($0) }, this: subscription5)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!, values4.dequeue()!, values5.dequeue()!)\n    }\n}\n\nfinal class Zip5<E1, E2, E3, E4, E5, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink5_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 6\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip6(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)>\n    {\n        Zip6(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5) }\n        )\n    }\n}\n\nfinal class ZipSink6_<E1, E2, E3, E4, E5, E6, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip6<E1, E2, E3, E4, E5, E6, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n    var values4: Queue<E4> = Queue(capacity: 2)\n    var values5: Queue<E5> = Queue(capacity: 2)\n    var values6: Queue<E6> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 6, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        case 3: !values4.isEmpty\n        case 4: !values5.isEmpty\n        case 5: !values6.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n        let observer4 = ZipObserver(lock: lock, parent: self, index: 3, setNextValue: { self.values4.enqueue($0) }, this: subscription4)\n        let observer5 = ZipObserver(lock: lock, parent: self, index: 4, setNextValue: { self.values5.enqueue($0) }, this: subscription5)\n        let observer6 = ZipObserver(lock: lock, parent: self, index: 5, setNextValue: { self.values6.enqueue($0) }, this: subscription6)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!, values4.dequeue()!, values5.dequeue()!, values6.dequeue()!)\n    }\n}\n\nfinal class Zip6<E1, E2, E3, E4, E5, E6, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink6_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 7\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip7(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)>\n    {\n        Zip7(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6) }\n        )\n    }\n}\n\nfinal class ZipSink7_<E1, E2, E3, E4, E5, E6, E7, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip7<E1, E2, E3, E4, E5, E6, E7, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n    var values4: Queue<E4> = Queue(capacity: 2)\n    var values5: Queue<E5> = Queue(capacity: 2)\n    var values6: Queue<E6> = Queue(capacity: 2)\n    var values7: Queue<E7> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 7, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        case 3: !values4.isEmpty\n        case 4: !values5.isEmpty\n        case 5: !values6.isEmpty\n        case 6: !values7.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n        let subscription7 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n        let observer4 = ZipObserver(lock: lock, parent: self, index: 3, setNextValue: { self.values4.enqueue($0) }, this: subscription4)\n        let observer5 = ZipObserver(lock: lock, parent: self, index: 4, setNextValue: { self.values5.enqueue($0) }, this: subscription5)\n        let observer6 = ZipObserver(lock: lock, parent: self, index: 5, setNextValue: { self.values6.enqueue($0) }, this: subscription6)\n        let observer7 = ZipObserver(lock: lock, parent: self, index: 6, setNextValue: { self.values7.enqueue($0) }, this: subscription7)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n        subscription7.setDisposable(parent.source7.subscribe(observer7))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6,\n            subscription7\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!, values4.dequeue()!, values5.dequeue()!, values6.dequeue()!, values7.dequeue()!)\n    }\n}\n\nfinal class Zip7<E1, E2, E3, E4, E5, E6, E7, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6, E7) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n    let source7: Observable<E7>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, source7: Observable<E7>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n        self.source7 = source7\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink7_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n// 8\n\npublic extension ObservableType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType, O8: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8, resultSelector: @escaping (O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element) throws -> Element)\n        -> Observable<Element>\n    {\n        Zip8(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(),\n            resultSelector: resultSelector\n        )\n    }\n}\n\npublic extension ObservableType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<O1: ObservableType, O2: ObservableType, O3: ObservableType, O4: ObservableType, O5: ObservableType, O6: ObservableType, O7: ObservableType, O8: ObservableType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8)\n        -> Observable<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)>\n    {\n        Zip8(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(),\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6, $7) }\n        )\n    }\n}\n\nfinal class ZipSink8_<E1, E2, E3, E4, E5, E6, E7, E8, Observer: ObserverType>: ZipSink<Observer> {\n    typealias Result = Observer.Element\n    typealias Parent = Zip8<E1, E2, E3, E4, E5, E6, E7, E8, Result>\n\n    let parent: Parent\n\n    var values1: Queue<E1> = Queue(capacity: 2)\n    var values2: Queue<E2> = Queue(capacity: 2)\n    var values3: Queue<E3> = Queue(capacity: 2)\n    var values4: Queue<E4> = Queue(capacity: 2)\n    var values5: Queue<E5> = Queue(capacity: 2)\n    var values6: Queue<E6> = Queue(capacity: 2)\n    var values7: Queue<E7> = Queue(capacity: 2)\n    var values8: Queue<E8> = Queue(capacity: 2)\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: 8, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n        case 0: !values1.isEmpty\n        case 1: !values2.isEmpty\n        case 2: !values3.isEmpty\n        case 3: !values4.isEmpty\n        case 4: !values5.isEmpty\n        case 5: !values6.isEmpty\n        case 6: !values7.isEmpty\n        case 7: !values8.isEmpty\n        default:\n            rxFatalError(\"Unhandled case (Function)\")\n        }\n    }\n\n    func run() -> Disposable {\n        let subscription1 = SingleAssignmentDisposable()\n        let subscription2 = SingleAssignmentDisposable()\n        let subscription3 = SingleAssignmentDisposable()\n        let subscription4 = SingleAssignmentDisposable()\n        let subscription5 = SingleAssignmentDisposable()\n        let subscription6 = SingleAssignmentDisposable()\n        let subscription7 = SingleAssignmentDisposable()\n        let subscription8 = SingleAssignmentDisposable()\n\n        let observer1 = ZipObserver(lock: lock, parent: self, index: 0, setNextValue: { self.values1.enqueue($0) }, this: subscription1)\n        let observer2 = ZipObserver(lock: lock, parent: self, index: 1, setNextValue: { self.values2.enqueue($0) }, this: subscription2)\n        let observer3 = ZipObserver(lock: lock, parent: self, index: 2, setNextValue: { self.values3.enqueue($0) }, this: subscription3)\n        let observer4 = ZipObserver(lock: lock, parent: self, index: 3, setNextValue: { self.values4.enqueue($0) }, this: subscription4)\n        let observer5 = ZipObserver(lock: lock, parent: self, index: 4, setNextValue: { self.values5.enqueue($0) }, this: subscription5)\n        let observer6 = ZipObserver(lock: lock, parent: self, index: 5, setNextValue: { self.values6.enqueue($0) }, this: subscription6)\n        let observer7 = ZipObserver(lock: lock, parent: self, index: 6, setNextValue: { self.values7.enqueue($0) }, this: subscription7)\n        let observer8 = ZipObserver(lock: lock, parent: self, index: 7, setNextValue: { self.values8.enqueue($0) }, this: subscription8)\n\n        subscription1.setDisposable(parent.source1.subscribe(observer1))\n        subscription2.setDisposable(parent.source2.subscribe(observer2))\n        subscription3.setDisposable(parent.source3.subscribe(observer3))\n        subscription4.setDisposable(parent.source4.subscribe(observer4))\n        subscription5.setDisposable(parent.source5.subscribe(observer5))\n        subscription6.setDisposable(parent.source6.subscribe(observer6))\n        subscription7.setDisposable(parent.source7.subscribe(observer7))\n        subscription8.setDisposable(parent.source8.subscribe(observer8))\n\n        return Disposables.create([\n            subscription1,\n            subscription2,\n            subscription3,\n            subscription4,\n            subscription5,\n            subscription6,\n            subscription7,\n            subscription8\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try parent.resultSelector(values1.dequeue()!, values2.dequeue()!, values3.dequeue()!, values4.dequeue()!, values5.dequeue()!, values6.dequeue()!, values7.dequeue()!, values8.dequeue()!)\n    }\n}\n\nfinal class Zip8<E1, E2, E3, E4, E5, E6, E7, E8, Result>: Producer<Result> {\n    typealias ResultSelector = (E1, E2, E3, E4, E5, E6, E7, E8) throws -> Result\n\n    let source1: Observable<E1>\n    let source2: Observable<E2>\n    let source3: Observable<E3>\n    let source4: Observable<E4>\n    let source5: Observable<E5>\n    let source6: Observable<E6>\n    let source7: Observable<E7>\n    let source8: Observable<E8>\n\n    let resultSelector: ResultSelector\n\n    init(source1: Observable<E1>, source2: Observable<E2>, source3: Observable<E3>, source4: Observable<E4>, source5: Observable<E5>, source6: Observable<E6>, source7: Observable<E7>, source8: Observable<E8>, resultSelector: @escaping ResultSelector) {\n        self.source1 = source1\n        self.source2 = source2\n        self.source3 = source3\n        self.source4 = source4\n        self.source5 = source5\n        self.source6 = source6\n        self.source7 = source7\n        self.source8 = source8\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink8_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observables/Zip+arity.tt",
    "content": "//\n//  Zip+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n<% for i in 2 ... 8 { %>\n\n// <%= i %>\n\nextension ObservableType {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"O\\($0): ObservableType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>) throws -> Element)\n        -> Observable<Element> {\n        return Zip<%= i %>(\n            <%= (Array(1...i).map { \"source\\($0): source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: resultSelector\n        )\n    }\n}\n\nextension ObservableType where Element == Any {\n    /**\n    Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - returns: An observable sequence containing the result of combining elements of the sources.\n    */\n    public static func zip<<%= (Array(1...i).map { \"O\\($0): ObservableType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): O\\($0)\" }).joined(separator: \", \") %>)\n        -> Observable<(<%= (Array(1...i).map { \"O\\($0).Element\" }).joined(separator: \", \") %>)> {\n        return Zip<%= i %>(\n            <%= (Array(1...i).map { \"source\\($0): source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: { (<%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \", \") %>) }\n        )\n    }\n}\n\nfinal class ZipSink<%= i %>_<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Observer: ObserverType> : ZipSink<Observer> {\n    typealias Result = Observer.Element \n    typealias Parent = Zip<%= i %><<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Result>\n\n    let parent: Parent\n\n<%= (Array(1...i).map {\n\"    var values\\($0): Queue<E\\($0)> = Queue(capacity: 2)\"\n}).joined(separator: \"\\n\") %>\n\n    init(parent: Parent, observer: Observer, cancel: Cancelable) {\n        self.parent = parent\n        super.init(arity: <%= i %>, observer: observer, cancel: cancel)\n    }\n\n    override func hasElements(_ index: Int) -> Bool {\n        switch index {\n<%= (Array(0..<i).map {\n\"        case \\($0): return !self.values\\($0 + 1).isEmpty\\n\"\n}).joined(separator: \"\") %>\n        default:\n            rxFatalError(\"Unhandled case \\(index)\")\n        }\n    }\n\n    func run() -> Disposable {\n<%= (Array(1...i).map {\n\"        let subscription\\($0) = SingleAssignmentDisposable()\"\n}).joined(separator: \"\\n\") %>\n\n<%= (Array(1...i).map {\n\"        let observer\\($0) = ZipObserver(lock: self.lock, parent: self, index: \\($0 - 1), setNextValue: { self.values\\($0).enqueue($0) }, this: subscription\\($0))\"\n}).joined(separator: \"\\n\") %>\n\n<%= (Array(1...i).map {\n\"        subscription\\($0).setDisposable(self.parent.source\\($0).subscribe(observer\\($0)))\" }).joined(separator: \"\\n\")\n%>\n\n        return Disposables.create([\n<%= (Array(1...i).map { \"           subscription\\($0)\" }).joined(separator: \",\\n\") %>\n        ])\n    }\n\n    override func getResult() throws -> Result {\n        try self.parent.resultSelector(<%= (Array(1...i).map { \"self.values\\($0).dequeue()!\" }).joined(separator: \", \") %>)\n    }\n}\n\nfinal class Zip<%= i %><<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>, Result> : Producer<Result> {\n    typealias ResultSelector = (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>) throws -> Result\n\n<%= (Array(1...i).map { \"    let source\\($0): Observable<E\\($0)>\" }).joined(separator: \"\\n\") %>\n\n    let resultSelector: ResultSelector\n\n    init(<%= (Array(1...i).map { \"source\\($0): Observable<E\\($0)>\" }).joined(separator: \", \") %>, resultSelector: @escaping ResultSelector) {\n<%= (Array(1...i).map {\n\"        self.source\\($0) = source\\($0)\" }).joined(separator: \"\\n\")\n%>\n\n        self.resultSelector = resultSelector\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Result {\n        let sink = ZipSink<%= i %>_(parent: self, observer: observer, cancel: cancel)\n        let subscription = sink.run()\n        return (sink: sink, subscription: subscription)\n    }\n}\n\n<% } %>\n"
  },
  {
    "path": "RxSwift/Observables/Zip.swift",
    "content": "//\n//  Zip.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol ZipSinkProtocol: AnyObject {\n    func next(_ index: Int)\n    func fail(_ error: Swift.Error)\n    func done(_ index: Int)\n}\n\nclass ZipSink<Observer: ObserverType>: Sink<Observer>, ZipSinkProtocol {\n    typealias Element = Observer.Element\n\n    let arity: Int\n\n    let lock = RecursiveLock()\n\n    // state\n    private var isDone: [Bool]\n\n    init(arity: Int, observer: Observer, cancel: Cancelable) {\n        isDone = [Bool](repeating: false, count: arity)\n        self.arity = arity\n\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func getResult() throws -> Element {\n        rxAbstractMethod()\n    }\n\n    func hasElements(_: Int) -> Bool {\n        rxAbstractMethod()\n    }\n\n    func next(_: Int) {\n        var hasValueAll = true\n\n        for i in 0 ..< arity {\n            if !hasElements(i) {\n                hasValueAll = false\n                break\n            }\n        }\n\n        if hasValueAll {\n            do {\n                let result = try getResult()\n                forwardOn(.next(result))\n            } catch let e {\n                self.forwardOn(.error(e))\n                self.dispose()\n            }\n        }\n    }\n\n    func fail(_ error: Swift.Error) {\n        forwardOn(.error(error))\n        dispose()\n    }\n\n    func done(_ index: Int) {\n        isDone[index] = true\n\n        var allDone = true\n\n        for done in isDone where !done {\n            allDone = false\n            break\n        }\n\n        if allDone {\n            forwardOn(.completed)\n            dispose()\n        }\n    }\n}\n\nfinal class ZipObserver<Element>:\n    ObserverType,\n    LockOwnerType,\n    SynchronizedOnType\n{\n    typealias ValueSetter = (Element) -> Void\n\n    private var parent: ZipSinkProtocol?\n\n    let lock: RecursiveLock\n\n    // state\n    private let index: Int\n    private let this: Disposable\n    private let setNextValue: ValueSetter\n\n    init(lock: RecursiveLock, parent: ZipSinkProtocol, index: Int, setNextValue: @escaping ValueSetter, this: Disposable) {\n        self.lock = lock\n        self.parent = parent\n        self.index = index\n        self.this = this\n        self.setNextValue = setNextValue\n    }\n\n    func on(_ event: Event<Element>) {\n        synchronizedOn(event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) {\n        if parent != nil {\n            switch event {\n            case .next:\n                break\n            case .error:\n                this.dispose()\n            case .completed:\n                this.dispose()\n            }\n        }\n\n        if let parent {\n            switch event {\n            case let .next(value):\n                setNextValue(value)\n                parent.next(index)\n            case let .error(error):\n                parent.fail(error)\n            case .completed:\n                parent.done(index)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/ObserverType.swift",
    "content": "//\n//  ObserverType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Supports push-style iteration over an observable sequence.\npublic protocol ObserverType {\n    /// The type of elements in sequence that observer can observe.\n    associatedtype Element\n\n    /// Notify observer about sequence event.\n    ///\n    /// - parameter event: Event that occurred.\n    func on(_ event: Event<Element>)\n}\n\n/// Convenience API extensions to provide alternate next, error, completed events\npublic extension ObserverType {\n    /// Convenience method equivalent to `on(.next(element: Element))`\n    ///\n    /// - parameter element: Next element to send to observer(s)\n    func onNext(_ element: Element) {\n        on(.next(element))\n    }\n\n    /// Convenience method equivalent to `on(.completed)`\n    func onCompleted() {\n        on(.completed)\n    }\n\n    /// Convenience method equivalent to `on(.error(Swift.Error))`\n    /// - parameter error: Swift.Error to send to observer(s)\n    func onError(_ error: Swift.Error) {\n        on(.error(error))\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observers/AnonymousObserver.swift",
    "content": "//\n//  AnonymousObserver.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nfinal class AnonymousObserver<Element>: ObserverBase<Element> {\n    typealias EventHandler = (Event<Element>) -> Void\n\n    private let eventHandler: EventHandler\n\n    init(_ eventHandler: @escaping EventHandler) {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n        self.eventHandler = eventHandler\n    }\n\n    override func onCore(_ event: Event<Element>) {\n        eventHandler(event)\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/Observers/ObserverBase.swift",
    "content": "//\n//  ObserverBase.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nclass ObserverBase<Element>: Disposable, ObserverType {\n    private let isStopped = AtomicInt(0)\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case .next:\n            if load(isStopped) == 0 {\n                onCore(event)\n            }\n        case .error, .completed:\n            if fetchOr(isStopped, 1) == 0 {\n                onCore(event)\n            }\n        }\n    }\n\n    func onCore(_: Event<Element>) {\n        rxAbstractMethod()\n    }\n\n    func dispose() {\n        fetchOr(isStopped, 1)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Observers/TailRecursiveSink.swift",
    "content": "//\n//  TailRecursiveSink.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nenum TailRecursiveSinkCommand {\n    case moveNext\n    case dispose\n}\n\n#if DEBUG || TRACE_RESOURCES\npublic var maxTailRecursiveSinkStackSize = 0\n#endif\n\n/// This class is usually used with `Generator` version of the operators.\nclass TailRecursiveSink<Sequence: Swift.Sequence, Observer: ObserverType>:\n    Sink<Observer>,\n    InvocableWithValueType where Sequence.Element: ObservableConvertibleType, Sequence.Element.Element == Observer.Element\n{\n    typealias Value = TailRecursiveSinkCommand\n    typealias Element = Observer.Element\n    typealias SequenceGenerator = (generator: Sequence.Iterator, remaining: IntMax?)\n\n    var generators: [SequenceGenerator] = []\n    var disposed = false\n    var subscription = SerialDisposable()\n\n    // this is thread safe object\n    var gate = AsyncLock<InvocableScheduledItem<TailRecursiveSink<Sequence, Observer>>>()\n\n    override init(observer: Observer, cancel: Cancelable) {\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func run(_ sources: SequenceGenerator) -> Disposable {\n        generators.append(sources)\n\n        schedule(.moveNext)\n\n        return subscription\n    }\n\n    func invoke(_ command: TailRecursiveSinkCommand) {\n        switch command {\n        case .dispose:\n            disposeCommand()\n        case .moveNext:\n            moveNextCommand()\n        }\n    }\n\n    // simple implementation for now\n    func schedule(_ command: TailRecursiveSinkCommand) {\n        gate.invoke(InvocableScheduledItem(invocable: self, state: command))\n    }\n\n    func done() {\n        forwardOn(.completed)\n        dispose()\n    }\n\n    func extract(_: Observable<Element>) -> SequenceGenerator? {\n        rxAbstractMethod()\n    }\n\n    // should be done on gate locked\n\n    private func moveNextCommand() {\n        var next: Observable<Element>?\n\n        repeat {\n            guard let (g, left) = generators.last else {\n                break\n            }\n\n            if isDisposed {\n                return\n            }\n\n            generators.removeLast()\n\n            var e = g\n\n            guard let nextCandidate = e.next()?.asObservable() else {\n                continue\n            }\n\n            // `left` is a hint of how many elements are left in generator.\n            // In case this is the last element, then there is no need to push\n            // that generator on stack.\n            //\n            // This is an optimization used to make sure in tail recursive case\n            // there is no memory leak in case this operator is used to generate non terminating\n            // sequence.\n\n            if let knownOriginalLeft = left {\n                // `- 1` because generator.next() has just been called\n                if knownOriginalLeft - 1 >= 1 {\n                    generators.append((e, knownOriginalLeft - 1))\n                }\n            } else {\n                generators.append((e, nil))\n            }\n\n            let nextGenerator = extract(nextCandidate)\n\n            if let nextGenerator {\n                generators.append(nextGenerator)\n                #if DEBUG || TRACE_RESOURCES\n                if maxTailRecursiveSinkStackSize < generators.count {\n                    maxTailRecursiveSinkStackSize = generators.count\n                }\n                #endif\n            } else {\n                next = nextCandidate\n            }\n        } while next == nil\n\n        guard let existingNext = next else {\n            done()\n            return\n        }\n\n        let disposable = SingleAssignmentDisposable()\n        subscription.disposable = disposable\n        disposable.setDisposable(subscribeToNext(existingNext))\n    }\n\n    func subscribeToNext(_: Observable<Element>) -> Disposable {\n        rxAbstractMethod()\n    }\n\n    func disposeCommand() {\n        disposed = true\n        generators.removeAll(keepingCapacity: false)\n    }\n\n    override func dispose() {\n        super.dispose()\n\n        subscription.dispose()\n        gate.dispose()\n\n        schedule(.dispose)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Reactive.swift",
    "content": "//\n//  Reactive.swift\n//  RxSwift\n//\n//  Created by Yury Korolev on 5/2/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n/**\n Use `Reactive` proxy as customization point for constrained protocol extensions.\n\n General pattern would be:\n\n // 1. Extend Reactive protocol with constrain on Base\n // Read as: Reactive Extension where Base is a SomeType\n extension Reactive where Base: SomeType {\n // 2. Put any specific reactive extension for SomeType here\n }\n\n With this approach we can have more specialized methods and properties using\n `Base` and not just specialized on common base type.\n\n `Binder`s are also automatically synthesized using `@dynamicMemberLookup` for writable reference properties of the reactive base.\n */\n\n@dynamicMemberLookup\npublic struct Reactive<Base> {\n    /// Base object to extend.\n    public let base: Base\n\n    /// Creates extensions with base object.\n    ///\n    /// - parameter base: Base object.\n    public init(_ base: Base) {\n        self.base = base\n    }\n\n    /// Automatically synthesized binder for a key path between the reactive\n    /// base and one of its properties\n    public subscript<Property>(dynamicMember keyPath: ReferenceWritableKeyPath<Base, Property>) -> Binder<Property> where Base: AnyObject {\n        Binder(self.base) { base, value in\n            base[keyPath: keyPath] = value\n        }\n    }\n}\n\n/// A type that has reactive extensions.\npublic protocol ReactiveCompatible {\n    /// Extended type\n    associatedtype ReactiveBase\n\n    /// Reactive extensions.\n    static var rx: Reactive<ReactiveBase>.Type { get set }\n\n    /// Reactive extensions.\n    var rx: Reactive<ReactiveBase> { get set }\n}\n\npublic extension ReactiveCompatible {\n    /// Reactive extensions.\n    static var rx: Reactive<Self>.Type {\n        get { Reactive<Self>.self }\n        // this enables using Reactive to \"mutate\" base type\n        // swiftlint:disable:next unused_setter_value\n        set {}\n    }\n\n    /// Reactive extensions.\n    var rx: Reactive<Self> {\n        get { Reactive(self) }\n        // this enables using Reactive to \"mutate\" base object\n        // swiftlint:disable:next unused_setter_value\n        set {}\n    }\n}\n\nimport Foundation\n\n/// Extend NSObject with `rx` proxy.\nextension NSObject: ReactiveCompatible {}\n"
  },
  {
    "path": "RxSwift/Rx.swift",
    "content": "//\n//  Rx.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if TRACE_RESOURCES\nprivate let resourceCount = AtomicInt(0)\n\n/// Resource utilization information\npublic enum Resources {\n    /// Counts internal Rx resource allocations (Observables, Observers, Disposables, etc.). This provides a simple way to detect leaks during development.\n    public static var total: Int32 {\n        load(resourceCount)\n    }\n\n    /// Increments `Resources.total` resource count.\n    ///\n    /// - returns: New resource count\n    public static func incrementTotal() -> Int32 {\n        increment(resourceCount)\n    }\n\n    /// Decrements `Resources.total` resource count\n    ///\n    /// - returns: New resource count\n    public static func decrementTotal() -> Int32 {\n        decrement(resourceCount)\n    }\n}\n#endif\n\n/// Swift does not implement abstract methods. This method is used as a runtime check to ensure that methods which intended to be abstract (i.e., they should be implemented in subclasses) are not called directly on the superclass.\nfunc rxAbstractMethod(file: StaticString = #file, line: UInt = #line) -> Swift.Never {\n    rxFatalError(\"Abstract method\", file: file, line: line)\n}\n\nfunc rxFatalError(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) -> Swift.Never {\n    fatalError(lastMessage(), file: file, line: line)\n}\n\nfunc rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) {\n    #if DEBUG\n    fatalError(lastMessage(), file: file, line: line)\n    #else\n    print(\"\\(file):\\(line): \\(lastMessage())\")\n    #endif\n}\n\nfunc incrementChecked(_ i: inout Int) throws -> Int {\n    if i == Int.max {\n        throw RxError.overflow\n    }\n    defer { i += 1 }\n    return i\n}\n\nfunc decrementChecked(_ i: inout Int) throws -> Int {\n    if i == Int.min {\n        throw RxError.overflow\n    }\n    defer { i -= 1 }\n    return i\n}\n\n#if DEBUG\nimport Foundation\n\nfinal class SynchronizationTracker {\n    private let lock = RecursiveLock()\n\n    enum SynchronizationErrorMessages: String {\n        case variable = \"Two different threads are trying to assign the same `Variable.value` unsynchronized.\\n    This is undefined behavior because the end result (variable value) is nondeterministic and depends on the \\n    operating system thread scheduler. This will cause random behavior of your program.\\n\"\n        case `default` = \"Two different unsynchronized threads are trying to send some event simultaneously.\\n    This is undefined behavior because the ordering of the effects caused by these events is nondeterministic and depends on the \\n    operating system thread scheduler. This will result in a random behavior of your program.\\n\"\n    }\n\n    private var threads = [UnsafeMutableRawPointer: Int]()\n\n    private func synchronizationError(_ message: String) {\n        #if FATAL_SYNCHRONIZATION\n        rxFatalError(message)\n        #else\n        print(message)\n        #endif\n    }\n\n    func register(synchronizationErrorMessage: SynchronizationErrorMessages) {\n        lock.lock(); defer { self.lock.unlock() }\n        let pointer = Unmanaged.passUnretained(Thread.current).toOpaque()\n        let count = (threads[pointer] ?? 0) + 1\n\n        if count > 1 {\n            synchronizationError(\n                \"⚠️ Reentrancy anomaly was detected.\\n\" +\n                    \"  > Debugging: To debug this issue you can set a breakpoint in \\(#file):\\(#line) and observe the call stack.\\n\" +\n                    \"  > Problem: This behavior is breaking the observable sequence grammar. `next (error | completed)?`\\n\" +\n                    \"    This behavior breaks the grammar because there is overlapping between sequence events.\\n\" +\n                    \"    Observable sequence is trying to send an event before sending of previous event has finished.\\n\" +\n                    \"  > Interpretation: This could mean that there is some kind of unexpected cyclic dependency in your code,\\n\" +\n                    \"    or that the system is not behaving in the expected way.\\n\" +\n                    \"  > Remedy: If this is the expected behavior this message can be suppressed by adding `.observe(on:MainScheduler.asyncInstance)`\\n\" +\n                    \"    or by enqueuing sequence events in some other way.\\n\"\n            )\n        }\n\n        threads[pointer] = count\n\n        if threads.count > 1 {\n            synchronizationError(\n                \"⚠️ Synchronization anomaly was detected.\\n\" +\n                    \"  > Debugging: To debug this issue you can set a breakpoint in \\(#file):\\(#line) and observe the call stack.\\n\" +\n                    \"  > Problem: This behavior is breaking the observable sequence grammar. `next (error | completed)?`\\n\" +\n                    \"    This behavior breaks the grammar because there is overlapping between sequence events.\\n\" +\n                    \"    Observable sequence is trying to send an event before sending of previous event has finished.\\n\" +\n                    \"  > Interpretation: \" + synchronizationErrorMessage.rawValue +\n                    \"  > Remedy: If this is the expected behavior this message can be suppressed by adding `.observe(on:MainScheduler.asyncInstance)`\\n\" +\n                    \"    or by synchronizing sequence events in some other way.\\n\"\n            )\n        }\n    }\n\n    func unregister() {\n        lock.performLocked {\n            let pointer = Unmanaged.passUnretained(Thread.current).toOpaque()\n            self.threads[pointer] = (self.threads[pointer] ?? 1) - 1\n            if self.threads[pointer] == 0 {\n                self.threads[pointer] = nil\n            }\n        }\n    }\n}\n\n#endif\n\n/// RxSwift global hooks\npublic enum Hooks {\n    // Should capture call stack\n    public static var recordCallStackOnError: Bool = false\n}\n"
  },
  {
    "path": "RxSwift/RxMutableBox.swift",
    "content": "//\n//  RxMutableBox.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/22/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !canImport(Darwin)\n/// As Swift 5 was released, A patch to `Thread` for Linux\n/// changed `threadDictionary` to a `NSMutableDictionary` instead of\n/// a `Dictionary<String, Any>`: https://github.com/apple/swift-corelibs-foundation/pull/1762/files\n///\n/// This means that on non-Darwin platforms (Linux, Android, etc.), `RxMutableBox` must be a `NSObject`\n/// or it won't be possible to store it in `Thread.threadDictionary`.\n///\n/// For more information, read the discussion at:\n/// https://github.com/ReactiveX/RxSwift/issues/1911#issuecomment-479723298\nimport Foundation\n\n/// Creates mutable reference wrapper for any type.\nfinal class RxMutableBox<T>: NSObject {\n    /// Wrapped value\n    var value: T\n\n    /// Creates reference wrapper for `value`.\n    ///\n    /// - parameter value: Value to wrap.\n    init(_ value: T) {\n        self.value = value\n    }\n}\n#else\n/// Creates mutable reference wrapper for any type.\nfinal class RxMutableBox<T>: CustomDebugStringConvertible {\n    /// Wrapped value\n    var value: T\n\n    /// Creates reference wrapper for `value`.\n    ///\n    /// - parameter value: Value to wrap.\n    init(_ value: T) {\n        self.value = value\n    }\n}\n\nextension RxMutableBox {\n    /// - returns: Box description.\n    var debugDescription: String {\n        \"MutatingBox(\\(value))\"\n    }\n}\n#endif\n"
  },
  {
    "path": "RxSwift/SchedulerType.swift",
    "content": "//\n//  SchedulerType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n// Type that represents time interval in the context of RxSwift.\npublic typealias RxTimeInterval = DispatchTimeInterval\n\n/// Type that represents absolute time in the context of RxSwift.\npublic typealias RxTime = Date\n\n/// Represents an object that schedules units of work.\npublic protocol SchedulerType: ImmediateSchedulerType {\n    /// - returns: Current time.\n    var now: RxTime {\n        get\n    }\n\n    /**\n     Schedules an action to be executed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable\n\n    /**\n     Schedules a periodic piece of work.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter startAfter: Period after which initial work should be run.\n     - parameter period: Period for running the work periodically.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable\n}\n\nextension SchedulerType {\n    /**\n     Periodic task will be emulated using recursive scheduling.\n\n     - parameter state: Initial state passed to the action upon the first iteration.\n     - parameter startAfter: Period after which initial work should be run.\n     - parameter period: Period for running the work periodically.\n     - returns: The disposable object used to cancel the scheduled recurring action (best effort).\n     */\n    public func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable {\n        let schedule = SchedulePeriodicRecursive(scheduler: self, startAfter: startAfter, period: period, action: action, state: state)\n\n        return schedule.start()\n    }\n\n    func scheduleRecursive<State>(_ state: State, dueTime: RxTimeInterval, action: @escaping (State, AnyRecursiveScheduler<State>) -> Void) -> Disposable {\n        let scheduler = AnyRecursiveScheduler(scheduler: self, action: action)\n\n        scheduler.schedule(state, dueTime: dueTime)\n\n        return Disposables.create(with: scheduler.dispose)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift",
    "content": "//\n//  ConcurrentDispatchQueueScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 7/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n/// Abstracts the work that needs to be performed on a specific `dispatch_queue_t`. You can also pass a serial dispatch queue, it shouldn't cause any problems.\n///\n/// This scheduler is suitable when some work needs to be performed in background.\npublic class ConcurrentDispatchQueueScheduler: SchedulerType {\n    public typealias TimeInterval = Foundation.TimeInterval\n    public typealias Time = Date\n\n    public var now: Date {\n        Date()\n    }\n\n    let configuration: DispatchQueueConfiguration\n\n    /// Constructs new `ConcurrentDispatchQueueScheduler` that wraps `queue`.\n    ///\n    /// - parameter queue: Target dispatch queue.\n    /// - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n    public init(queue: DispatchQueue, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        configuration = DispatchQueueConfiguration(queue: queue, leeway: leeway)\n    }\n\n    /// Convenience init for scheduler that wraps one of the global concurrent dispatch queues.\n    ///\n    /// - parameter qos: Target global dispatch queue, by quality of service class.\n    /// - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n    public convenience init(qos: DispatchQoS, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        self.init(\n            queue: DispatchQueue(\n                label: \"rxswift.queue.\\(qos)\",\n                qos: qos,\n                attributes: [DispatchQueue.Attributes.concurrent],\n                target: nil\n            ),\n            leeway: leeway\n        )\n    }\n\n    /**\n     Schedules an action to be executed immediately.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public final func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        configuration.schedule(state, action: action)\n    }\n\n    /**\n     Schedules an action to be executed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public final func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        configuration.scheduleRelative(state, dueTime: dueTime, action: action)\n    }\n\n    /**\n     Schedules a periodic piece of work.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter startAfter: Period after which initial work should be run.\n     - parameter period: Period for running the work periodically.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable {\n        configuration.schedulePeriodic(state, startAfter: startAfter, period: period, action: action)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/ConcurrentMainScheduler.swift",
    "content": "//\n//  ConcurrentMainScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 10/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n/**\n Abstracts work that needs to be performed on `MainThread`. In case `schedule` methods are called from main thread, it will perform action immediately without scheduling.\n\n This scheduler is optimized for `subscribeOn` operator. If you want to observe observable sequence elements on main thread using `observeOn` operator,\n `MainScheduler` is more suitable for that purpose.\n */\npublic final class ConcurrentMainScheduler: SchedulerType {\n    public typealias TimeInterval = Foundation.TimeInterval\n    public typealias Time = Date\n\n    private let mainScheduler: MainScheduler\n    private let mainQueue: DispatchQueue\n\n    /// - returns: Current time.\n    public var now: Date {\n        mainScheduler.now as Date\n    }\n\n    private init(mainScheduler: MainScheduler) {\n        mainQueue = DispatchQueue.main\n        self.mainScheduler = mainScheduler\n    }\n\n    /// Singleton instance of `ConcurrentMainScheduler`\n    public static let instance = ConcurrentMainScheduler(mainScheduler: MainScheduler.instance)\n\n    /**\n     Schedules an action to be executed immediately.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        if DispatchQueue.isMain {\n            return action(state)\n        }\n\n        let cancel = SingleAssignmentDisposable()\n\n        mainQueue.async {\n            if cancel.isDisposed {\n                return\n            }\n\n            cancel.setDisposable(action(state))\n        }\n\n        return cancel\n    }\n\n    /**\n     Schedules an action to be executed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public final func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        mainScheduler.scheduleRelative(state, dueTime: dueTime, action: action)\n    }\n\n    /**\n     Schedules a periodic piece of work.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter startAfter: Period after which initial work should be run.\n     - parameter period: Period for running the work periodically.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable {\n        mainScheduler.schedulePeriodic(state, startAfter: startAfter, period: period, action: action)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/CurrentThreadScheduler.swift",
    "content": "//\n//  CurrentThreadScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 8/30/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n#if !canImport(Darwin)\nfileprivate enum CurrentThreadSchedulerQueueKey {\n    fileprivate static let instance = \"RxSwift.CurrentThreadScheduler.Queue\"\n}\n#else\nprivate class CurrentThreadSchedulerQueueKey: NSObject, NSCopying {\n    static let instance = CurrentThreadSchedulerQueueKey()\n    override private init() {\n        super.init()\n    }\n\n    override var hash: Int {\n        0\n    }\n\n    func copy(with _: NSZone? = nil) -> Any {\n        self\n    }\n}\n#endif\n\n/// Represents an object that schedules units of work on the current thread.\n///\n/// This is the default scheduler for operators that generate elements.\n///\n/// This scheduler is also sometimes called `trampoline scheduler`.\npublic class CurrentThreadScheduler: ImmediateSchedulerType {\n    typealias ScheduleQueue = RxMutableBox<Queue<ScheduledItemType>>\n\n    /// The singleton instance of the current thread scheduler.\n    public static let instance = CurrentThreadScheduler()\n\n    private static var isScheduleRequiredKey: pthread_key_t = { () -> pthread_key_t in\n        let key = UnsafeMutablePointer<pthread_key_t>.allocate(capacity: 1)\n        defer { key.deallocate() }\n\n        guard pthread_key_create(key, nil) == 0 else {\n            rxFatalError(\"isScheduleRequired key creation failed\")\n        }\n\n        return key.pointee\n    }()\n\n    private static var scheduleInProgressSentinel: UnsafeRawPointer = { () -> UnsafeRawPointer in\n        return UnsafeRawPointer(UnsafeMutablePointer<Int>.allocate(capacity: 1))\n    }()\n\n    static var queue: ScheduleQueue? {\n        get {\n            Thread.getThreadLocalStorageValueForKey(CurrentThreadSchedulerQueueKey.instance)\n        }\n        set {\n            Thread.setThreadLocalStorageValue(newValue, forKey: CurrentThreadSchedulerQueueKey.instance)\n        }\n    }\n\n    /// Gets a value that indicates whether the caller must call a `schedule` method.\n    public private(set) static var isScheduleRequired: Bool {\n        get {\n            pthread_getspecific(CurrentThreadScheduler.isScheduleRequiredKey) == nil\n        }\n        set(isScheduleRequired) {\n            if pthread_setspecific(CurrentThreadScheduler.isScheduleRequiredKey, isScheduleRequired ? nil : scheduleInProgressSentinel) != 0 {\n                rxFatalError(\"pthread_setspecific failed\")\n            }\n        }\n    }\n\n    /**\n     Schedules an action to be executed as soon as possible on current thread.\n\n     If this method is called on some thread that doesn't have `CurrentThreadScheduler` installed, scheduler will be\n     automatically installed and uninstalled after all work is performed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        if CurrentThreadScheduler.isScheduleRequired {\n            CurrentThreadScheduler.isScheduleRequired = false\n\n            let disposable = action(state)\n\n            defer {\n                CurrentThreadScheduler.isScheduleRequired = true\n                CurrentThreadScheduler.queue = nil\n            }\n\n            guard let queue = CurrentThreadScheduler.queue else {\n                return disposable\n            }\n\n            while let latest = queue.value.dequeue() {\n                if latest.isDisposed {\n                    continue\n                }\n                latest.invoke()\n            }\n\n            return disposable\n        }\n\n        let existingQueue = CurrentThreadScheduler.queue\n\n        let queue: RxMutableBox<Queue<ScheduledItemType>>\n        if let existingQueue {\n            queue = existingQueue\n        } else {\n            queue = RxMutableBox(Queue<ScheduledItemType>(capacity: 1))\n            CurrentThreadScheduler.queue = queue\n        }\n\n        let scheduledItem = ScheduledItem(action: action, state: state)\n        queue.value.enqueue(scheduledItem)\n\n        return scheduledItem\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/HistoricalScheduler.swift",
    "content": "//\n//  HistoricalScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Provides a virtual time scheduler that uses `Date` for absolute time and `TimeInterval` for relative time.\npublic class HistoricalScheduler: VirtualTimeScheduler<HistoricalSchedulerTimeConverter> {\n    /**\n       Creates a new historical scheduler with initial clock value.\n\n      - parameter initialClock: Initial value for virtual clock.\n     */\n    public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) {\n        super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter())\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/HistoricalSchedulerTimeConverter.swift",
    "content": "//\n//  HistoricalSchedulerTimeConverter.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Converts historical virtual time into real time.\n///\n/// Since historical virtual time is also measured in `Date`, this converter is identity function.\npublic struct HistoricalSchedulerTimeConverter: VirtualTimeConverterType {\n    /// Virtual time unit used that represents ticks of virtual clock.\n    public typealias VirtualTimeUnit = RxTime\n\n    /// Virtual time unit used to represent differences of virtual times.\n    public typealias VirtualTimeIntervalUnit = TimeInterval\n\n    /// Returns identical value of argument passed because historical virtual time is equal to real time, just\n    /// decoupled from local machine clock.\n    public func convertFromVirtualTime(_ virtualTime: VirtualTimeUnit) -> RxTime {\n        virtualTime\n    }\n\n    /// Returns identical value of argument passed because historical virtual time is equal to real time, just\n    /// decoupled from local machine clock.\n    public func convertToVirtualTime(_ time: RxTime) -> VirtualTimeUnit {\n        time\n    }\n\n    /// Returns identical value of argument passed because historical virtual time is equal to real time, just\n    /// decoupled from local machine clock.\n    public func convertFromVirtualTimeInterval(_ virtualTimeInterval: VirtualTimeIntervalUnit) -> TimeInterval {\n        virtualTimeInterval\n    }\n\n    /// Returns identical value of argument passed because historical virtual time is equal to real time, just\n    /// decoupled from local machine clock.\n    public func convertToVirtualTimeInterval(_ timeInterval: TimeInterval) -> VirtualTimeIntervalUnit {\n        timeInterval\n    }\n\n    /**\n      Offsets `Date` by time interval.\n\n      - parameter time: Time.\n      - parameter timeInterval: Time interval offset.\n      - returns: Time offsetted by time interval.\n     */\n    public func offsetVirtualTime(_ time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit {\n        time.addingTimeInterval(offset)\n    }\n\n    /// Compares two `Date`s.\n    public func compareVirtualTime(_ lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison {\n        switch lhs.compare(rhs as Date) {\n        case .orderedAscending:\n            .lessThan\n        case .orderedSame:\n            .equal\n        case .orderedDescending:\n            .greaterThan\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/Internal/DispatchQueueConfiguration.swift",
    "content": "//\n//  DispatchQueueConfiguration.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 7/23/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\nstruct DispatchQueueConfiguration {\n    let queue: DispatchQueue\n    let leeway: DispatchTimeInterval\n}\n\nextension DispatchQueueConfiguration {\n    func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let cancel = SingleAssignmentDisposable()\n\n        queue.async {\n            if cancel.isDisposed {\n                return\n            }\n\n            cancel.setDisposable(action(state))\n        }\n\n        return cancel\n    }\n\n    func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let deadline = DispatchTime.now() + dueTime\n\n        let compositeDisposable = CompositeDisposable()\n\n        let timer = DispatchSource.makeTimerSource(queue: queue)\n        timer.schedule(deadline: deadline, leeway: leeway)\n\n        // TODO:\n        // This looks horrible, and yes, it is.\n        // It looks like Apple has made a conceptual change here, and I'm unsure why.\n        // Need more info on this.\n        // It looks like just setting timer to fire and not holding a reference to it\n        // until deadline causes timer cancellation.\n        var timerReference: DispatchSourceTimer? = timer\n        let cancelTimer = Disposables.create {\n            timerReference?.cancel()\n            timerReference = nil\n        }\n\n        timer.setEventHandler(handler: {\n            if compositeDisposable.isDisposed {\n                return\n            }\n            _ = compositeDisposable.insert(action(state))\n            cancelTimer.dispose()\n        })\n        timer.resume()\n\n        _ = compositeDisposable.insert(cancelTimer)\n\n        return compositeDisposable\n    }\n\n    func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable {\n        let initial = DispatchTime.now() + startAfter\n\n        var timerState = state\n\n        let timer = DispatchSource.makeTimerSource(queue: queue)\n        timer.schedule(deadline: initial, repeating: period, leeway: leeway)\n\n        // TODO:\n        // This looks horrible, and yes, it is.\n        // It looks like Apple has made a conceptual change here, and I'm unsure why.\n        // Need more info on this.\n        // It looks like just setting timer to fire and not holding a reference to it\n        // until deadline causes timer cancellation.\n        var timerReference: DispatchSourceTimer? = timer\n        let cancelTimer = Disposables.create {\n            timerReference?.cancel()\n            timerReference = nil\n        }\n\n        timer.setEventHandler(handler: {\n            if cancelTimer.isDisposed {\n                return\n            }\n            timerState = action(timerState)\n        })\n        timer.resume()\n\n        return cancelTimer\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/Internal/InvocableScheduledItem.swift",
    "content": "//\n//  InvocableScheduledItem.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 11/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct InvocableScheduledItem<I: InvocableWithValueType>: InvocableType {\n    let invocable: I\n    let state: I.Value\n\n    init(invocable: I, state: I.Value) {\n        self.invocable = invocable\n        self.state = state\n    }\n\n    func invoke() {\n        invocable.invoke(state)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/Internal/InvocableType.swift",
    "content": "//\n//  InvocableType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 11/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol InvocableType {\n    func invoke()\n}\n\nprotocol InvocableWithValueType {\n    associatedtype Value\n\n    func invoke(_ value: Value)\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/Internal/ScheduledItem.swift",
    "content": "//\n//  ScheduledItem.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct ScheduledItem<T>:\n    ScheduledItemType,\n    InvocableType\n{\n    typealias Action = (T) -> Disposable\n\n    private let action: Action\n    private let state: T\n\n    private let disposable = SingleAssignmentDisposable()\n\n    var isDisposed: Bool {\n        disposable.isDisposed\n    }\n\n    init(action: @escaping Action, state: T) {\n        self.action = action\n        self.state = state\n    }\n\n    func invoke() {\n        disposable.setDisposable(action(state))\n    }\n\n    func dispose() {\n        disposable.dispose()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/Internal/ScheduledItemType.swift",
    "content": "//\n//  ScheduledItemType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 11/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprotocol ScheduledItemType:\n    Cancelable,\n    InvocableType\n{\n    func invoke()\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/MainScheduler.swift",
    "content": "//\n//  MainScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\n#if !os(Linux)\nimport Foundation\n#endif\n\n/**\n Abstracts work that needs to be performed on `DispatchQueue.main`. In case `schedule` methods are called from `DispatchQueue.main`, it will perform action immediately without scheduling.\n\n This scheduler is usually used to perform UI work.\n\n Main scheduler is a specialization of `SerialDispatchQueueScheduler`.\n\n This scheduler is optimized for `observeOn` operator. To ensure observable sequence is subscribed on main thread using `subscribeOn`\n operator please use `ConcurrentMainScheduler` because it is more optimized for that purpose.\n */\npublic final class MainScheduler: SerialDispatchQueueScheduler {\n    private let mainQueue: DispatchQueue\n\n    let numberEnqueued = AtomicInt(0)\n\n    /// Initializes new instance of `MainScheduler`.\n    public init() {\n        mainQueue = DispatchQueue.main\n        super.init(serialQueue: mainQueue)\n    }\n\n    /// Singleton instance of `MainScheduler`\n    public static let instance = MainScheduler()\n\n    /// Singleton instance of `MainScheduler` that always schedules work asynchronously\n    /// and doesn't perform optimizations for calls scheduled from main queue.\n    public static let asyncInstance = SerialDispatchQueueScheduler(serialQueue: DispatchQueue.main)\n\n    /// In case this method is called on a background thread it will throw an exception.\n    public static func ensureExecutingOnScheduler(errorMessage: String? = nil) {\n        if !DispatchQueue.isMain {\n            rxFatalError(errorMessage ?? \"Executing on background thread. Please use `MainScheduler.instance.schedule` to schedule work on main thread.\")\n        }\n    }\n\n    /// In case this method is running on a background thread it will throw an exception.\n    public static func ensureRunningOnMainThread(errorMessage: String? = nil) {\n        #if !os(Linux) // isMainThread is not implemented in Linux Foundation\n        guard Thread.isMainThread else {\n            rxFatalError(errorMessage ?? \"Running on background thread.\")\n        }\n        #endif\n    }\n\n    override func scheduleInternal<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let previousNumberEnqueued = increment(numberEnqueued)\n\n        if DispatchQueue.isMain, previousNumberEnqueued == 0 {\n            let disposable = action(state)\n            decrement(numberEnqueued)\n            return disposable\n        }\n\n        let cancel = SingleAssignmentDisposable()\n\n        mainQueue.async {\n            if !cancel.isDisposed {\n                cancel.setDisposable(action(state))\n            }\n\n            decrement(self.numberEnqueued)\n        }\n\n        return cancel\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/OperationQueueScheduler.swift",
    "content": "//\n//  OperationQueueScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n/// Abstracts the work that needs to be performed on a specific `NSOperationQueue`.\n///\n/// This scheduler is suitable for cases when there is some bigger chunk of work that needs to be performed in background and you want to fine tune concurrent processing using `maxConcurrentOperationCount`.\npublic class OperationQueueScheduler: ImmediateSchedulerType {\n    public let operationQueue: OperationQueue\n    public let queuePriority: Operation.QueuePriority\n\n    /// Constructs new instance of `OperationQueueScheduler` that performs work on `operationQueue`.\n    ///\n    /// - parameter operationQueue: Operation queue targeted to perform work on.\n    /// - parameter queuePriority: Queue priority which will be assigned to new operations.\n    public init(operationQueue: OperationQueue, queuePriority: Operation.QueuePriority = .normal) {\n        self.operationQueue = operationQueue\n        self.queuePriority = queuePriority\n    }\n\n    /**\n     Schedules an action to be executed recursively.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let cancel = SingleAssignmentDisposable()\n\n        let operation = BlockOperation {\n            if cancel.isDisposed {\n                return\n            }\n\n            cancel.setDisposable(action(state))\n        }\n\n        operation.queuePriority = queuePriority\n\n        operationQueue.addOperation(operation)\n\n        return cancel\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/RecursiveScheduler.swift",
    "content": "//\n//  RecursiveScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/7/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nprivate enum ScheduleState {\n    case initial\n    case added(CompositeDisposable.DisposeKey)\n    case done\n}\n\n/// Type erased recursive scheduler.\nfinal class AnyRecursiveScheduler<State> {\n    typealias Action = (State, AnyRecursiveScheduler<State>) -> Void\n\n    private let lock = RecursiveLock()\n\n    // state\n    private let group = CompositeDisposable()\n\n    private var scheduler: SchedulerType\n    private var action: Action?\n\n    init(scheduler: SchedulerType, action: @escaping Action) {\n        self.action = action\n        self.scheduler = scheduler\n    }\n\n    /**\n     Schedules an action to be executed recursively.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the recursive action.\n     */\n    func schedule(_ state: State, dueTime: RxTimeInterval) {\n        var scheduleState: ScheduleState = .initial\n\n        let d = scheduler.scheduleRelative(state, dueTime: dueTime) { state -> Disposable in\n            // best effort\n            if self.group.isDisposed {\n                return Disposables.create()\n            }\n\n            let action = self.lock.performLocked { () -> Action? in\n                switch scheduleState {\n                case let .added(removeKey):\n                    self.group.remove(for: removeKey)\n                case .initial:\n                    break\n                case .done:\n                    break\n                }\n\n                scheduleState = .done\n\n                return self.action\n            }\n\n            if let action {\n                action(state, self)\n            }\n\n            return Disposables.create()\n        }\n\n        lock.performLocked {\n            switch scheduleState {\n            case .added:\n                rxFatalError(\"Invalid state\")\n            case .initial:\n                if let removeKey = self.group.insert(d) {\n                    scheduleState = .added(removeKey)\n                } else {\n                    scheduleState = .done\n                }\n            case .done:\n                break\n            }\n        }\n    }\n\n    /// Schedules an action to be executed recursively.\n    ///\n    /// - parameter state: State passed to the action to be executed.\n    func schedule(_ state: State) {\n        var scheduleState: ScheduleState = .initial\n\n        let d = scheduler.schedule(state) { state -> Disposable in\n            // best effort\n            if self.group.isDisposed {\n                return Disposables.create()\n            }\n\n            let action = self.lock.performLocked { () -> Action? in\n                switch scheduleState {\n                case let .added(removeKey):\n                    self.group.remove(for: removeKey)\n                case .initial:\n                    break\n                case .done:\n                    break\n                }\n\n                scheduleState = .done\n\n                return self.action\n            }\n\n            if let action {\n                action(state, self)\n            }\n\n            return Disposables.create()\n        }\n\n        lock.performLocked {\n            switch scheduleState {\n            case .added:\n                rxFatalError(\"Invalid state\")\n            case .initial:\n                if let removeKey = self.group.insert(d) {\n                    scheduleState = .added(removeKey)\n                } else {\n                    scheduleState = .done\n                }\n            case .done:\n                break\n            }\n        }\n    }\n\n    func dispose() {\n        lock.performLocked {\n            self.action = nil\n        }\n        group.dispose()\n    }\n}\n\n/// Type erased recursive scheduler.\nfinal class RecursiveImmediateScheduler<State> {\n    typealias Action = (_ state: State, _ recurse: (State) -> Void) -> Void\n\n    private var lock = SpinLock()\n    private let group = CompositeDisposable()\n\n    private var action: Action?\n    private let scheduler: ImmediateSchedulerType\n\n    init(action: @escaping Action, scheduler: ImmediateSchedulerType) {\n        self.action = action\n        self.scheduler = scheduler\n    }\n\n    // immediate scheduling\n\n    /// Schedules an action to be executed recursively.\n    ///\n    /// - parameter state: State passed to the action to be executed.\n    func schedule(_ state: State) {\n        var scheduleState: ScheduleState = .initial\n\n        let d = scheduler.schedule(state) { state -> Disposable in\n            // best effort\n            if self.group.isDisposed {\n                return Disposables.create()\n            }\n\n            let action = self.lock.performLocked { () -> Action? in\n                switch scheduleState {\n                case let .added(removeKey):\n                    self.group.remove(for: removeKey)\n                case .initial:\n                    break\n                case .done:\n                    break\n                }\n\n                scheduleState = .done\n\n                return self.action\n            }\n\n            if let action {\n                action(state, self.schedule)\n            }\n\n            return Disposables.create()\n        }\n\n        lock.performLocked {\n            switch scheduleState {\n            case .added:\n                rxFatalError(\"Invalid state\")\n            case .initial:\n                if let removeKey = self.group.insert(d) {\n                    scheduleState = .added(removeKey)\n                } else {\n                    scheduleState = .done\n                }\n            case .done:\n                break\n            }\n        }\n    }\n\n    func dispose() {\n        lock.performLocked {\n            self.action = nil\n        }\n        group.dispose()\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/SchedulerServices+Emulation.swift",
    "content": "//\n//  SchedulerServices+Emulation.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 6/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nenum SchedulePeriodicRecursiveCommand {\n    case tick\n    case dispatchStart\n}\n\nfinal class SchedulePeriodicRecursive<State> {\n    typealias RecursiveAction = (State) -> State\n    typealias RecursiveScheduler = AnyRecursiveScheduler<SchedulePeriodicRecursiveCommand>\n\n    private let scheduler: SchedulerType\n    private let startAfter: RxTimeInterval\n    private let period: RxTimeInterval\n    private let action: RecursiveAction\n\n    private var state: State\n    private let pendingTickCount = AtomicInt(0)\n\n    init(scheduler: SchedulerType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping RecursiveAction, state: State) {\n        self.scheduler = scheduler\n        self.startAfter = startAfter\n        self.period = period\n        self.action = action\n        self.state = state\n    }\n\n    func start() -> Disposable {\n        scheduler.scheduleRecursive(SchedulePeriodicRecursiveCommand.tick, dueTime: startAfter, action: tick)\n    }\n\n    func tick(_ command: SchedulePeriodicRecursiveCommand, scheduler: RecursiveScheduler) {\n        // Tries to emulate periodic scheduling as best as possible.\n        // The problem that could arise is if handling periodic ticks take too long, or\n        // tick interval is short.\n        switch command {\n        case .tick:\n            scheduler.schedule(.tick, dueTime: period)\n\n            // The idea is that if on tick there wasn't any item enqueued, schedule to perform work immediately.\n            // Else work will be scheduled after previous enqueued work completes.\n            if increment(pendingTickCount) == 0 {\n                tick(.dispatchStart, scheduler: scheduler)\n            }\n\n        case .dispatchStart:\n            state = action(state)\n            // Start work and schedule check is this last batch of work\n            if decrement(pendingTickCount) > 1 {\n                // This gives priority to scheduler emulation, it's not perfect, but helps\n                scheduler.schedule(SchedulePeriodicRecursiveCommand.dispatchStart)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/SerialDispatchQueueScheduler.swift",
    "content": "//\n//  SerialDispatchQueueScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\n\n/**\n Abstracts the work that needs to be performed on a specific `dispatch_queue_t`. It will make sure\n that even if concurrent dispatch queue is passed, it's transformed into a serial one.\n\n It is extremely important that this scheduler is serial, because\n certain operator perform optimizations that rely on that property.\n\n Because there is no way of detecting is passed dispatch queue serial or\n concurrent, for every queue that is being passed, worst case (concurrent)\n will be assumed, and internal serial proxy dispatch queue will be created.\n\n This scheduler can also be used with internal serial queue alone.\n\n In case some customization need to be made on it before usage,\n internal serial queue can be customized using `serialQueueConfiguration`\n callback.\n */\npublic class SerialDispatchQueueScheduler: SchedulerType {\n    public typealias TimeInterval = Foundation.TimeInterval\n    public typealias Time = Date\n\n    /// - returns: Current time.\n    public var now: Date {\n        Date()\n    }\n\n    let configuration: DispatchQueueConfiguration\n\n    /**\n     Constructs new `SerialDispatchQueueScheduler` that wraps `serialQueue`.\n\n     - parameter serialQueue: Target dispatch queue.\n     - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n     */\n    init(serialQueue: DispatchQueue, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        configuration = DispatchQueueConfiguration(queue: serialQueue, leeway: leeway)\n    }\n\n    /**\n     Constructs new `SerialDispatchQueueScheduler` with internal serial queue named `internalSerialQueueName`.\n\n     Additional dispatch queue properties can be set after dispatch queue is created using `serialQueueConfiguration`.\n\n     - parameter internalSerialQueueName: Name of internal serial dispatch queue.\n     - parameter serialQueueConfiguration: Additional configuration of internal serial dispatch queue.\n     - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n     */\n    public convenience init(internalSerialQueueName: String, serialQueueConfiguration: ((DispatchQueue) -> Void)? = nil, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        let queue = DispatchQueue(label: internalSerialQueueName, attributes: [])\n        serialQueueConfiguration?(queue)\n        self.init(serialQueue: queue, leeway: leeway)\n    }\n\n    /**\n     Constructs new `SerialDispatchQueueScheduler` named `internalSerialQueueName` that wraps `queue`.\n\n     - parameter queue: Possibly concurrent dispatch queue used to perform work.\n     - parameter internalSerialQueueName: Name of internal serial dispatch queue proxy.\n     - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n     */\n    public convenience init(queue: DispatchQueue, internalSerialQueueName: String, leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        // Swift 3.0 IUO\n        let serialQueue = DispatchQueue(\n            label: internalSerialQueueName,\n            attributes: [],\n            target: queue\n        )\n        self.init(serialQueue: serialQueue, leeway: leeway)\n    }\n\n    /**\n     Constructs new `SerialDispatchQueueScheduler` that wraps one of the global concurrent dispatch queues.\n\n     - parameter qos: Identifier for global dispatch queue with specified quality of service class.\n     - parameter internalSerialQueueName: Custom name for internal serial dispatch queue proxy.\n     - parameter leeway: The amount of time, in nanoseconds, that the system will defer the timer.\n     */\n    @available(macOS 10.10, *)\n    public convenience init(qos: DispatchQoS, internalSerialQueueName: String = \"rx.global_dispatch_queue.serial\", leeway: DispatchTimeInterval = DispatchTimeInterval.nanoseconds(0)) {\n        self.init(queue: DispatchQueue.global(qos: qos.qosClass), internalSerialQueueName: internalSerialQueueName, leeway: leeway)\n    }\n\n    /**\n     Schedules an action to be executed immediately.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public final func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        scheduleInternal(state, action: action)\n    }\n\n    func scheduleInternal<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        configuration.schedule(state, action: action)\n    }\n\n    /**\n     Schedules an action to be executed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public final func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        configuration.scheduleRelative(state, dueTime: dueTime, action: action)\n    }\n\n    /**\n     Schedules a periodic piece of work.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter startAfter: Period after which initial work should be run.\n     - parameter period: Period for running the work periodically.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedulePeriodic<StateType>(_ state: StateType, startAfter: RxTimeInterval, period: RxTimeInterval, action: @escaping (StateType) -> StateType) -> Disposable {\n        configuration.schedulePeriodic(state, startAfter: startAfter, period: period, action: action)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/VirtualTimeConverterType.swift",
    "content": "//\n//  VirtualTimeConverterType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 12/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Parametrization for virtual time used by `VirtualTimeScheduler`s.\npublic protocol VirtualTimeConverterType {\n    /// Virtual time unit used that represents ticks of virtual clock.\n    associatedtype VirtualTimeUnit\n\n    /// Virtual time unit used to represent differences of virtual times.\n    associatedtype VirtualTimeIntervalUnit\n\n    /**\n      Converts virtual time to real time.\n\n      - parameter virtualTime: Virtual time to convert to `Date`.\n      - returns: `Date` corresponding to virtual time.\n     */\n    func convertFromVirtualTime(_ virtualTime: VirtualTimeUnit) -> RxTime\n\n    /**\n      Converts real time to virtual time.\n\n      - parameter time: `Date` to convert to virtual time.\n      - returns: Virtual time corresponding to `Date`.\n     */\n    func convertToVirtualTime(_ time: RxTime) -> VirtualTimeUnit\n\n    /**\n      Converts from virtual time interval to `TimeInterval`.\n\n      - parameter virtualTimeInterval: Virtual time interval to convert to `TimeInterval`.\n      - returns: `TimeInterval` corresponding to virtual time interval.\n     */\n    func convertFromVirtualTimeInterval(_ virtualTimeInterval: VirtualTimeIntervalUnit) -> TimeInterval\n\n    /**\n      Converts from `TimeInterval` to virtual time interval.\n\n      - parameter timeInterval: `TimeInterval` to convert to virtual time interval.\n      - returns: Virtual time interval corresponding to time interval.\n     */\n    func convertToVirtualTimeInterval(_ timeInterval: TimeInterval) -> VirtualTimeIntervalUnit\n\n    /**\n      Offsets virtual time by virtual time interval.\n\n      - parameter time: Virtual time.\n      - parameter offset: Virtual time interval.\n      - returns: Time corresponding to time offsetted by virtual time interval.\n     */\n    func offsetVirtualTime(_ time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit\n\n    /**\n      This is additional abstraction because `Date` is unfortunately not comparable.\n      Extending `Date` with `Comparable` would be too risky because of possible collisions with other libraries.\n     */\n    func compareVirtualTime(_ lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison\n}\n\n/**\n Virtual time comparison result.\n\n This is additional abstraction because `Date` is unfortunately not comparable.\n Extending `Date` with `Comparable` would be too risky because of possible collisions with other libraries.\n */\npublic enum VirtualTimeComparison {\n    /// lhs < rhs.\n    case lessThan\n    /// lhs == rhs.\n    case equal\n    /// lhs > rhs.\n    case greaterThan\n}\n\nextension VirtualTimeComparison {\n    /// lhs < rhs.\n    var lessThen: Bool {\n        self == .lessThan\n    }\n\n    /// lhs > rhs\n    var greaterThan: Bool {\n        self == .greaterThan\n    }\n\n    /// lhs == rhs\n    var equal: Bool {\n        self == .equal\n    }\n}\n"
  },
  {
    "path": "RxSwift/Schedulers/VirtualTimeScheduler.swift",
    "content": "//\n//  VirtualTimeScheduler.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Base class for virtual time schedulers using a priority queue for scheduled items.\nopen class VirtualTimeScheduler<Converter: VirtualTimeConverterType>:\n    SchedulerType\n{\n    public typealias VirtualTime = Converter.VirtualTimeUnit\n    public typealias VirtualTimeInterval = Converter.VirtualTimeIntervalUnit\n\n    private var running: Bool\n\n    private var currentClock: VirtualTime\n\n    private var schedulerQueue: PriorityQueue<VirtualSchedulerItem<VirtualTime>>\n    private var converter: Converter\n\n    private var nextId = 0\n\n    private let thread: Thread\n\n    /// - returns: Current time.\n    public var now: RxTime {\n        converter.convertFromVirtualTime(clock)\n    }\n\n    /// - returns: Scheduler's absolute time clock value.\n    public var clock: VirtualTime {\n        currentClock\n    }\n\n    /// Creates a new virtual time scheduler.\n    ///\n    /// - parameter initialClock: Initial value for the clock.\n    public init(initialClock: VirtualTime, converter: Converter) {\n        currentClock = initialClock\n        running = false\n        self.converter = converter\n        thread = Thread.current\n        schedulerQueue = PriorityQueue(hasHigherPriority: {\n            switch converter.compareVirtualTime($0.time, $1.time) {\n            case .lessThan:\n                true\n            case .equal:\n                $0.id < $1.id\n            case .greaterThan:\n                false\n            }\n        }, isEqual: { $0 === $1 })\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    /**\n     Schedules an action to be executed immediately.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func schedule<StateType>(_ state: StateType, action: @escaping (StateType) -> Disposable) -> Disposable {\n        scheduleRelative(state, dueTime: .microseconds(0)) { a in\n            action(a)\n        }\n    }\n\n    /**\n     Schedules an action to be executed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter dueTime: Relative time after which to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func scheduleRelative<StateType>(_ state: StateType, dueTime: RxTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let time = now.addingDispatchInterval(dueTime)\n        let absoluteTime = converter.convertToVirtualTime(time)\n        let adjustedTime = adjustScheduledTime(absoluteTime)\n        return scheduleAbsoluteVirtual(state, time: adjustedTime, action: action)\n    }\n\n    /**\n     Schedules an action to be executed after relative time has passed.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter time: Absolute time when to execute the action. If this is less or equal then `now`, `now + 1`  will be used.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func scheduleRelativeVirtual<StateType>(_ state: StateType, dueTime: VirtualTimeInterval, action: @escaping (StateType) -> Disposable) -> Disposable {\n        let time = converter.offsetVirtualTime(clock, offset: dueTime)\n        return scheduleAbsoluteVirtual(state, time: time, action: action)\n    }\n\n    /**\n     Schedules an action to be executed at absolute virtual time.\n\n     - parameter state: State passed to the action to be executed.\n     - parameter time: Absolute time when to execute the action.\n     - parameter action: Action to be executed.\n     - returns: The disposable object used to cancel the scheduled action (best effort).\n     */\n    public func scheduleAbsoluteVirtual<StateType>(_ state: StateType, time: VirtualTime, action: @escaping (StateType) -> Disposable) -> Disposable {\n        ensureRunningOnCorrectThread()\n        let compositeDisposable = CompositeDisposable()\n\n        let item = VirtualSchedulerItem(action: {\n            action(state)\n        }, time: time, id: nextId)\n\n        nextId += 1\n\n        schedulerQueue.enqueue(item)\n\n        _ = compositeDisposable.insert(item)\n\n        return compositeDisposable\n    }\n\n    /// Adjusts time of scheduling before adding item to schedule queue.\n    open func adjustScheduledTime(_ time: VirtualTime) -> VirtualTime {\n        time\n    }\n\n    /// Starts the virtual time scheduler.\n    public func start() {\n        if running {\n            return\n        }\n\n        ensureRunningOnCorrectThread()\n        running = true\n        repeat {\n            guard let next = findNext() else {\n                break\n            }\n\n            if converter.compareVirtualTime(next.time, clock).greaterThan {\n                currentClock = next.time\n            }\n\n            next.invoke()\n            schedulerQueue.remove(next)\n        } while running\n\n        running = false\n    }\n\n    func findNext() -> VirtualSchedulerItem<VirtualTime>? {\n        while let front = schedulerQueue.peek() {\n            if front.isDisposed {\n                schedulerQueue.remove(front)\n                continue\n            }\n\n            return front\n        }\n\n        return nil\n    }\n\n    /// Advances the scheduler's clock to the specified time, running all work till that point.\n    ///\n    /// - parameter virtualTime: Absolute time to advance the scheduler's clock to.\n    public func advanceTo(_ virtualTime: VirtualTime) {\n        if running {\n            fatalError(\"Scheduler is already running\")\n        }\n\n        ensureRunningOnCorrectThread()\n        running = true\n        repeat {\n            guard let next = findNext() else {\n                break\n            }\n\n            if converter.compareVirtualTime(next.time, virtualTime).greaterThan {\n                break\n            }\n\n            if converter.compareVirtualTime(next.time, clock).greaterThan {\n                currentClock = next.time\n            }\n            next.invoke()\n            schedulerQueue.remove(next)\n        } while running\n\n        currentClock = virtualTime\n        running = false\n    }\n\n    /// Advances the scheduler's clock by the specified relative time.\n    public func sleep(_ virtualInterval: VirtualTimeInterval) {\n        ensureRunningOnCorrectThread()\n        let sleepTo = converter.offsetVirtualTime(clock, offset: virtualInterval)\n        if converter.compareVirtualTime(sleepTo, clock).lessThen {\n            fatalError(\"Can't sleep to past.\")\n        }\n\n        currentClock = sleepTo\n    }\n\n    /// Stops the virtual time scheduler.\n    public func stop() {\n        ensureRunningOnCorrectThread()\n        running = false\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n\n    private func ensureRunningOnCorrectThread() {\n        guard Thread.current == thread else {\n            rxFatalError(\"Executing on the wrong thread. Please ensure all work on the same thread.\")\n        }\n    }\n}\n\n// MARK: description\n\nextension VirtualTimeScheduler: CustomDebugStringConvertible {\n    /// A textual representation of `self`, suitable for debugging.\n    public var debugDescription: String {\n        schedulerQueue.debugDescription\n    }\n}\n\nfinal class VirtualSchedulerItem<Time>:\n    Disposable\n{\n    typealias Action = () -> Disposable\n\n    let action: Action\n    let time: Time\n    let id: Int\n\n    var isDisposed: Bool {\n        disposable.isDisposed\n    }\n\n    var disposable = SingleAssignmentDisposable()\n\n    init(action: @escaping Action, time: Time, id: Int) {\n        self.action = action\n        self.time = time\n        self.id = id\n    }\n\n    func invoke() {\n        disposable.setDisposable(action())\n    }\n\n    func dispose() {\n        disposable.dispose()\n    }\n}\n\nextension VirtualSchedulerItem:\n    CustomDebugStringConvertible\n{\n    var debugDescription: String {\n        \"\\(time)\"\n    }\n}\n"
  },
  {
    "path": "RxSwift/Subjects/AsyncSubject.swift",
    "content": "//\n//  AsyncSubject.swift\n//  RxSwift\n//\n//  Created by Victor Galán on 07/01/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n/// An AsyncSubject emits the last value (and only the last value) emitted by the source Observable,\n/// and only after that source Observable completes.\n///\n/// (If the source Observable does not emit any values, the AsyncSubject also completes without emitting any values.)\npublic final class AsyncSubject<Element>:\n    Observable<Element>,\n    SubjectType,\n    ObserverType,\n    SynchronizedUnsubscribeType\n{\n    public typealias SubjectObserverType = AsyncSubject<Element>\n\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    /// Indicates whether the subject has any observers\n    public var hasObservers: Bool {\n        lock.performLocked {\n            self.observers.count > 0\n        }\n    }\n\n    let lock = RecursiveLock()\n\n    // state\n    private var observers = Observers()\n    private var isStopped = false\n    private var stoppedEvent = nil as Event<Element>? {\n        didSet {\n            isStopped = stoppedEvent != nil\n        }\n    }\n\n    private var lastElement: Element?\n\n    #if DEBUG\n    private let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    /// Creates a subject.\n    override public init() {\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n        super.init()\n    }\n\n    /// Notifies all subscribed observers about next event.\n    ///\n    /// - parameter event: Event to send to the observers.\n    public func on(_ event: Event<Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        let (observers, event) = synchronized_on(event)\n        switch event {\n        case .next:\n            dispatch(observers, event)\n            dispatch(observers, .completed)\n        case .completed:\n            dispatch(observers, event)\n        case .error:\n            dispatch(observers, event)\n        }\n    }\n\n    func synchronized_on(_ event: Event<Element>) -> (Observers, Event<Element>) {\n        lock.lock(); defer { self.lock.unlock() }\n        if isStopped {\n            return (Observers(), .completed)\n        }\n\n        switch event {\n        case let .next(element):\n            lastElement = element\n            return (Observers(), .completed)\n        case .error:\n            stoppedEvent = event\n\n            let observers = observers\n            self.observers.removeAll()\n\n            return (observers, event)\n        case .completed:\n            let observers = observers\n            self.observers.removeAll()\n\n            if let lastElement {\n                stoppedEvent = .next(lastElement)\n                return (observers, .next(lastElement))\n            } else {\n                stoppedEvent = event\n                return (observers, .completed)\n            }\n        }\n    }\n\n    /// Subscribes an observer to the subject.\n    ///\n    /// - parameter observer: Observer to subscribe to the subject.\n    /// - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n    override public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.performLocked { self.synchronized_subscribe(observer) }\n    }\n\n    func synchronized_subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if let stoppedEvent {\n            switch stoppedEvent {\n            case .next:\n                observer.on(stoppedEvent)\n                observer.on(.completed)\n            case .completed:\n                observer.on(stoppedEvent)\n            case .error:\n                observer.on(stoppedEvent)\n            }\n            return Disposables.create()\n        }\n\n        let key = observers.insert(observer.on)\n\n        return SubscriptionDisposable(owner: self, key: key)\n    }\n\n    func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        lock.performLocked { self.synchronized_unsubscribe(disposeKey) }\n    }\n\n    func synchronized_unsubscribe(_ disposeKey: DisposeKey) {\n        _ = observers.removeKey(disposeKey)\n    }\n\n    /// Returns observer interface for subject.\n    public func asObserver() -> AsyncSubject<Element> {\n        self\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/Subjects/BehaviorSubject.swift",
    "content": "//\n//  BehaviorSubject.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents a value that changes over time.\n///\n/// Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications.\npublic final class BehaviorSubject<Element>:\n    Observable<Element>,\n    SubjectType,\n    ObserverType,\n    SynchronizedUnsubscribeType,\n    Cancelable\n{\n    public typealias SubjectObserverType = BehaviorSubject<Element>\n\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    /// Indicates whether the subject has any observers\n    public var hasObservers: Bool {\n        lock.performLocked { self.observers.count > 0 }\n    }\n\n    let lock = RecursiveLock()\n\n    // state\n    private var disposed = false\n    private var element: Element\n    private var observers = Observers()\n    private var stoppedEvent: Event<Element>?\n\n    #if DEBUG\n    private let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    /// Indicates whether the subject has been disposed.\n    public var isDisposed: Bool {\n        disposed\n    }\n\n    /// Initializes a new instance of the subject that caches its last value and starts with the specified value.\n    ///\n    /// - parameter value: Initial value sent to observers when no other value has been received by the subject yet.\n    public init(value: Element) {\n        element = value\n\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    /// Gets the current value or throws an error.\n    ///\n    /// - returns: Latest value.\n    public func value() throws -> Element {\n        lock.lock(); defer { self.lock.unlock() }\n        if isDisposed {\n            throw RxError.disposed(object: self)\n        }\n\n        if let error = stoppedEvent?.error {\n            // intentionally throw exception\n            throw error\n        } else {\n            return element\n        }\n    }\n\n    /// Notifies all subscribed observers about next event.\n    ///\n    /// - parameter event: Event to send to the observers.\n    public func on(_ event: Event<Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        dispatch(synchronized_on(event), event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) -> Observers {\n        lock.lock(); defer { self.lock.unlock() }\n        if stoppedEvent != nil || isDisposed {\n            return Observers()\n        }\n\n        switch event {\n        case let .next(element):\n            self.element = element\n        case .error, .completed:\n            stoppedEvent = event\n        }\n\n        return observers\n    }\n\n    /// Subscribes an observer to the subject.\n    ///\n    /// - parameter observer: Observer to subscribe to the subject.\n    /// - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n    override public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.performLocked { self.synchronized_subscribe(observer) }\n    }\n\n    func synchronized_subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if isDisposed {\n            observer.on(.error(RxError.disposed(object: self)))\n            return Disposables.create()\n        }\n\n        if let stoppedEvent {\n            observer.on(stoppedEvent)\n            return Disposables.create()\n        }\n\n        let key = observers.insert(observer.on)\n        observer.on(.next(element))\n\n        return SubscriptionDisposable(owner: self, key: key)\n    }\n\n    func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        lock.performLocked { self.synchronized_unsubscribe(disposeKey) }\n    }\n\n    func synchronized_unsubscribe(_ disposeKey: DisposeKey) {\n        if isDisposed {\n            return\n        }\n\n        _ = observers.removeKey(disposeKey)\n    }\n\n    /// Returns observer interface for subject.\n    public func asObserver() -> BehaviorSubject<Element> {\n        self\n    }\n\n    /// Unsubscribe all observers and release resources.\n    public func dispose() {\n        lock.performLocked {\n            self.disposed = true\n            self.observers.removeAll()\n            self.stoppedEvent = nil\n        }\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/Subjects/PublishSubject.swift",
    "content": "//\n//  PublishSubject.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 2/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an object that is both an observable sequence as well as an observer.\n///\n/// Each notification is broadcasted to all subscribed observers.\npublic final class PublishSubject<Element>:\n    Observable<Element>,\n    SubjectType,\n    Cancelable,\n    ObserverType,\n    SynchronizedUnsubscribeType\n{\n    public typealias SubjectObserverType = PublishSubject<Element>\n\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    /// Indicates whether the subject has any observers\n    public var hasObservers: Bool {\n        lock.performLocked { self.observers.count > 0 }\n    }\n\n    private let lock = RecursiveLock()\n\n    // state\n    private var disposed = false\n    private var observers = Observers()\n    private var stopped = false\n    private var stoppedEvent = nil as Event<Element>?\n\n    #if DEBUG\n    private let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    /// Indicates whether the subject has been isDisposed.\n    public var isDisposed: Bool {\n        disposed\n    }\n\n    /// Creates a subject.\n    override public init() {\n        super.init()\n        #if TRACE_RESOURCES\n        _ = Resources.incrementTotal()\n        #endif\n    }\n\n    /// Notifies all subscribed observers about next event.\n    ///\n    /// - parameter event: Event to send to the observers.\n    public func on(_ event: Event<Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        dispatch(synchronized_on(event), event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) -> Observers {\n        lock.lock(); defer { self.lock.unlock() }\n        switch event {\n        case .next:\n            if isDisposed || stopped {\n                return Observers()\n            }\n\n            return observers\n        case .completed, .error:\n            if stoppedEvent == nil {\n                stoppedEvent = event\n                stopped = true\n                let observers = observers\n                self.observers.removeAll()\n                return observers\n            }\n\n            return Observers()\n        }\n    }\n\n    /**\n     Subscribes an observer to the subject.\n\n     - parameter observer: Observer to subscribe to the subject.\n     - returns: Disposable object that can be used to unsubscribe the observer from the subject.\n     */\n    override public func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.performLocked { self.synchronized_subscribe(observer) }\n    }\n\n    func synchronized_subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if let stoppedEvent {\n            observer.on(stoppedEvent)\n            return Disposables.create()\n        }\n\n        if isDisposed {\n            observer.on(.error(RxError.disposed(object: self)))\n            return Disposables.create()\n        }\n\n        let key = observers.insert(observer.on)\n        return SubscriptionDisposable(owner: self, key: key)\n    }\n\n    func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        lock.performLocked { self.synchronized_unsubscribe(disposeKey) }\n    }\n\n    func synchronized_unsubscribe(_ disposeKey: DisposeKey) {\n        _ = observers.removeKey(disposeKey)\n    }\n\n    /// Returns observer interface for subject.\n    public func asObserver() -> PublishSubject<Element> {\n        self\n    }\n\n    /// Unsubscribe all observers and release resources.\n    public func dispose() {\n        lock.performLocked { self.synchronized_dispose() }\n    }\n\n    final func synchronized_dispose() {\n        disposed = true\n        observers.removeAll()\n        stoppedEvent = nil\n    }\n\n    #if TRACE_RESOURCES\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n"
  },
  {
    "path": "RxSwift/Subjects/ReplaySubject.swift",
    "content": "//\n//  ReplaySubject.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 4/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an object that is both an observable sequence as well as an observer.\n///\n/// Each notification is broadcasted to all subscribed and future observers, subject to buffer trimming policies.\npublic class ReplaySubject<Element>:\n    Observable<Element>,\n    SubjectType,\n    ObserverType,\n    Disposable\n{\n    public typealias SubjectObserverType = ReplaySubject<Element>\n\n    typealias Observers = AnyObserver<Element>.s\n    typealias DisposeKey = Observers.KeyType\n\n    /// Indicates whether the subject has any observers\n    public var hasObservers: Bool {\n        lock.performLocked { self.observers.count > 0 }\n    }\n\n    fileprivate let lock = RecursiveLock()\n\n    // state\n    fileprivate var isDisposed = false\n    fileprivate var stopped = false\n    fileprivate var stoppedEvent = nil as Event<Element>? {\n        didSet {\n            stopped = stoppedEvent != nil\n        }\n    }\n\n    fileprivate var observers = Observers()\n\n    #if DEBUG\n    fileprivate let synchronizationTracker = SynchronizationTracker()\n    #endif\n\n    final var isStopped: Bool {\n        stopped\n    }\n\n    /// Notifies all subscribed observers about next event.\n    ///\n    /// - parameter event: Event to send to the observers.\n    public func on(_: Event<Element>) {\n        rxAbstractMethod()\n    }\n\n    /// Returns observer interface for subject.\n    public func asObserver() -> ReplaySubject<Element> {\n        self\n    }\n\n    /// Unsubscribe all observers and release resources.\n    public func dispose() {}\n\n    /// Creates new instance of `ReplaySubject` that replays at most `bufferSize` last elements of sequence.\n    ///\n    /// - parameter bufferSize: Maximal number of elements to replay to observer after subscription.\n    /// - returns: New instance of replay subject.\n    public static func create(bufferSize: Int) -> ReplaySubject<Element> {\n        if bufferSize == 1 {\n            ReplayOne()\n        } else {\n            ReplayMany(bufferSize: bufferSize)\n        }\n    }\n\n    /// Creates a new instance of `ReplaySubject` that buffers all the elements of a sequence.\n    /// To avoid filling up memory, developer needs to make sure that the use case will only ever store a 'reasonable'\n    /// number of elements.\n    public static func createUnbounded() -> ReplaySubject<Element> {\n        ReplayAll()\n    }\n\n    #if TRACE_RESOURCES\n    override init() {\n        _ = Resources.incrementTotal()\n    }\n\n    deinit {\n        _ = Resources.decrementTotal()\n    }\n    #endif\n}\n\nprivate class ReplayBufferBase<Element>:\n    ReplaySubject<Element>,\n    SynchronizedUnsubscribeType\n{\n    func trim() {\n        rxAbstractMethod()\n    }\n\n    func addValueToBuffer(_: Element) {\n        rxAbstractMethod()\n    }\n\n    func replayBuffer<Observer: ObserverType>(_: Observer) where Observer.Element == Element {\n        rxAbstractMethod()\n    }\n\n    override func on(_ event: Event<Element>) {\n        #if DEBUG\n        synchronizationTracker.register(synchronizationErrorMessage: .default)\n        defer { self.synchronizationTracker.unregister() }\n        #endif\n        dispatch(synchronized_on(event), event)\n    }\n\n    func synchronized_on(_ event: Event<Element>) -> Observers {\n        lock.lock(); defer { self.lock.unlock() }\n        if isDisposed {\n            return Observers()\n        }\n\n        if isStopped {\n            return Observers()\n        }\n\n        switch event {\n        case let .next(element):\n            addValueToBuffer(element)\n            trim()\n            return observers\n        case .error, .completed:\n            stoppedEvent = event\n            trim()\n            let observers = observers\n            self.observers.removeAll()\n            return observers\n        }\n    }\n\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.performLocked { self.synchronized_subscribe(observer) }\n    }\n\n    func synchronized_subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        if isDisposed {\n            observer.on(.error(RxError.disposed(object: self)))\n            return Disposables.create()\n        }\n\n        let anyObserver = observer.asObserver()\n\n        replayBuffer(anyObserver)\n        if let stoppedEvent {\n            observer.on(stoppedEvent)\n            return Disposables.create()\n        } else {\n            let key = observers.insert(observer.on)\n            return SubscriptionDisposable(owner: self, key: key)\n        }\n    }\n\n    func synchronizedUnsubscribe(_ disposeKey: DisposeKey) {\n        lock.performLocked { self.synchronized_unsubscribe(disposeKey) }\n    }\n\n    func synchronized_unsubscribe(_ disposeKey: DisposeKey) {\n        if isDisposed {\n            return\n        }\n\n        _ = observers.removeKey(disposeKey)\n    }\n\n    override func dispose() {\n        super.dispose()\n\n        synchronizedDispose()\n    }\n\n    func synchronizedDispose() {\n        lock.performLocked { self.synchronized_dispose() }\n    }\n\n    func synchronized_dispose() {\n        isDisposed = true\n        observers.removeAll()\n    }\n}\n\nprivate final class ReplayOne<Element>: ReplayBufferBase<Element> {\n    private var value: Element?\n\n    override init() {\n        super.init()\n    }\n\n    override func trim() {}\n\n    override func addValueToBuffer(_ value: Element) {\n        self.value = value\n    }\n\n    override func replayBuffer<Observer: ObserverType>(_ observer: Observer) where Observer.Element == Element {\n        if let value {\n            observer.on(.next(value))\n        }\n    }\n\n    override func synchronized_dispose() {\n        super.synchronized_dispose()\n        value = nil\n    }\n}\n\nprivate class ReplayManyBase<Element>: ReplayBufferBase<Element> {\n    fileprivate var queue: Queue<Element>\n\n    init(queueSize: Int) {\n        queue = Queue(capacity: queueSize + 1)\n    }\n\n    override func addValueToBuffer(_ value: Element) {\n        queue.enqueue(value)\n    }\n\n    override func replayBuffer<Observer: ObserverType>(_ observer: Observer) where Observer.Element == Element {\n        for item in queue {\n            observer.on(.next(item))\n        }\n    }\n\n    override func synchronized_dispose() {\n        super.synchronized_dispose()\n        queue = Queue(capacity: 0)\n    }\n}\n\nprivate final class ReplayMany<Element>: ReplayManyBase<Element> {\n    private let bufferSize: Int\n\n    init(bufferSize: Int) {\n        self.bufferSize = bufferSize\n\n        super.init(queueSize: bufferSize)\n    }\n\n    override func trim() {\n        while queue.count > bufferSize {\n            _ = queue.dequeue()\n        }\n    }\n}\n\nprivate final class ReplayAll<Element>: ReplayManyBase<Element> {\n    init() {\n        super.init(queueSize: 0)\n    }\n\n    override func trim() {}\n}\n"
  },
  {
    "path": "RxSwift/Subjects/SubjectType.swift",
    "content": "//\n//  SubjectType.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/1/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Represents an object that is both an observable sequence as well as an observer.\npublic protocol SubjectType: ObservableType {\n    /// The type of the observer that represents this subject.\n    ///\n    /// Usually this type is type of subject itself, but it doesn't have to be.\n    associatedtype Observer: ObserverType\n\n    /// Returns observer interface for subject.\n    ///\n    /// - returns: Observer interface for subject.\n    func asObserver() -> Observer\n}\n"
  },
  {
    "path": "RxSwift/SwiftSupport/SwiftSupport.swift",
    "content": "//\n//  SwiftSupport.swift\n//  RxSwift\n//\n//  Created by Volodymyr  Gorbenko on 3/6/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\ntypealias IntMax = Int64\npublic typealias RxAbstractInteger = FixedWidthInteger\n\nextension SignedInteger {\n    func toIntMax() -> IntMax {\n        IntMax(self)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+CombineLatest+Collection.swift",
    "content": "//\n//  Infallible+CombineLatest+Collection.swift\n//  RxSwift\n//\n//  Created by Hal Lee on 4/11/23.\n//  Copyright © 2023 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<Collection: Swift.Collection>(_ collection: Collection, resultSelector: @escaping ([Collection.Element.Element]) throws -> Element) -> Infallible<Element>\n        where Collection.Element: InfallibleType\n    {\n        Infallible(CombineLatestCollectionType(sources: collection, resultSelector: resultSelector))\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.\n\n     - seealso: [combinelatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<Collection: Swift.Collection>(_ collection: Collection) -> Infallible<[Element]>\n        where Collection.Element: InfallibleType, Collection.Element.Element == Element\n    {\n        Infallible(CombineLatestCollectionType(sources: collection) { $0 })\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+CombineLatest+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  Infallible+CombineLatest+arity.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: - Combine Latest\n\n// 2\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType>\n    (_ source1: I1, _ source2: I2, resultSelector: @escaping (I1.Element, I2.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest2(\n            source1: source1.asObservable(), source2: source2.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType>\n    (_ source1: O1, _ source2: O2)\n        -> Infallible<(O1.Element, O2.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2,\n            resultSelector: { ($0, $1) }\n        )\n    }\n}\n\n// 3\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, resultSelector: @escaping (I1.Element, I2.Element, I3.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest3(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3)\n        -> Infallible<(O1.Element, O2.Element, O3.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3,\n            resultSelector: { ($0, $1, $2) }\n        )\n    }\n}\n\n// 4\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType, I4: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, _ source4: I4, resultSelector: @escaping (I1.Element, I2.Element, I3.Element, I4.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest4(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType, O4: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4)\n        -> Infallible<(O1.Element, O2.Element, O3.Element, O4.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3, source4,\n            resultSelector: { ($0, $1, $2, $3) }\n        )\n    }\n}\n\n// 5\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType, I4: InfallibleType, I5: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, _ source4: I4, _ source5: I5, resultSelector: @escaping (I1.Element, I2.Element, I3.Element, I4.Element, I5.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest5(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType, O4: InfallibleType, O5: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5)\n        -> Infallible<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3, source4, source5,\n            resultSelector: { ($0, $1, $2, $3, $4) }\n        )\n    }\n}\n\n// 6\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType, I4: InfallibleType, I5: InfallibleType, I6: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, _ source4: I4, _ source5: I5, _ source6: I6, resultSelector: @escaping (I1.Element, I2.Element, I3.Element, I4.Element, I5.Element, I6.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest6(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType, O4: InfallibleType, O5: InfallibleType, O6: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6)\n        -> Infallible<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3, source4, source5, source6,\n            resultSelector: { ($0, $1, $2, $3, $4, $5) }\n        )\n    }\n}\n\n// 7\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType, I4: InfallibleType, I5: InfallibleType, I6: InfallibleType, I7: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, _ source4: I4, _ source5: I5, _ source6: I6, _ source7: I7, resultSelector: @escaping (I1.Element, I2.Element, I3.Element, I4.Element, I5.Element, I6.Element, I7.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest7(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType, O4: InfallibleType, O5: InfallibleType, O6: InfallibleType, O7: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7)\n        -> Infallible<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3, source4, source5, source6, source7,\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6) }\n        )\n    }\n}\n\n// 8\npublic extension Infallible {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func combineLatest<I1: InfallibleType, I2: InfallibleType, I3: InfallibleType, I4: InfallibleType, I5: InfallibleType, I6: InfallibleType, I7: InfallibleType, I8: InfallibleType>\n    (_ source1: I1, _ source2: I2, _ source3: I3, _ source4: I4, _ source5: I5, _ source6: I6, _ source7: I7, _ source8: I8, resultSelector: @escaping (I1.Element, I2.Element, I3.Element, I4.Element, I5.Element, I6.Element, I7.Element, I8.Element) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(CombineLatest8(\n            source1: source1.asObservable(), source2: source2.asObservable(), source3: source3.asObservable(), source4: source4.asObservable(), source5: source5.asObservable(), source6: source6.asObservable(), source7: source7.asObservable(), source8: source8.asObservable(),\n            resultSelector: resultSelector\n        ))\n    }\n}\n\npublic extension InfallibleType where Element == Any {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func combineLatest<O1: InfallibleType, O2: InfallibleType, O3: InfallibleType, O4: InfallibleType, O5: InfallibleType, O6: InfallibleType, O7: InfallibleType, O8: InfallibleType>\n    (_ source1: O1, _ source2: O2, _ source3: O3, _ source4: O4, _ source5: O5, _ source6: O6, _ source7: O7, _ source8: O8)\n        -> Infallible<(O1.Element, O2.Element, O3.Element, O4.Element, O5.Element, O6.Element, O7.Element, O8.Element)>\n    {\n        Infallible.combineLatest(\n            source1, source2, source3, source4, source5, source6, source7, source8,\n            resultSelector: { ($0, $1, $2, $3, $4, $5, $6, $7) }\n        )\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+CombineLatest+arity.tt",
    "content": "//\n//  Infallible+CombineLatest+arity.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: - Combine Latest\n<% for i in 2 ... 8 { %>\n// <%= i %>\nextension Infallible {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.\n\n    - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n\n    - parameter resultSelector: Function to invoke whenever any of the sources produces an element.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func combineLatest<<%= (Array(1...i).map { \"I\\($0): InfallibleType\" }).joined(separator: \", \") %>>\n        (<%= (Array(1...i).map { \"_ source\\($0): I\\($0)\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"I\\($0).Element\" }).joined(separator: \", \") %>) throws -> Element)\n            -> Infallible<Element> {\n        Infallible(CombineLatest<%= i %>(\n            <%= (Array(1...i).map { \"source\\($0): source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n            resultSelector: resultSelector\n        ))\n    }\n}\n<% } %>\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Concurrency.swift",
    "content": "//\n//  Infallible+Concurrency.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\n\n// MARK: - Infallible\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension InfallibleType {\n    /// Allows iterating over the values of an Infallible\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// for await value in observable.values {\n    ///     // Handle emitted values\n    /// }\n    /// ```\n    var values: AsyncStream<Element> {\n        AsyncStream<Element> { continuation in\n            let disposable = subscribe(\n                onNext: { value in continuation.yield(value) },\n                onCompleted: { continuation.finish() }\n            )\n            continuation.onTermination = { @Sendable termination in\n                if termination == .cancelled {\n                    disposable.dispose()\n                }\n            }\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Create.swift",
    "content": "//\n//  Infallible+Create.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\npublic enum InfallibleEvent<Element> {\n    /// Next element is produced.\n    case next(Element)\n\n    /// Sequence completed successfully.\n    case completed\n}\n\npublic extension Infallible {\n    typealias InfallibleObserver = (InfallibleEvent<Element>) -> Void\n\n    /**\n     Creates an observable sequence from a specified subscribe method implementation.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method.\n     - returns: The observable sequence with the specified implementation for the `subscribe` method.\n     */\n    static func create(subscribe: @escaping (@escaping InfallibleObserver) -> Disposable) -> Infallible<Element> {\n        let source = Observable<Element>.create { observer in\n            subscribe { event in\n                switch event {\n                case let .next(element):\n                    observer.onNext(element)\n                case .completed:\n                    observer.onCompleted()\n                }\n            }\n        }\n\n        return Infallible(source)\n    }\n}\n\nextension InfallibleEvent: EventConvertible {\n    public var event: Event<Element> {\n        switch self {\n        case let .next(element):\n            .next(element)\n        case .completed:\n            .completed\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Debug.swift",
    "content": "//\n//  Infallible+Debug.swift\n//  RxSwift\n//\n//  Created by Marcelo Fabri on 11/05/2023.\n//  Copyright © 2023 RxSwift. All rights reserved.\n//\n\npublic extension InfallibleType {\n    /**\n     Prints received events for all observers on standard output.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter identifier: Identifier that is printed together with event description to standard output.\n     - parameter trimOutput: Should output be trimmed to max 40 characters.\n     - returns: An Infallible sequence whose events are printed to standard output.\n     */\n    func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function)\n        -> Infallible<Element>\n    {\n        Infallible(\n            asObservable()\n                .debug(identifier, trimOutput: trimOutput, file: file, line: line, function: function)\n        )\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Operators.swift",
    "content": "//\n//  Infallible+Operators.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n// MARK: - Static allocation\n\npublic extension InfallibleType {\n    /**\n     Returns an infallible sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting infallible sequence.\n\n     - returns: An infallible sequence containing the single specified element.\n     */\n    static func just(_ element: Element) -> Infallible<Element> {\n        Infallible(.just(element))\n    }\n\n    /**\n     Returns an infallible sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting infallible sequence.\n     - parameter scheduler: Scheduler to send the single element on.\n     - returns: An infallible sequence containing the single specified element.\n     */\n    static func just(_ element: Element, scheduler: ImmediateSchedulerType) -> Infallible<Element> {\n        Infallible(.just(element, scheduler: scheduler))\n    }\n\n    /**\n     Returns a non-terminating infallible sequence, which can be used to denote an infinite duration.\n\n     - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An infallible sequence whose observers will never get called.\n     */\n    static func never() -> Infallible<Element> {\n        Infallible(.never())\n    }\n\n    /**\n     Returns an empty infallible sequence, using the specified scheduler to send out the single `Completed` message.\n\n     - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An infallible sequence with no elements.\n     */\n    static func empty() -> Infallible<Element> {\n        Infallible(.empty())\n    }\n\n    /**\n     Returns an infallible sequence that invokes the specified factory function whenever a new observer subscribes.\n\n     - seealso: [defer operator on reactivex.io](http://reactivex.io/documentation/operators/defer.html)\n\n     - parameter observableFactory: Observable factory function to invoke for each observer that subscribes to the resulting sequence.\n     - returns: An observable sequence whose observers trigger an invocation of the given observable factory function.\n     */\n    static func deferred(_ observableFactory: @escaping () throws -> Infallible<Element>)\n        -> Infallible<Element>\n    {\n        Infallible(.deferred { try observableFactory().asObservable() })\n    }\n}\n\n// MARK: From & Of\n\npublic extension Infallible {\n    /**\n     This method creates a new Infallible instance with a variable number of elements.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - parameter elements: Elements to generate.\n     - parameter scheduler: Scheduler to send elements on. If `nil`, elements are sent immediately on subscription.\n     - returns: The Infallible sequence whose elements are pulled from the given arguments.\n     */\n    static func of(_ elements: Element ..., scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Infallible<Element> {\n        Infallible(Observable.from(elements, scheduler: scheduler))\n    }\n}\n\npublic extension Infallible {\n    /**\n     Converts an array to an Infallible sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - returns: The Infallible sequence whose elements are pulled from the given enumerable sequence.\n     */\n    static func from(_ array: [Element], scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Infallible<Element> {\n        Infallible(Observable.from(array, scheduler: scheduler))\n    }\n\n    /**\n     Converts a sequence to an Infallible sequence.\n\n     - seealso: [from operator on reactivex.io](http://reactivex.io/documentation/operators/from.html)\n\n     - returns: The Infallible sequence whose elements are pulled from the given enumerable sequence.\n     */\n    static func from<Sequence: Swift.Sequence>(_ sequence: Sequence, scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Infallible<Element> where Sequence.Element == Element {\n        Infallible(Observable.from(sequence, scheduler: scheduler))\n    }\n}\n\n// MARK: - Filter\n\npublic extension InfallibleType {\n    /**\n     Filters the elements of an observable sequence based on a predicate.\n\n     - seealso: [filter operator on reactivex.io](http://reactivex.io/documentation/operators/filter.html)\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that contains elements from the input sequence that satisfy the condition.\n     */\n    func filter(_ predicate: @escaping (Element) -> Bool)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().filter(predicate))\n    }\n}\n\n// MARK: - Map\n\npublic extension InfallibleType {\n    /**\n     Projects each element of an observable sequence into a new form.\n\n     - seealso: [map operator on reactivex.io](http://reactivex.io/documentation/operators/map.html)\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.\n\n     */\n    func map<Result>(_ transform: @escaping (Element) -> Result)\n        -> Infallible<Result>\n    {\n        Infallible(asObservable().map(transform))\n    }\n\n    /**\n     Projects each element of an observable sequence into an optional form and filters all optional results.\n\n     - parameter transform: A transform function to apply to each source element and which returns an element or nil.\n     - returns: An observable sequence whose elements are the result of filtering the transform function for each element of the source.\n\n     */\n    func compactMap<Result>(_ transform: @escaping (Element) -> Result?)\n        -> Infallible<Result>\n    {\n        Infallible(asObservable().compactMap(transform))\n    }\n}\n\n// MARK: - Distinct\n\npublic extension InfallibleType where Element: Equatable {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to equality operator.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - returns: An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.\n     */\n    func distinctUntilChanged()\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().distinctUntilChanged())\n    }\n}\n\npublic extension InfallibleType {\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `keySelector`.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.\n     */\n    func distinctUntilChanged(_ keySelector: @escaping (Element) throws -> some Equatable)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().distinctUntilChanged(keySelector, comparer: { $0 == $1 }))\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the `comparer`.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on `comparer`, from the source sequence.\n     */\n    func distinctUntilChanged(_ comparer: @escaping (Element, Element) throws -> Bool)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().distinctUntilChanged({ $0 }, comparer: comparer))\n    }\n\n    /**\n     Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - parameter keySelector: A function to compute the comparison key for each element.\n     - parameter comparer: Equality comparer for computed key values.\n     - returns: An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.\n     */\n    func distinctUntilChanged<K>(_ keySelector: @escaping (Element) throws -> K, comparer: @escaping (K, K) throws -> Bool)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().distinctUntilChanged(keySelector, comparer: comparer))\n    }\n\n    /**\n     Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.\n\n     - seealso: [distinct operator on reactivex.io](http://reactivex.io/documentation/operators/distinct.html)\n\n     - returns: An observable sequence only containing the distinct contiguous elements, based on equality operator on the provided key path\n     */\n    func distinctUntilChanged(at keyPath: KeyPath<Element, some Equatable>) ->\n        Infallible<Element>\n    {\n        Infallible(asObservable().distinctUntilChanged { $0[keyPath: keyPath] == $1[keyPath: keyPath] })\n    }\n}\n\n// MARK: - Throttle\n\npublic extension InfallibleType {\n    /**\n     Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.\n\n     - seealso: [debounce operator on reactivex.io](http://reactivex.io/documentation/operators/debounce.html)\n\n     - parameter dueTime: Throttling duration for each element.\n     - parameter scheduler: Scheduler to run the throttle timers on.\n     - returns: The throttled sequence.\n     */\n    func debounce(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().debounce(dueTime, scheduler: scheduler))\n    }\n\n    /**\n     Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.\n\n     This operator makes sure that no two elements are emitted in less then dueTime.\n\n     - seealso: [debounce operator on reactivex.io](http://reactivex.io/documentation/operators/debounce.html)\n\n     - parameter dueTime: Throttling duration for each element.\n     - parameter latest: Should latest element received in a dueTime wide time window since last element emission be emitted.\n     - parameter scheduler: Scheduler to run the throttle timers on.\n     - returns: The throttled sequence.\n     */\n    func throttle(_ dueTime: RxTimeInterval, latest: Bool = true, scheduler: SchedulerType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().throttle(dueTime, latest: latest, scheduler: scheduler))\n    }\n}\n\n// MARK: - FlatMap\n\npublic extension InfallibleType {\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMap<Source: ObservableConvertibleType>(_ selector: @escaping (Element) -> Source)\n        -> Infallible<Source.Element>\n    {\n        Infallible(asObservable().flatMap(selector))\n    }\n\n    /**\n     Projects each element of an observable sequence into a new sequence of observable sequences and then\n     transforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.\n\n     It is a combination of `map` + `switchLatest` operator\n\n     - seealso: [flatMapLatest operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\n     Observable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.\n     */\n    func flatMapLatest<Source: ObservableConvertibleType>(_ selector: @escaping (Element) -> Source)\n        -> Infallible<Source.Element>\n    {\n        Infallible(asObservable().flatMapLatest(selector))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n     If element is received while there is some projected observable sequence being merged it will simply be ignored.\n\n     - seealso: [flatMapFirst operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to element that was observed while no observable is executing in parallel.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.\n     */\n    func flatMapFirst<Source: ObservableConvertibleType>(_ selector: @escaping (Element) -> Source)\n        -> Infallible<Source.Element>\n    {\n        Infallible(asObservable().flatMapFirst(selector))\n    }\n}\n\n// MARK: - Concat\n\npublic extension InfallibleType {\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func concat<Source: ObservableConvertibleType>(_ second: Source) -> Infallible<Element> where Source.Element == Element {\n        Infallible(Observable.concat([asObservable(), second.asObservable()]))\n    }\n\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Sequence: Swift.Sequence>(_ sequence: Sequence) -> Infallible<Element>\n        where Sequence.Element == Infallible<Element>\n    {\n        Infallible(Observable.concat(sequence.map { $0.asObservable() }))\n    }\n\n    /**\n     Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Collection: Swift.Collection>(_ collection: Collection) -> Infallible<Element>\n        where Collection.Element == Infallible<Element>\n    {\n        Infallible(Observable.concat(collection.map { $0.asObservable() }))\n    }\n\n    /**\n     Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.\n\n     This operator has tail recursive optimizations that will prevent stack overflow.\n\n     Optimizations will be performed in cases equivalent to following:\n\n     [1, [2, [3, .....].concat()].concat].concat()\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat(_ sources: Infallible<Element> ...) -> Infallible<Element> {\n        Infallible(Observable.concat(sources.map { $0.asObservable() }))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each observed inner sequence, in sequential order.\n     */\n    func concatMap<Source: ObservableConvertibleType>(_ selector: @escaping (Element) -> Source)\n        -> Infallible<Source.Element>\n    {\n        Infallible(asObservable().concatMap(selector))\n    }\n}\n\n// MARK: - Merge\n\npublic extension InfallibleType {\n    /**\n     Merges elements from all observable sequences from collection into a single observable sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func merge<Collection: Swift.Collection>(_ sources: Collection) -> Infallible<Element> where Collection.Element == Infallible<Element> {\n        Infallible(Observable.concat(sources.map { $0.asObservable() }))\n    }\n\n    /**\n     Merges elements from all infallible sequences from array into a single infallible sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Array of infallible sequences to merge.\n     - returns: The infallible sequence that merges the elements of the infallible sequences.\n     */\n    static func merge(_ sources: [Infallible<Element>]) -> Infallible<Element> {\n        Infallible(Observable.merge(sources.map { $0.asObservable() }))\n    }\n\n    /**\n     Merges elements from all infallible sequences into a single infallible sequence.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n\n     - parameter sources: Collection of infallible sequences to merge.\n     - returns: The infallible sequence that merges the elements of the infallible sequences.\n     */\n    static func merge(_ sources: Infallible<Element>...) -> Infallible<Element> {\n        Infallible(Observable.merge(sources.map { $0.asObservable() }))\n    }\n}\n\n// MARK: - Do\n\npublic extension Infallible {\n    /**\n     Invokes an action for each event in the infallible sequence, and propagates all observer messages through the result sequence.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter afterNext: Action to invoke for each element after the observable has passed an onNext event along to its downstream.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter afterCompleted: Action to invoke after graceful termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(onNext: ((Element) throws -> Void)? = nil, afterNext: ((Element) throws -> Void)? = nil, onCompleted: (() throws -> Void)? = nil, afterCompleted: (() throws -> Void)? = nil, onSubscribe: (() -> Void)? = nil, onSubscribed: (() -> Void)? = nil, onDispose: (() -> Void)? = nil) -> Infallible<Element> {\n        Infallible(asObservable().do(onNext: onNext, afterNext: afterNext, onCompleted: onCompleted, afterCompleted: afterCompleted, onSubscribe: onSubscribe, onSubscribed: onSubscribed, onDispose: onDispose))\n    }\n}\n\n// MARK: - Scan\n\npublic extension InfallibleType {\n    /**\n     Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.\n\n     For aggregation behavior with no intermediate results, see `reduce`.\n\n     - seealso: [scan operator on reactivex.io](http://reactivex.io/documentation/operators/scan.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: An accumulator function to be invoked on each element.\n     - returns: An observable sequence containing the accumulated values.\n     */\n    func scan<Seed>(into seed: Seed, accumulator: @escaping (inout Seed, Element) -> Void)\n        -> Infallible<Seed>\n    {\n        Infallible(asObservable().scan(into: seed, accumulator: accumulator))\n    }\n\n    /**\n     Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.\n\n     For aggregation behavior with no intermediate results, see `reduce`.\n\n     - seealso: [scan operator on reactivex.io](http://reactivex.io/documentation/operators/scan.html)\n\n     - parameter seed: The initial accumulator value.\n     - parameter accumulator: An accumulator function to be invoked on each element.\n     - returns: An observable sequence containing the accumulated values.\n     */\n    func scan<Seed>(_ seed: Seed, accumulator: @escaping (Seed, Element) -> Seed)\n        -> Infallible<Seed>\n    {\n        Infallible(asObservable().scan(seed, accumulator: accumulator))\n    }\n}\n\n// MARK: - Start with\n\npublic extension InfallibleType {\n    /**\n     Prepends a value to an observable sequence.\n\n     - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html)\n\n     - parameter element: Element to prepend to the specified sequence.\n     - returns: The source sequence prepended with the specified values.\n     */\n    func startWith(_ element: Element) -> Infallible<Element> {\n        Infallible(asObservable().startWith(element))\n    }\n}\n\n// MARK: - Take and Skip {\n\npublic extension InfallibleType {\n    /**\n     Returns the elements from the source observable sequence until the other observable sequence produces an element.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter other: Observable sequence that terminates propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.\n     */\n    func take(until other: some InfallibleType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().take(until: other.asObservable()))\n    }\n\n    /**\n     Returns the elements from the source observable sequence until the other observable sequence produces an element.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter other: Observable sequence that terminates propagation of elements of the source sequence.\n     - returns: An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.\n     */\n    func take(until other: some ObservableType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().take(until: other))\n    }\n\n    /**\n     Returns elements from an observable sequence until the specified condition is true.\n\n     - seealso: [takeUntil operator on reactivex.io](http://reactivex.io/documentation/operators/takeuntil.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - parameter behavior: Whether or not to include the last element matching the predicate. Defaults to `exclusive`.\n\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.\n     */\n    func take(\n        until predicate: @escaping (Element) throws -> Bool,\n        behavior: TakeBehavior = .exclusive\n    )\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().take(until: predicate, behavior: behavior))\n    }\n\n    /**\n     Returns elements from an observable sequence as long as a specified condition is true.\n\n     - seealso: [takeWhile operator on reactivex.io](http://reactivex.io/documentation/operators/takewhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.\n     */\n    func take(\n        while predicate: @escaping (Element) throws -> Bool,\n        behavior: TakeBehavior = .exclusive\n    )\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().take(while: predicate, behavior: behavior))\n    }\n\n    /**\n     Returns a specified number of contiguous elements from the start of an observable sequence.\n\n     - seealso: [take operator on reactivex.io](http://reactivex.io/documentation/operators/take.html)\n\n     - parameter count: The number of elements to return.\n     - returns: An observable sequence that contains the specified number of elements from the start of the input sequence.\n     */\n    func take(_ count: Int) -> Infallible<Element> {\n        Infallible(asObservable().take(count))\n    }\n\n    /**\n     Takes elements for the specified duration from the start of the infallible source sequence, using the specified scheduler to run timers.\n\n     - seealso: [take operator on reactivex.io](http://reactivex.io/documentation/operators/take.html)\n\n     - parameter duration: Duration for taking elements from the start of the sequence.\n     - parameter scheduler: Scheduler to run the timer on.\n     - returns: An infallible sequence with the elements taken during the specified duration from the start of the source sequence.\n     */\n    func take(for duration: RxTimeInterval, scheduler: SchedulerType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().take(for: duration, scheduler: scheduler))\n    }\n\n    /**\n     Bypasses elements in an infallible sequence as long as a specified condition is true and then returns the remaining elements.\n\n     - seealso: [skipWhile operator on reactivex.io](http://reactivex.io/documentation/operators/skipwhile.html)\n\n     - parameter predicate: A function to test each element for a condition.\n     - returns: An infallible sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.\n     */\n    func skip(while predicate: @escaping (Element) throws -> Bool) -> Infallible<Element> {\n        Infallible(asObservable().skip(while: predicate))\n    }\n\n    /**\n     Returns the elements from the source infallible sequence that are emitted after the other infallible sequence produces an element.\n\n     - seealso: [skipUntil operator on reactivex.io](http://reactivex.io/documentation/operators/skipuntil.html)\n\n     - parameter other: Infallible sequence that starts propagation of elements of the source sequence.\n     - returns: An infallible sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.\n     */\n    func skip(until other: some ObservableType)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().skip(until: other))\n    }\n}\n\n// MARK: - Share\n\npublic extension InfallibleType {\n    /**\n     Returns an observable sequence that **shares a single subscription to the underlying sequence**, and immediately upon subscription replays  elements in buffer.\n\n     This operator is equivalent to:\n     * `.whileConnected`\n     ```\n     // Each connection will have it's own subject instance to store replay events.\n     // Connections will be isolated from each another.\n     source.multicast(makeSubject: { Replay.create(bufferSize: replay) }).refCount()\n     ```\n     * `.forever`\n     ```\n     // One subject will store replay events for all connections to source.\n     // Connections won't be isolated from each another.\n     source.multicast(Replay.create(bufferSize: replay)).refCount()\n     ```\n\n     It uses optimized versions of the operators for most common operations.\n\n     - parameter replay: Maximum element count of the replay buffer.\n     - parameter scope: Lifetime scope of sharing subject. For more information see `SubjectLifetimeScope` enum.\n\n     - seealso: [shareReplay operator on reactivex.io](http://reactivex.io/documentation/operators/replay.html)\n\n     - returns: An observable sequence that contains the elements of a sequence produced by multicasting the source sequence.\n     */\n    func share(replay: Int = 0, scope: SubjectLifetimeScope = .whileConnected)\n        -> Infallible<Element>\n    {\n        Infallible(asObservable().share(replay: replay, scope: scope))\n    }\n}\n\n// MARK: - withUnretained\n\npublic extension InfallibleType {\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - parameter resultSelector: A function to combine the unretained referenced on `obj` and the value of the observable sequence.\n     - returns: An observable sequence that contains the result of `resultSelector` being called with an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject, Out>(\n        _ obj: Object,\n        resultSelector: @escaping (Object, Element) -> Out\n    ) -> Infallible<Out> {\n        Infallible(asObservable().withUnretained(obj, resultSelector: resultSelector))\n    }\n\n    /**\n     Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.\n\n     In the case the provided object cannot be retained successfully, the sequence will complete.\n\n     - note: Be careful when using this operator in a sequence that has a buffer or replay, for example `share(replay: 1)`, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.\n\n     - parameter obj: The object to provide an unretained reference on.\n     - returns: An observable sequence of tuples that contains both an unretained reference on `obj` and the values of the original sequence.\n     */\n    func withUnretained<Object: AnyObject>(_ obj: Object) -> Infallible<(Object, Element)> {\n        withUnretained(obj) { ($0, $1) }\n    }\n}\n\npublic extension InfallibleType {\n    // MARK: - withLatestFrom\n\n    /**\n     Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n     - note: Elements emitted by self before the second source has emitted any values will be omitted.\n\n     - parameter second: Second observable source.\n     - parameter resultSelector: Function to invoke for each element from the self combined with the latest element from the second source, if any.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<Source: InfallibleType, ResultType>(_ second: Source, resultSelector: @escaping (Element, Source.Element) throws -> ResultType) -> Infallible<ResultType> {\n        Infallible(asObservable().withLatestFrom(second.asObservable(), resultSelector: resultSelector))\n    }\n\n    /**\n     Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when `self` emits an element.\n\n     - seealso: [combineLatest operator on reactivex.io](http://reactivex.io/documentation/operators/combinelatest.html)\n     - note: Elements emitted by self before the second source has emitted any values will be omitted.\n\n     - parameter second: Second observable source.\n     - returns: An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.\n     */\n    func withLatestFrom<Source: InfallibleType>(_ second: Source) -> Infallible<Source.Element> {\n        withLatestFrom(second) { $1 }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Zip+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  Infallible+Zip+arity.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/8/20.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: - Zip\n\n// 2\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, resultSelector: @escaping (E1, E2) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 3\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, resultSelector: @escaping (E1, E2, E3) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 4\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, _ source4: Infallible<E4>, resultSelector: @escaping (E1, E2, E3, E4) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 5\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, _ source4: Infallible<E4>, _ source5: Infallible<E5>, resultSelector: @escaping (E1, E2, E3, E4, E5) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 6\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, _ source4: Infallible<E4>, _ source5: Infallible<E5>, _ source6: Infallible<E6>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 7\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, _ source4: Infallible<E4>, _ source5: Infallible<E5>, _ source6: Infallible<E6>, _ source7: Infallible<E7>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n\n// 8\npublic extension InfallibleType {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7, E8>(_ source1: Infallible<E1>, _ source2: Infallible<E2>, _ source3: Infallible<E3>, _ source4: Infallible<E4>, _ source5: Infallible<E5>, _ source6: Infallible<E6>, _ source7: Infallible<E7>, _ source8: Infallible<E8>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7, E8) throws -> Element)\n        -> Infallible<Element>\n    {\n        Infallible(\n            Observable.zip(source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), source8.asObservable(), resultSelector: resultSelector)\n        )\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible+Zip+arity.tt",
    "content": "//\n//  Infallible+Zip+arity.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/8/20.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// MARK: - Zip\n\n<% for i in 2 ... 8 { %>\n// <%= i %>\nextension InfallibleType {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>>(<%= (Array(1...i).map { \"_ source\\($0): Infallible<E\\($0)>\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>) throws -> Element)\n        -> Infallible<Element> {\n        Infallible(\n            Observable.zip(<%= (Array(1...i).map { \"source\\($0).asObservable()\" }).joined(separator: \", \") %>, resultSelector: resultSelector)\n        )\n    }\n}\n<% } %>\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/Infallible.swift",
    "content": "//\n//  Infallible.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n/// `Infallible` is an `Observable`-like push-style interface\n/// which is guaranteed to not emit error events.\n///\n/// Unlike `SharedSequence`, it does not share its resources or\n/// replay its events, but acts as a standard `Observable`.\npublic protocol InfallibleType: ObservableConvertibleType {}\n\n/// `Infallible` is an `Observable`-like push-style interface\n/// which is guaranteed to not emit error events.\n///\n/// Unlike `SharedSequence`, it does not share its resources or\n/// replay its events, but acts as a standard `Observable`.\npublic struct Infallible<Element>: InfallibleType {\n    private let source: Observable<Element>\n\n    init(_ source: Observable<Element>) {\n        self.source = source\n    }\n\n    public func asObservable() -> Observable<Element> { source }\n}\n\npublic extension InfallibleType {\n    /**\n     Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n\n     Error callback is not exposed because `Infallible` can't error out.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription)\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe<Object: AnyObject>(\n        with object: Object,\n        onNext: ((Object, Element) -> Void)? = nil,\n        onCompleted: ((Object) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        asObservable().subscribe(\n            with: object,\n            onNext: onNext,\n            onCompleted: onCompleted,\n            onDisposed: onDisposed\n        )\n    }\n\n    /**\n      Subscribes an element handler, a completion handler and disposed handler to an observable sequence.\n\n      Error callback is not exposed because `Infallible` can't error out.\n\n      - parameter onNext: Action to invoke for each element in the observable sequence.\n      - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n      gracefully completed, errored, or if the generation is canceled by disposing subscription)\n      - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n      gracefully completed, errored, or if the generation is canceled by disposing subscription)\n      - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(\n        onNext: ((Element) -> Void)? = nil,\n        onCompleted: (() -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        asObservable().subscribe(\n            onNext: onNext,\n            onCompleted: onCompleted,\n            onDisposed: onDisposed\n        )\n    }\n\n    /**\n     Subscribes an event handler to an observable sequence.\n\n     - parameter on: Action to invoke for each event in the observable sequence.\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(_ on: @escaping (InfallibleEvent<Element>) -> Void) -> Disposable {\n        let eventHandler: ((Event<Element>) -> Void) = { event in\n            switch event {\n            case let .next(element):\n                on(.next(element))\n            case .completed:\n                on(.completed)\n            case let .error(error):\n                rxFatalErrorInDebug(\"Infallible must never emit a error event. error: \\(error)\")\n            }\n        }\n        return asObservable().subscribe(eventHandler)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift",
    "content": "//\n//  ObservableConvertibleType+Infallible.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 27/08/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableConvertibleType {\n    /// Convert to an `Infallible`\n    ///\n    /// - returns: `Infallible<Element>`\n    func asInfallible(onErrorJustReturn element: Element) -> Infallible<Element> {\n        Infallible(asObservable().catchAndReturn(element))\n    }\n\n    /// Convert to an `Infallible`\n    ///\n    /// - parameter infallible: Fall back to this provided infallible on error\n    ///\n    ///\n    /// - returns: `Infallible<Element>`\n    func asInfallible(onErrorFallbackTo infallible: Infallible<Element>) -> Infallible<Element> {\n        Infallible(asObservable().catch { _ in infallible.asObservable() })\n    }\n\n    /// Convert to an `Infallible`\n    ///\n    /// - parameter onErrorRecover: Recover with the this infallible closure\n    ///\n    /// - returns: `Infallible<Element>`\n    func asInfallible(onErrorRecover: @escaping (Swift.Error) -> Infallible<Element>) -> Infallible<Element> {\n        Infallible(asObservable().catch { onErrorRecover($0).asObservable() })\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/Completable+AndThen.swift",
    "content": "//\n//  Completable+AndThen.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 7/2/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension PrimitiveSequenceType where Trait == CompletableTrait, Element == Never {\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func andThen<Element>(_ second: Single<Element>) -> Single<Element> {\n        let completable = primitiveSequence.asObservable()\n        return Single(raw: ConcatCompletable(completable: completable, second: second.asObservable()))\n    }\n\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func andThen<Element>(_ second: Maybe<Element>) -> Maybe<Element> {\n        let completable = primitiveSequence.asObservable()\n        return Maybe(raw: ConcatCompletable(completable: completable, second: second.asObservable()))\n    }\n\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func andThen(_ second: Completable) -> Completable {\n        let completable = primitiveSequence.asObservable()\n        return Completable(raw: ConcatCompletable(completable: completable, second: second.asObservable()))\n    }\n\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func andThen<Element>(_ second: Observable<Element>) -> Observable<Element> {\n        let completable = primitiveSequence.asObservable()\n        return ConcatCompletable(completable: completable, second: second.asObservable())\n    }\n}\n\nprivate final class ConcatCompletable<Element>: Producer<Element> {\n    fileprivate let completable: Observable<Never>\n    fileprivate let second: Observable<Element>\n\n    init(completable: Observable<Never>, second: Observable<Element>) {\n        self.completable = completable\n        self.second = second\n    }\n\n    override func run<Observer: ObserverType>(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element {\n        let sink = ConcatCompletableSink(second: second, observer: observer, cancel: cancel)\n        let subscription = sink.run(completable: completable)\n        return (sink: sink, subscription: subscription)\n    }\n}\n\nprivate final class ConcatCompletableSink<Observer: ObserverType>:\n    Sink<Observer>,\n    ObserverType\n{\n    typealias Element = Never\n    typealias Parent = ConcatCompletable<Observer.Element>\n\n    private let second: Observable<Observer.Element>\n    private let subscription = SerialDisposable()\n\n    init(second: Observable<Observer.Element>, observer: Observer, cancel: Cancelable) {\n        self.second = second\n        super.init(observer: observer, cancel: cancel)\n    }\n\n    func on(_ event: Event<Element>) {\n        switch event {\n        case let .error(error):\n            forwardOn(.error(error))\n            dispose()\n        case .next:\n            break\n        case .completed:\n            let otherSink = ConcatCompletableSinkOther(parent: self)\n            subscription.disposable = second.subscribe(otherSink)\n        }\n    }\n\n    func run(completable: Observable<Never>) -> Disposable {\n        let subscription = SingleAssignmentDisposable()\n        self.subscription.disposable = subscription\n        subscription.setDisposable(completable.subscribe(self))\n        return self.subscription\n    }\n}\n\nprivate final class ConcatCompletableSinkOther<Observer: ObserverType>:\n    ObserverType\n{\n    typealias Element = Observer.Element\n\n    typealias Parent = ConcatCompletableSink<Observer>\n\n    private let parent: Parent\n\n    init(parent: Parent) {\n        self.parent = parent\n    }\n\n    func on(_ event: Event<Observer.Element>) {\n        parent.forwardOn(event)\n        if event.isStopEvent {\n            parent.dispose()\n        }\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/Completable.swift",
    "content": "//\n//  Completable.swift\n//  RxSwift\n//\n//  Created by sergdort on 19/08/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if DEBUG\nimport Foundation\n#endif\n\n/// Sequence containing 0 elements\npublic enum CompletableTrait {}\n/// Represents a push style sequence containing 0 elements.\npublic typealias Completable = PrimitiveSequence<CompletableTrait, Swift.Never>\n\n@frozen public enum CompletableEvent {\n    /// Sequence terminated with an error. (underlying observable sequence emits: `.error(Error)`)\n    case error(Swift.Error)\n\n    /// Sequence completed successfully.\n    case completed\n}\n\npublic extension PrimitiveSequenceType where Trait == CompletableTrait, Element == Swift.Never {\n    typealias CompletableObserver = (CompletableEvent) -> Void\n\n    /**\n     Creates an observable sequence from a specified subscribe method implementation.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method.\n     - returns: The observable sequence with the specified implementation for the `subscribe` method.\n     */\n    static func create(subscribe: @escaping (@escaping CompletableObserver) -> Disposable) -> PrimitiveSequence<Trait, Element> {\n        let source = Observable<Element>.create { observer in\n            subscribe { event in\n                switch event {\n                case let .error(error):\n                    observer.on(.error(error))\n                case .completed:\n                    observer.on(.completed)\n                }\n            }\n        }\n\n        return PrimitiveSequence(raw: source)\n    }\n\n    /**\n     Subscribes `observer` to receive events for this sequence.\n\n     - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.\n     */\n    func subscribe(_ observer: @escaping (CompletableEvent) -> Void) -> Disposable {\n        var stopped = false\n        return primitiveSequence.asObservable().subscribe { event in\n            if stopped { return }\n            stopped = true\n\n            switch event {\n            case .next:\n                rxFatalError(\"Completables can't emit values\")\n            case let .error(error):\n                observer(.error(error))\n            case .completed:\n                observer(.completed)\n            }\n        }\n    }\n\n    /**\n     Subscribes a completion handler and an error handler for this sequence.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe<Object: AnyObject>(\n        with object: Object,\n        onCompleted: ((Object) -> Void)? = nil,\n        onError: ((Object, Swift.Error) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        subscribe(\n            onCompleted: { [weak object] in\n                guard let object else { return }\n                onCompleted?(object)\n            }, onError: { [weak object] in\n                guard let object else { return }\n                onError?(object, $0)\n            }, onDisposed: { [weak object] in\n                guard let object else { return }\n                onDisposed?(object)\n            }\n        )\n    }\n\n    /**\n     Subscribes a completion handler and an error handler for this sequence.\n\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(\n        onCompleted: (() -> Void)? = nil,\n        onError: ((Swift.Error) -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        #if DEBUG\n        let callStack = Hooks.recordCallStackOnError ? Thread.callStackSymbols : []\n        #else\n        let callStack = [String]()\n        #endif\n\n        let disposable: Disposable = onDisposed.map(Disposables.create(with:)) ?? Disposables.create()\n\n        let observer: CompletableObserver = { event in\n            switch event {\n            case let .error(error):\n                if let onError {\n                    onError(error)\n                } else {\n                    Hooks.defaultErrorHandler(callStack, error)\n                }\n                disposable.dispose()\n            case .completed:\n                onCompleted?()\n                disposable.dispose()\n            }\n        }\n\n        return Disposables.create(\n            primitiveSequence.subscribe(observer),\n            disposable\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == CompletableTrait, Element == Swift.Never {\n    /**\n     Returns an observable sequence that terminates with an `error`.\n\n     - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: The observable sequence that terminates with specified error.\n     */\n    static func error(_ error: Swift.Error) -> Completable {\n        PrimitiveSequence(raw: Observable.error(error))\n    }\n\n    /**\n     Returns a non-terminating observable sequence, which can be used to denote an infinite duration.\n\n     - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence whose observers will never get called.\n     */\n    static func never() -> Completable {\n        PrimitiveSequence(raw: Observable.never())\n    }\n\n    /**\n     Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.\n\n     - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence with no elements.\n     */\n    static func empty() -> Completable {\n        Completable(raw: Observable.empty())\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == CompletableTrait, Element == Swift.Never {\n    /**\n     Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter afterError: Action to invoke after errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter afterCompleted: Action to invoke after graceful termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(\n        onError: ((Swift.Error) throws -> Void)? = nil,\n        afterError: ((Swift.Error) throws -> Void)? = nil,\n        onCompleted: (() throws -> Void)? = nil,\n        afterCompleted: (() throws -> Void)? = nil,\n        onSubscribe: (() -> Void)? = nil,\n        onSubscribed: (() -> Void)? = nil,\n        onDispose: (() -> Void)? = nil\n    )\n        -> Completable\n    {\n        Completable(\n            raw: primitiveSequence.source.do(\n                onError: onError,\n                afterError: afterError,\n                onCompleted: onCompleted,\n                afterCompleted: afterCompleted,\n                onSubscribe: onSubscribe,\n                onSubscribed: onSubscribed,\n                onDispose: onDispose\n            )\n        )\n    }\n\n    /**\n     Concatenates the second observable sequence to `self` upon successful termination of `self`.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - parameter second: Second observable sequence.\n     - returns: An observable sequence that contains the elements of `self`, followed by those of the second sequence.\n     */\n    func concat(_ second: Completable) -> Completable {\n        Completable.concat(primitiveSequence, second)\n    }\n\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Sequence: Swift.Sequence>(_ sequence: Sequence) -> Completable\n        where Sequence.Element == Completable\n    {\n        let source = Observable.concat(sequence.lazy.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat<Collection: Swift.Collection>(_ collection: Collection) -> Completable\n        where Collection.Element == Completable\n    {\n        let source = Observable.concat(collection.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n\n    /**\n     Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.\n\n     - seealso: [concat operator on reactivex.io](http://reactivex.io/documentation/operators/concat.html)\n\n     - returns: An observable sequence that contains the elements of each given sequence, in sequential order.\n     */\n    static func concat(_ sources: Completable ...) -> Completable {\n        let source = Observable.concat(sources.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n\n    /**\n     Merges the completion of all Completables from a collection into a single Completable.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n     - note: For `Completable`, `zip` is an alias for `merge`.\n\n     - parameter sources: Collection of Completables to merge.\n     - returns: A Completable that merges the completion of all Completables.\n     */\n    static func zip<Collection: Swift.Collection>(_ sources: Collection) -> Completable\n        where Collection.Element == Completable\n    {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n\n    /**\n     Merges the completion of all Completables from an array into a single Completable.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n     - note: For `Completable`, `zip` is an alias for `merge`.\n\n     - parameter sources: Array of observable sequences to merge.\n     - returns: A Completable that merges the completion of all Completables.\n     */\n    static func zip(_ sources: [Completable]) -> Completable {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n\n    /**\n     Merges the completion of all Completables into a single Completable.\n\n     - seealso: [merge operator on reactivex.io](http://reactivex.io/documentation/operators/merge.html)\n     - note: For `Completable`, `zip` is an alias for `merge`.\n\n     - parameter sources: Collection of observable sequences to merge.\n     - returns: The observable sequence that merges the elements of the observable sequences.\n     */\n    static func zip(_ sources: Completable...) -> Completable {\n        let source = Observable.merge(sources.map { $0.asObservable() })\n        return Completable(raw: source)\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/Maybe.swift",
    "content": "//\n//  Maybe.swift\n//  RxSwift\n//\n//  Created by sergdort on 19/08/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if DEBUG\nimport Foundation\n#endif\n\n/// Sequence containing 0 or 1 elements\npublic enum MaybeTrait {}\n/// Represents a push style sequence containing 0 or 1 element.\npublic typealias Maybe<Element> = PrimitiveSequence<MaybeTrait, Element>\n\n@frozen public enum MaybeEvent<Element> {\n    /// One and only sequence element is produced. (underlying observable sequence emits: `.next(Element)`, `.completed`)\n    case success(Element)\n\n    /// Sequence terminated with an error. (underlying observable sequence emits: `.error(Error)`)\n    case error(Swift.Error)\n\n    /// Sequence completed successfully.\n    case completed\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    typealias MaybeObserver = (MaybeEvent<Element>) -> Void\n\n    /**\n     Creates an observable sequence from a specified subscribe method implementation.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method.\n     - returns: The observable sequence with the specified implementation for the `subscribe` method.\n     */\n    static func create(subscribe: @escaping (@escaping MaybeObserver) -> Disposable) -> PrimitiveSequence<Trait, Element> {\n        let source = Observable<Element>.create { observer in\n            subscribe { event in\n                switch event {\n                case let .success(element):\n                    observer.on(.next(element))\n                    observer.on(.completed)\n                case let .error(error):\n                    observer.on(.error(error))\n                case .completed:\n                    observer.on(.completed)\n                }\n            }\n        }\n\n        return PrimitiveSequence(raw: source)\n    }\n\n    /**\n     Subscribes `observer` to receive events for this sequence.\n\n     - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.\n     */\n    func subscribe(_ observer: @escaping (MaybeEvent<Element>) -> Void) -> Disposable {\n        var stopped = false\n        return primitiveSequence.asObservable().subscribe { event in\n            if stopped { return }\n            stopped = true\n\n            switch event {\n            case let .next(element):\n                observer(.success(element))\n            case let .error(error):\n                observer(.error(error))\n            case .completed:\n                observer(.completed)\n            }\n        }\n    }\n\n    /**\n     Subscribes a success handler, an error handler, and a completion handler for this sequence.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe<Object: AnyObject>(\n        with object: Object,\n        onSuccess: ((Object, Element) -> Void)? = nil,\n        onError: ((Object, Swift.Error) -> Void)? = nil,\n        onCompleted: ((Object) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        subscribe(\n            onSuccess: { [weak object] in\n                guard let object else { return }\n                onSuccess?(object, $0)\n            },\n            onError: { [weak object] in\n                guard let object else { return }\n                onError?(object, $0)\n            },\n            onCompleted: { [weak object] in\n                guard let object else { return }\n                onCompleted?(object)\n            },\n            onDisposed: { [weak object] in\n                guard let object else { return }\n                onDisposed?(object)\n            }\n        )\n    }\n\n    /**\n     Subscribes a success handler, an error handler, and a completion handler for this sequence.\n\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(\n        onSuccess: ((Element) -> Void)? = nil,\n        onError: ((Swift.Error) -> Void)? = nil,\n        onCompleted: (() -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        #if DEBUG\n        let callStack = Hooks.recordCallStackOnError ? Thread.callStackSymbols : []\n        #else\n        let callStack = [String]()\n        #endif\n        let disposable: Disposable = onDisposed.map(Disposables.create(with:)) ?? Disposables.create()\n\n        let observer: MaybeObserver = { event in\n            switch event {\n            case let .success(element):\n                onSuccess?(element)\n                disposable.dispose()\n            case let .error(error):\n                if let onError {\n                    onError(error)\n                } else {\n                    Hooks.defaultErrorHandler(callStack, error)\n                }\n                disposable.dispose()\n            case .completed:\n                onCompleted?()\n                disposable.dispose()\n            }\n        }\n\n        return Disposables.create(\n            primitiveSequence.subscribe(observer),\n            disposable\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element) -> Maybe<Element> {\n        Maybe(raw: Observable.just(element))\n    }\n\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - parameter scheduler: Scheduler to send the single element on.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element, scheduler: ImmediateSchedulerType) -> Maybe<Element> {\n        Maybe(raw: Observable.just(element, scheduler: scheduler))\n    }\n\n    /**\n     Returns an observable sequence that terminates with an `error`.\n\n     - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: The observable sequence that terminates with specified error.\n     */\n    static func error(_ error: Swift.Error) -> Maybe<Element> {\n        PrimitiveSequence(raw: Observable.error(error))\n    }\n\n    /**\n     Returns a non-terminating observable sequence, which can be used to denote an infinite duration.\n\n     - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence whose observers will never get called.\n     */\n    static func never() -> Maybe<Element> {\n        PrimitiveSequence(raw: Observable.never())\n    }\n\n    /**\n     Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.\n\n     - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence with no elements.\n     */\n    static func empty() -> Maybe<Element> {\n        Maybe(raw: Observable.empty())\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter onNext: Action to invoke for each element in the observable sequence.\n     - parameter afterNext: Action to invoke for each element after the observable has passed an onNext event along to its downstream.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter afterError: Action to invoke after errored termination of the observable sequence.\n     - parameter onCompleted: Action to invoke upon graceful termination of the observable sequence.\n     - parameter afterCompleted: Action to invoke after graceful termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(\n        onNext: ((Element) throws -> Void)? = nil,\n        afterNext: ((Element) throws -> Void)? = nil,\n        onError: ((Swift.Error) throws -> Void)? = nil,\n        afterError: ((Swift.Error) throws -> Void)? = nil,\n        onCompleted: (() throws -> Void)? = nil,\n        afterCompleted: (() throws -> Void)? = nil,\n        onSubscribe: (() -> Void)? = nil,\n        onSubscribed: (() -> Void)? = nil,\n        onDispose: (() -> Void)? = nil\n    )\n        -> Maybe<Element>\n    {\n        Maybe(\n            raw: primitiveSequence.source.do(\n                onNext: onNext,\n                afterNext: afterNext,\n                onError: onError,\n                afterError: afterError,\n                onCompleted: onCompleted,\n                afterCompleted: afterCompleted,\n                onSubscribe: onSubscribe,\n                onSubscribed: onSubscribed,\n                onDispose: onDispose\n            )\n        )\n    }\n\n    /**\n     Filters the elements of an observable sequence based on a predicate.\n\n     - seealso: [filter operator on reactivex.io](http://reactivex.io/documentation/operators/filter.html)\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that contains elements from the input sequence that satisfy the condition.\n     */\n    func filter(_ predicate: @escaping (Element) throws -> Bool)\n        -> Maybe<Element>\n    {\n        Maybe(raw: primitiveSequence.source.filter(predicate))\n    }\n\n    /**\n     Projects each element of an observable sequence into a new form.\n\n     - seealso: [map operator on reactivex.io](http://reactivex.io/documentation/operators/map.html)\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.\n\n     */\n    func map<Result>(_ transform: @escaping (Element) throws -> Result)\n        -> Maybe<Result>\n    {\n        Maybe(raw: primitiveSequence.source.map(transform))\n    }\n\n    /**\n     Projects each element of an observable sequence into an optional form and filters all optional results.\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of filtering the transform function for each element of the source.\n\n     */\n    func compactMap<Result>(_ transform: @escaping (Element) throws -> Result?)\n        -> Maybe<Result>\n    {\n        Maybe(raw: primitiveSequence.source.compactMap(transform))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMap<Result>(_ selector: @escaping (Element) throws -> Maybe<Result>)\n        -> Maybe<Result>\n    {\n        Maybe<Result>(raw: primitiveSequence.source.flatMap(selector))\n    }\n\n    /**\n     Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.\n\n     - seealso: [DefaultIfEmpty operator on reactivex.io](http://reactivex.io/documentation/operators/defaultifempty.html)\n\n     - parameter default: Default element to be sent if the source does not emit any elements\n     - returns: An observable sequence which emits default element end completes in case the original sequence is empty\n     */\n    func ifEmpty(default: Element) -> Single<Element> {\n        Single(raw: primitiveSequence.source.ifEmpty(default: `default`))\n    }\n\n    /**\n     Returns the elements of the specified sequence or `other` sequence if the sequence is empty.\n\n     - seealso: [DefaultIfEmpty operator on reactivex.io](http://reactivex.io/documentation/operators/defaultifempty.html)\n\n     - parameter other: Observable sequence being returned when source sequence is empty.\n     - returns: Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.\n     */\n    func ifEmpty(switchTo other: Maybe<Element>) -> Maybe<Element> {\n        Maybe(raw: primitiveSequence.source.ifEmpty(switchTo: other.primitiveSequence.source))\n    }\n\n    /**\n     Returns the elements of the specified sequence or `other` sequence if the sequence is empty.\n\n     - seealso: [DefaultIfEmpty operator on reactivex.io](http://reactivex.io/documentation/operators/defaultifempty.html)\n\n     - parameter other: Observable sequence being returned when source sequence is empty.\n     - returns: Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.\n     */\n    func ifEmpty(switchTo other: Single<Element>) -> Single<Element> {\n        Single(raw: primitiveSequence.source.ifEmpty(switchTo: other.primitiveSequence.source))\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    func catchAndReturn(_ element: Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: primitiveSequence.source.catchAndReturn(element))\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    @available(*, deprecated, renamed: \"catchAndReturn(_:)\")\n    func catchErrorJustReturn(_ element: Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: primitiveSequence.source.catchAndReturn(element))\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/ObservableType+PrimitiveSequence.swift",
    "content": "//\n//  ObservableType+PrimitiveSequence.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\npublic extension ObservableType {\n    /**\n     The `asSingle` operator throws a `RxError.noElements` or `RxError.moreThanOneElement`\n     if the source Observable does not emit exactly one element before successfully completing.\n\n     - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)\n\n     - returns: An observable sequence that emits a single element when the source Observable has completed, or throws an exception if more (or none) of them are emitted.\n     */\n    func asSingle() -> Single<Element> {\n        PrimitiveSequence(raw: AsSingle(source: asObservable()))\n    }\n\n    /**\n     The `first` operator emits only the very first item emitted by this Observable,\n     or nil if this Observable completes without emitting anything.\n\n     - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)\n\n     - returns: An observable sequence that emits a single element or nil if the source observable sequence completes without emitting any items.\n     */\n    func first() -> Single<Element?> {\n        PrimitiveSequence(raw: First(source: asObservable()))\n    }\n\n    /**\n     The `asMaybe` operator throws a `RxError.moreThanOneElement`\n     if the source Observable does not emit at most one element before successfully completing.\n\n     - seealso: [single operator on reactivex.io](http://reactivex.io/documentation/operators/first.html)\n\n     - returns: An observable sequence that emits a single element, completes when the source Observable has completed, or throws an exception if more of them are emitted.\n     */\n    func asMaybe() -> Maybe<Element> {\n        PrimitiveSequence(raw: AsMaybe(source: asObservable()))\n    }\n}\n\npublic extension ObservableType where Element == Never {\n    /**\n     - returns: An observable sequence that completes.\n     */\n    func asCompletable()\n        -> Completable\n    {\n        PrimitiveSequence(raw: asObservable())\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Concurrency.swift",
    "content": "//\n//  PrimitiveSequence+Concurrency.swift\n//  RxSwift\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n#if swift(>=5.7)\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Creates a `Single` from the result of an asynchronous operation\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter work: An `async` closure expected to return an element of type `Element`\n\n     - returns: A `Single` of the `async` closure's element type\n     */\n    @_disfavoredOverload\n    static func create(\n        detached: Bool = false,\n        priority: TaskPriority? = nil,\n        work: @Sendable @escaping () async throws -> Element\n    ) -> PrimitiveSequence<Trait, Element> {\n        .create { single in\n            let operation: () async throws -> Void = {\n                await single(\n                    Result { try await work() }\n                )\n            }\n\n            let task = if detached {\n                Task.detached(priority: priority, operation: operation)\n            } else {\n                Task(priority: priority, operation: operation)\n            }\n\n            return Disposables.create { task.cancel() }\n        }\n    }\n\n    /// Allows awaiting the success or failure of this `Single`\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// do {\n    ///     let value = try await single.value\n    /// } catch {\n    ///     // Handle error\n    /// }\n    /// ```\n    var value: Element {\n        get async throws {\n            let disposable = SingleAssignmentDisposable()\n            return try await withTaskCancellationHandler(\n                operation: {\n                    try await withCheckedThrowingContinuation { continuation in\n                        var didResume = false\n                        let lock = RecursiveLock()\n                        disposable.setDisposable(\n                            self.subscribe(\n                                onSuccess: { value in\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(returning: value)\n                                    }\n                                },\n                                onFailure: { error in\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: error)\n                                    }\n                                },\n                                onDisposed: {\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: CancellationError())\n                                    }\n                                }\n                            )\n                        )\n                    }\n                },\n                onCancel: { [disposable] in\n                    disposable.dispose()\n                }\n            )\n        }\n    }\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /// Allows awaiting the success or failure of this `Maybe`\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// If the `Maybe` completes without emitting a value, it would return\n    /// a `nil` value to indicate so.\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// do {\n    ///     let value = try await maybe.value // Element?\n    /// } catch {\n    ///     // Handle error\n    /// }\n    /// ```\n    var value: Element? {\n        get async throws {\n            let disposable = SingleAssignmentDisposable()\n            return try await withTaskCancellationHandler(\n                operation: {\n                    try await withCheckedThrowingContinuation { continuation in\n                        var didResume = false\n                        let lock = RecursiveLock()\n                        disposable.setDisposable(\n                            self.subscribe(\n                                onSuccess: { value in\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(returning: value)\n                                    }\n                                },\n                                onError: { error in\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: error)\n                                    }\n                                },\n                                onCompleted: {\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(returning: nil)\n                                    }\n                                },\n                                onDisposed: {\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: CancellationError())\n                                    }\n                                }\n                            )\n                        )\n                    }\n                },\n                onCancel: { [disposable] in\n                    disposable.dispose()\n                }\n            )\n        }\n    }\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\npublic extension PrimitiveSequenceType where Trait == CompletableTrait, Element == Never {\n    /// Allows awaiting the success or failure of this `Completable`\n    /// asynchronously via Swift's concurrency features (`async/await`)\n    ///\n    /// Upon completion, a `Void` will be returned\n    ///\n    /// A sample usage would look like so:\n    ///\n    /// ```swift\n    /// do {\n    ///     let value = try await completable.value // Void\n    /// } catch {\n    ///     // Handle error\n    /// }\n    /// ```\n    var value: Void {\n        get async throws {\n            let disposable = SingleAssignmentDisposable()\n            return try await withTaskCancellationHandler(\n                operation: {\n                    try await withCheckedThrowingContinuation { continuation in\n                        var didResume = false\n                        let lock = RecursiveLock()\n                        disposable.setDisposable(\n                            self.subscribe(\n                                onCompleted: {\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume()\n                                    }\n                                },\n                                onError: { error in\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: error)\n                                    }\n                                },\n                                onDisposed: {\n                                    lock.withLock {\n                                        guard !didResume else { return }\n                                        didResume = true\n                                        continuation.resume(throwing: CancellationError())\n                                    }\n                                }\n                            )\n                        )\n                    }\n                },\n                onCancel: { [disposable] in\n                    disposable.dispose()\n                }\n            )\n        }\n    }\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension Result where Failure == Swift.Error {\n    @_disfavoredOverload\n    init(catching body: () async throws -> Success) async {\n        do {\n            self = try await .success(body())\n        } catch {\n            self = .failure(error)\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Zip+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  PrimitiveSequence+Zip+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// 2\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, resultSelector: @escaping (E1, E2) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>)\n        -> PrimitiveSequence<Trait, (E1, E2)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, resultSelector: @escaping (E1, E2) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>)\n        -> PrimitiveSequence<Trait, (E1, E2)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable()\n            )\n        )\n    }\n}\n\n// 3\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, resultSelector: @escaping (E1, E2, E3) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, resultSelector: @escaping (E1, E2, E3) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable()\n            )\n        )\n    }\n}\n\n// 4\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, resultSelector: @escaping (E1, E2, E3, E4) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, resultSelector: @escaping (E1, E2, E3, E4) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable()\n            )\n        )\n    }\n}\n\n// 5\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, resultSelector: @escaping (E1, E2, E3, E4, E5) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, resultSelector: @escaping (E1, E2, E3, E4, E5) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable()\n            )\n        )\n    }\n}\n\n// 6\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable()\n            )\n        )\n    }\n}\n\n// 7\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6, E7)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6, E7)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable()\n            )\n        )\n    }\n}\n\n// 8\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7, E8>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, _ source8: PrimitiveSequence<Trait, E8>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7, E8) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), source8.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7, E8>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, _ source8: PrimitiveSequence<Trait, E8>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6, E7, E8)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), source8.asObservable()\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7, E8>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, _ source8: PrimitiveSequence<Trait, E8>, resultSelector: @escaping (E1, E2, E3, E4, E5, E6, E7, E8) throws -> Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), source8.asObservable(),\n                resultSelector: resultSelector\n            )\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n     Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<E1, E2, E3, E4, E5, E6, E7, E8>(_ source1: PrimitiveSequence<Trait, E1>, _ source2: PrimitiveSequence<Trait, E2>, _ source3: PrimitiveSequence<Trait, E3>, _ source4: PrimitiveSequence<Trait, E4>, _ source5: PrimitiveSequence<Trait, E5>, _ source6: PrimitiveSequence<Trait, E6>, _ source7: PrimitiveSequence<Trait, E7>, _ source8: PrimitiveSequence<Trait, E8>)\n        -> PrimitiveSequence<Trait, (E1, E2, E3, E4, E5, E6, E7, E8)>\n    {\n        PrimitiveSequence(\n            raw: Observable.zip(\n                source1.asObservable(), source2.asObservable(), source3.asObservable(), source4.asObservable(), source5.asObservable(), source6.asObservable(), source7.asObservable(), source8.asObservable()\n            )\n        )\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence+Zip+arity.tt",
    "content": "//\n//  PrimitiveSequence+Zip+arity.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n<% for i in 2 ... 8 { %>\n\n// <%= i %>\n\nextension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>>(<%= (Array(1...i).map { \"_ source\\($0): PrimitiveSequence<Trait, E\\($0)>\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>) throws -> Element)\n        -> PrimitiveSequence<Trait, Element> {\n            return PrimitiveSequence(raw: Observable.zip(\n            <%= (Array(1...i).map { \"source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n                resultSelector: resultSelector)\n            )\n    }\n}\n\nextension PrimitiveSequenceType where Element == Any, Trait == SingleTrait {\n    /**\n    Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>>(<%= (Array(1...i).map { \"_ source\\($0): PrimitiveSequence<Trait, E\\($0)>\" }).joined(separator: \", \") %>)\n        -> PrimitiveSequence<Trait, (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>)> {\n        return PrimitiveSequence(raw: Observable.zip(\n                <%= (Array(1...i).map { \"source\\($0).asObservable()\" }).joined(separator: \", \") %>)\n            )\n    }\n}\n\nextension PrimitiveSequenceType where Trait == MaybeTrait {\n    /**\n    Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>>(<%= (Array(1...i).map { \"_ source\\($0): PrimitiveSequence<Trait, E\\($0)>\" }).joined(separator: \", \") %>, resultSelector: @escaping (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>) throws -> Element)\n        -> PrimitiveSequence<Trait, Element> {\n            return PrimitiveSequence(raw: Observable.zip(\n            <%= (Array(1...i).map { \"source\\($0).asObservable()\" }).joined(separator: \", \") %>,\n                resultSelector: resultSelector)\n            )\n    }\n}\n\nextension PrimitiveSequenceType where Element == Any, Trait == MaybeTrait {\n    /**\n    Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.\n\n    - seealso: [zip operator on reactivex.io](http://reactivex.io/documentation/operators/zip.html)\n\n    - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n    */\n    public static func zip<<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>>(<%= (Array(1...i).map { \"_ source\\($0): PrimitiveSequence<Trait, E\\($0)>\" }).joined(separator: \", \") %>)\n        -> PrimitiveSequence<Trait, (<%= (Array(1...i).map { \"E\\($0)\" }).joined(separator: \", \") %>)> {\n        return PrimitiveSequence(raw: Observable.zip(\n                <%= (Array(1...i).map { \"source\\($0).asObservable()\" }).joined(separator: \", \") %>)\n            )\n    }\n}\n\n\n<% } %>\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/PrimitiveSequence.swift",
    "content": "//\n//  PrimitiveSequence.swift\n//  RxSwift\n//\n//  Created by Krunoslav Zaher on 3/5/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/// Observable sequences containing 0 or 1 element.\npublic struct PrimitiveSequence<Trait, Element> {\n    let source: Observable<Element>\n\n    init(raw: Observable<Element>) {\n        source = raw\n    }\n}\n\n/// Observable sequences containing 0 or 1 element\npublic protocol PrimitiveSequenceType {\n    /// Additional constraints\n    associatedtype Trait\n\n    /// Sequence element type\n    associatedtype Element\n\n    // Converts `self` to primitive sequence.\n    ///\n    /// - returns: Observable sequence that represents `self`.\n    var primitiveSequence: PrimitiveSequence<Trait, Element> { get }\n}\n\nextension PrimitiveSequence: PrimitiveSequenceType {\n    // Converts `self` to primitive sequence.\n    ///\n    /// - returns: Observable sequence that represents `self`.\n    public var primitiveSequence: PrimitiveSequence<Trait, Element> {\n        self\n    }\n}\n\nextension PrimitiveSequence: ObservableConvertibleType {\n    /// Converts `self` to `Observable` sequence.\n    ///\n    /// - returns: Observable sequence that represents `self`.\n    public func asObservable() -> Observable<Element> {\n        source\n    }\n}\n\npublic extension PrimitiveSequence {\n    /**\n     Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.\n\n     - seealso: [defer operator on reactivex.io](http://reactivex.io/documentation/operators/defer.html)\n\n     - parameter observableFactory: Observable factory function to invoke for each observer that subscribes to the resulting sequence.\n     - returns: An observable sequence whose observers trigger an invocation of the given observable factory function.\n     */\n    static func deferred(_ observableFactory: @escaping () throws -> PrimitiveSequence<Trait, Element>)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: Observable.deferred {\n            try observableFactory().asObservable()\n        })\n    }\n\n    /**\n     Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.\n\n     - seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)\n\n     - parameter dueTime: Relative time shift of the source by.\n     - parameter scheduler: Scheduler to run the subscription delay timer on.\n     - returns: the source Observable shifted in time by the specified delay.\n     */\n    func delay(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: primitiveSequence.source.delay(dueTime, scheduler: scheduler))\n    }\n\n    /**\n     Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.\n\n     - seealso: [delay operator on reactivex.io](http://reactivex.io/documentation/operators/delay.html)\n\n     - parameter dueTime: Relative time shift of the subscription.\n     - parameter scheduler: Scheduler to run the subscription delay timer on.\n     - returns: Time-shifted sequence.\n     */\n    func delaySubscription(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.delaySubscription(dueTime, scheduler: scheduler))\n    }\n\n    /**\n     Wraps the source sequence in order to run its observer callbacks on the specified scheduler.\n\n     This only invokes observer callbacks on a `scheduler`. In case the subscription and/or unsubscription\n     actions have side-effects that require to be run on a scheduler, use `subscribeOn`.\n\n     - seealso: [observeOn operator on reactivex.io](http://reactivex.io/documentation/operators/observeon.html)\n\n     - parameter scheduler: Scheduler to notify observers on.\n     - returns: The source sequence whose observations happen on the specified scheduler.\n     */\n    func observe(on scheduler: ImmediateSchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.observe(on: scheduler))\n    }\n\n    /**\n     Wraps the source sequence in order to run its observer callbacks on the specified scheduler.\n\n     This only invokes observer callbacks on a `scheduler`. In case the subscription and/or unsubscription\n     actions have side-effects that require to be run on a scheduler, use `subscribeOn`.\n\n     - seealso: [observeOn operator on reactivex.io](http://reactivex.io/documentation/operators/observeon.html)\n\n     - parameter scheduler: Scheduler to notify observers on.\n     - returns: The source sequence whose observations happen on the specified scheduler.\n     */\n    @available(*, deprecated, renamed: \"observe(on:)\")\n    func observeOn(_ scheduler: ImmediateSchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        observe(on: scheduler)\n    }\n\n    /**\n     Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\n     scheduler.\n\n     This operation is not commonly used.\n\n     This only performs the side-effects of subscription and unsubscription on the specified scheduler.\n\n     In order to invoke observer callbacks on a `scheduler`, use `observeOn`.\n\n     - seealso: [subscribeOn operator on reactivex.io](http://reactivex.io/documentation/operators/subscribeon.html)\n\n     - parameter scheduler: Scheduler to perform subscription and unsubscription actions on.\n     - returns: The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.\n     */\n    func subscribe(on scheduler: ImmediateSchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.subscribe(on: scheduler))\n    }\n\n    /**\n     Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\n     scheduler.\n\n     This operation is not commonly used.\n\n     This only performs the side-effects of subscription and unsubscription on the specified scheduler.\n\n     In order to invoke observer callbacks on a `scheduler`, use `observeOn`.\n\n     - seealso: [subscribeOn operator on reactivex.io](http://reactivex.io/documentation/operators/subscribeon.html)\n\n     - parameter scheduler: Scheduler to perform subscription and unsubscription actions on.\n     - returns: The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.\n     */\n    @available(*, deprecated, renamed: \"subscribe(on:)\")\n    func subscribeOn(_ scheduler: ImmediateSchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        subscribe(on: scheduler)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter handler: Error handler function, producing another observable sequence.\n     - returns: An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an error occurred.\n     */\n    @available(*, deprecated, renamed: \"catch(_:)\")\n    func catchError(_ handler: @escaping (Swift.Error) throws -> PrimitiveSequence<Trait, Element>)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        `catch`(handler)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter handler: Error handler function, producing another observable sequence.\n     - returns: An observable sequence containing the source sequence's elements, followed by the elements produced by the handler's resulting observable sequence in case an error occurred.\n     */\n    func `catch`(_ handler: @escaping (Swift.Error) throws -> PrimitiveSequence<Trait, Element>)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.catch { try handler($0).asObservable() })\n    }\n\n    /**\n     If the initial subscription to the observable sequence emits an error event, try repeating it up to the specified number of attempts (inclusive of the initial attempt) or until is succeeds. For example, if you want to retry a sequence once upon failure, you should use retry(2) (once for the initial attempt, and once for the retry).\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter maxAttemptCount: Maximum number of times to attempt the sequence subscription.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.\n     */\n    func retry(_ maxAttemptCount: Int)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.retry(maxAttemptCount))\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    func retry<Error: Swift.Error>(when notificationHandler: @escaping (Observable<Error>) -> some ObservableType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.retry(when: notificationHandler))\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    @available(*, deprecated, renamed: \"retry(when:)\")\n    func retryWhen<Error: Swift.Error>(_ notificationHandler: @escaping (Observable<Error>) -> some ObservableType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        retry(when: notificationHandler)\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    func retry(when notificationHandler: @escaping (Observable<Swift.Error>) -> some ObservableType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.retry(when: notificationHandler))\n    }\n\n    /**\n     Repeats the source observable sequence on error when the notifier emits a next value.\n     If the source observable errors and the notifier completes, it will complete the source sequence.\n\n     - seealso: [retry operator on reactivex.io](http://reactivex.io/documentation/operators/retry.html)\n\n     - parameter notificationHandler: A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.\n     - returns: An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.\n     */\n    @available(*, deprecated, renamed: \"retry(when:)\")\n    func retryWhen(_ notificationHandler: @escaping (Observable<Swift.Error>) -> some ObservableType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        retry(when: notificationHandler)\n    }\n\n    /**\n     Prints received events for all observers on standard output.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter identifier: Identifier that is printed together with event description to standard output.\n     - parameter trimOutput: Should output be trimmed to max 40 characters.\n     - returns: An observable sequence whose events are printed to standard output.\n     */\n    func debug(_ identifier: String? = nil, trimOutput: Bool = false, file: String = #file, line: UInt = #line, function: String = #function)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: source.debug(identifier, trimOutput: trimOutput, file: file, line: line, function: function))\n    }\n\n    /**\n     Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence's lifetime.\n\n     - seealso: [using operator on reactivex.io](http://reactivex.io/documentation/operators/using.html)\n\n     - parameter resourceFactory: Factory function to obtain a resource object.\n     - parameter primitiveSequenceFactory: Factory function to obtain an observable sequence that depends on the obtained resource.\n     - returns: An observable sequence whose lifetime controls the lifetime of the dependent resource object.\n     */\n    static func using<Resource: Disposable>(_ resourceFactory: @escaping () throws -> Resource, primitiveSequenceFactory: @escaping (Resource) throws -> PrimitiveSequence<Trait, Element>)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: Observable.using(resourceFactory, observableFactory: { (resource: Resource) throws -> Observable<Element> in\n            return try primitiveSequenceFactory(resource).asObservable()\n        }))\n    }\n\n    /**\n     Applies a timeout policy for each element in the observable sequence. If the next element isn't received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.\n\n     - seealso: [timeout operator on reactivex.io](http://reactivex.io/documentation/operators/timeout.html)\n\n     - parameter dueTime: Maximum duration between values before a timeout occurs.\n     - parameter scheduler: Scheduler to run the timeout timer on.\n     - returns: An observable sequence with a `RxError.timeout` in case of a timeout.\n     */\n    func timeout(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence<Trait, Element>(raw: primitiveSequence.source.timeout(dueTime, scheduler: scheduler))\n    }\n\n    /**\n     Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn't received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.\n\n     - seealso: [timeout operator on reactivex.io](http://reactivex.io/documentation/operators/timeout.html)\n\n     - parameter dueTime: Maximum duration between values before a timeout occurs.\n     - parameter other: Sequence to return in case of a timeout.\n     - parameter scheduler: Scheduler to run the timeout timer on.\n     - returns: The source sequence switching to the other sequence in case of a timeout.\n     */\n    func timeout(\n        _ dueTime: RxTimeInterval,\n        other: PrimitiveSequence<Trait, Element>,\n        scheduler: SchedulerType\n    ) -> PrimitiveSequence<Trait, Element> {\n        PrimitiveSequence<Trait, Element>(raw: primitiveSequence.source.timeout(dueTime, other: other.source, scheduler: scheduler))\n    }\n}\n\npublic extension PrimitiveSequenceType where Element: RxAbstractInteger {\n    /**\n     Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.\n\n     - seealso: [timer operator on reactivex.io](http://reactivex.io/documentation/operators/timer.html)\n\n     - parameter dueTime: Relative time at which to produce the first value.\n     - parameter scheduler: Scheduler to run timers on.\n     - returns: An observable sequence that produces a value after due time has elapsed and then each period.\n     */\n    static func timer(_ dueTime: RxTimeInterval, scheduler: SchedulerType)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: Observable<Element>.timer(dueTime, scheduler: scheduler))\n    }\n}\n"
  },
  {
    "path": "RxSwift/Traits/PrimitiveSequence/Single.swift",
    "content": "//\n//  Single.swift\n//  RxSwift\n//\n//  Created by sergdort on 19/08/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if DEBUG\nimport Foundation\n#endif\n\n/// Sequence containing exactly 1 element\npublic enum SingleTrait {}\n/// Represents a push style sequence containing 1 element.\npublic typealias Single<Element> = PrimitiveSequence<SingleTrait, Element>\npublic typealias SingleEvent<Element> = Result<Element, Swift.Error>\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    typealias SingleObserver = (SingleEvent<Element>) -> Void\n\n    /**\n     Creates an observable sequence from a specified subscribe method implementation.\n\n     - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html)\n\n     - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method.\n     - returns: The observable sequence with the specified implementation for the `subscribe` method.\n     */\n    static func create(subscribe: @escaping (@escaping SingleObserver) -> Disposable) -> Single<Element> {\n        let source = Observable<Element>.create { observer in\n            subscribe { event in\n                switch event {\n                case let .success(element):\n                    observer.on(.next(element))\n                    observer.on(.completed)\n                case let .failure(error):\n                    observer.on(.error(error))\n                }\n            }\n        }\n\n        return PrimitiveSequence(raw: source)\n    }\n\n    /**\n     Subscribes `observer` to receive events for this sequence.\n\n     - returns: Subscription for `observer` that can be used to cancel production of sequence elements and free resources.\n     */\n    func subscribe(_ observer: @escaping (SingleEvent<Element>) -> Void) -> Disposable {\n        var stopped = false\n        return primitiveSequence.asObservable().subscribe { event in\n            if stopped { return }\n            stopped = true\n\n            switch event {\n            case let .next(element):\n                observer(.success(element))\n            case let .error(error):\n                observer(.failure(error))\n            case .completed:\n                rxFatalErrorInDebug(\"Singles can't emit a completion event\")\n            }\n        }\n    }\n\n    /**\n     Subscribes a success handler, and an error handler for this sequence.\n\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    @available(*, deprecated, renamed: \"subscribe(onSuccess:onFailure:onDisposed:)\")\n    func subscribe(\n        onSuccess: ((Element) -> Void)? = nil,\n        onError: @escaping ((Swift.Error) -> Void),\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        subscribe(onSuccess: onSuccess, onFailure: onError, onDisposed: onDisposed)\n    }\n\n    /**\n     Subscribes a success handler, and an error handler for this sequence.\n\n     Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.\n\n     - Note: If `object` can't be retained, none of the other closures will be invoked.\n\n     - parameter object: The object to provide an unretained reference on.\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter onFailure: Action to invoke upon errored termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe<Object: AnyObject>(\n        with object: Object,\n        onSuccess: ((Object, Element) -> Void)? = nil,\n        onFailure: ((Object, Swift.Error) -> Void)? = nil,\n        onDisposed: ((Object) -> Void)? = nil\n    ) -> Disposable {\n        subscribe(\n            onSuccess: { [weak object] in\n                guard let object else { return }\n                onSuccess?(object, $0)\n            },\n            onFailure: { [weak object] in\n                guard let object else { return }\n                onFailure?(object, $0)\n            },\n            onDisposed: { [weak object] in\n                guard let object else { return }\n                onDisposed?(object)\n            }\n        )\n    }\n\n    /**\n     Subscribes a success handler, and an error handler for this sequence.\n\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter onFailure: Action to invoke upon errored termination of the observable sequence.\n     - parameter onDisposed: Action to invoke upon any type of termination of sequence (if the sequence has\n     gracefully completed, errored, or if the generation is canceled by disposing subscription).\n     - returns: Subscription object used to unsubscribe from the observable sequence.\n     */\n    func subscribe(\n        onSuccess: ((Element) -> Void)? = nil,\n        onFailure: ((Swift.Error) -> Void)? = nil,\n        onDisposed: (() -> Void)? = nil\n    ) -> Disposable {\n        #if DEBUG\n        let callStack = Hooks.recordCallStackOnError ? Thread.callStackSymbols : []\n        #else\n        let callStack = [String]()\n        #endif\n\n        let disposable: Disposable = onDisposed.map(Disposables.create(with:)) ?? Disposables.create()\n\n        let observer: SingleObserver = { event in\n            switch event {\n            case let .success(element):\n                onSuccess?(element)\n                disposable.dispose()\n            case let .failure(error):\n                if let onFailure {\n                    onFailure(error)\n                } else {\n                    Hooks.defaultErrorHandler(callStack, error)\n                }\n                disposable.dispose()\n            }\n        }\n\n        return Disposables.create(\n            primitiveSequence.subscribe(observer),\n            disposable\n        )\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element) -> Single<Element> {\n        Single(raw: Observable.just(element))\n    }\n\n    /**\n     Returns an observable sequence that contains a single element.\n\n     - seealso: [just operator on reactivex.io](http://reactivex.io/documentation/operators/just.html)\n\n     - parameter element: Single element in the resulting observable sequence.\n     - parameter scheduler: Scheduler to send the single element on.\n     - returns: An observable sequence containing the single specified element.\n     */\n    static func just(_ element: Element, scheduler: ImmediateSchedulerType) -> Single<Element> {\n        Single(raw: Observable.just(element, scheduler: scheduler))\n    }\n\n    /**\n     Returns an observable sequence that terminates with an `error`.\n\n     - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: The observable sequence that terminates with specified error.\n     */\n    static func error(_ error: Swift.Error) -> Single<Element> {\n        PrimitiveSequence(raw: Observable.error(error))\n    }\n\n    /**\n     Returns a non-terminating observable sequence, which can be used to denote an infinite duration.\n\n     - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)\n\n     - returns: An observable sequence whose observers will never get called.\n     */\n    static func never() -> Single<Element> {\n        PrimitiveSequence(raw: Observable.never())\n    }\n}\n\npublic extension PrimitiveSequenceType where Trait == SingleTrait {\n    /**\n     Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.\n\n     - seealso: [do operator on reactivex.io](http://reactivex.io/documentation/operators/do.html)\n\n     - parameter onSuccess: Action to invoke for each element in the observable sequence.\n     - parameter afterSuccess: Action to invoke for each element after the observable has passed an onNext event along to its downstream.\n     - parameter onError: Action to invoke upon errored termination of the observable sequence.\n     - parameter afterError: Action to invoke after errored termination of the observable sequence.\n     - parameter onSubscribe: Action to invoke before subscribing to source observable sequence.\n     - parameter onSubscribed: Action to invoke after subscribing to source observable sequence.\n     - parameter onDispose: Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.\n     - returns: The source sequence with the side-effecting behavior applied.\n     */\n    func `do`(\n        onSuccess: ((Element) throws -> Void)? = nil,\n        afterSuccess: ((Element) throws -> Void)? = nil,\n        onError: ((Swift.Error) throws -> Void)? = nil,\n        afterError: ((Swift.Error) throws -> Void)? = nil,\n        onSubscribe: (() -> Void)? = nil,\n        onSubscribed: (() -> Void)? = nil,\n        onDispose: (() -> Void)? = nil\n    )\n        -> Single<Element>\n    {\n        Single(\n            raw: primitiveSequence.source.do(\n                onNext: onSuccess,\n                afterNext: afterSuccess,\n                onError: onError,\n                afterError: afterError,\n                onSubscribe: onSubscribe,\n                onSubscribed: onSubscribed,\n                onDispose: onDispose\n            )\n        )\n    }\n\n    /**\n     Filters the elements of an observable sequence based on a predicate.\n\n     - seealso: [filter operator on reactivex.io](http://reactivex.io/documentation/operators/filter.html)\n\n     - parameter predicate: A function to test each source element for a condition.\n     - returns: An observable sequence that contains elements from the input sequence that satisfy the condition.\n     */\n    func filter(_ predicate: @escaping (Element) throws -> Bool)\n        -> Maybe<Element>\n    {\n        Maybe(raw: primitiveSequence.source.filter(predicate))\n    }\n\n    /**\n     Projects each element of an observable sequence into a new form.\n\n     - seealso: [map operator on reactivex.io](http://reactivex.io/documentation/operators/map.html)\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of invoking the transform function on each element of source.\n\n     */\n    func map<Result>(_ transform: @escaping (Element) throws -> Result)\n        -> Single<Result>\n    {\n        Single(raw: primitiveSequence.source.map(transform))\n    }\n\n    /**\n     Projects each element of an observable sequence into an optional form and filters all optional results.\n\n     - parameter transform: A transform function to apply to each source element.\n     - returns: An observable sequence whose elements are the result of filtering the transform function for each element of the source.\n\n     */\n    func compactMap<Result>(_ transform: @escaping (Element) throws -> Result?)\n        -> Maybe<Result>\n    {\n        Maybe(raw: primitiveSequence.source.compactMap(transform))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMap<Result>(_ selector: @escaping (Element) throws -> Single<Result>)\n        -> Single<Result>\n    {\n        Single<Result>(raw: primitiveSequence.source.flatMap(selector))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMapMaybe<Result>(_ selector: @escaping (Element) throws -> Maybe<Result>)\n        -> Maybe<Result>\n    {\n        Maybe<Result>(raw: primitiveSequence.source.flatMap(selector))\n    }\n\n    /**\n     Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\n\n     - seealso: [flatMap operator on reactivex.io](http://reactivex.io/documentation/operators/flatmap.html)\n\n     - parameter selector: A transform function to apply to each element.\n     - returns: An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.\n     */\n    func flatMapCompletable(_ selector: @escaping (Element) throws -> Completable)\n        -> Completable\n    {\n        Completable(raw: primitiveSequence.source.flatMap(selector))\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.\n\n     - parameter resultSelector: Function to invoke for each series of elements at corresponding indexes in the sources.\n     - returns: An observable sequence containing the result of combining elements of the sources using the specified result selector function.\n     */\n    static func zip<Collection: Swift.Collection, Result>(_ collection: Collection, resultSelector: @escaping ([Element]) throws -> Result) -> PrimitiveSequence<Trait, Result> where Collection.Element == PrimitiveSequence<Trait, Element> {\n        if collection.isEmpty {\n            return PrimitiveSequence<Trait, Result>.deferred {\n                try PrimitiveSequence<Trait, Result>(raw: .just(resultSelector([])))\n            }\n        }\n\n        let raw = Observable.zip(collection.map { $0.asObservable() }, resultSelector: resultSelector)\n        return PrimitiveSequence<Trait, Result>(raw: raw)\n    }\n\n    /**\n     Merges the specified observable sequences into one observable sequence all of the observable sequences have produced an element at a corresponding index.\n\n     - returns: An observable sequence containing the result of combining elements of the sources.\n     */\n    static func zip<Collection: Swift.Collection>(_ collection: Collection) -> PrimitiveSequence<Trait, [Element]> where Collection.Element == PrimitiveSequence<Trait, Element> {\n        if collection.isEmpty {\n            return PrimitiveSequence<Trait, [Element]>(raw: .just([]))\n        }\n\n        let raw = Observable.zip(collection.map { $0.asObservable() })\n        return PrimitiveSequence(raw: raw)\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    func catchAndReturn(_ element: Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        PrimitiveSequence(raw: primitiveSequence.source.catchAndReturn(element))\n    }\n\n    /**\n     Continues an observable sequence that is terminated by an error with a single element.\n\n     - seealso: [catch operator on reactivex.io](http://reactivex.io/documentation/operators/catch.html)\n\n     - parameter element: Last element in an observable sequence in case error occurs.\n     - returns: An observable sequence containing the source sequence's elements, followed by the `element` in case an error occurred.\n     */\n    @available(*, deprecated, renamed: \"catchAndReturn(_:)\")\n    func catchErrorJustReturn(_ element: Element)\n        -> PrimitiveSequence<Trait, Element>\n    {\n        catchAndReturn(element)\n    }\n\n    /// Converts `self` to `Maybe` trait.\n    ///\n    /// - returns: Maybe trait that represents `self`.\n    func asMaybe() -> Maybe<Element> {\n        Maybe(raw: primitiveSequence.source)\n    }\n\n    /// Converts `self` to `Completable` trait, ignoring its emitted value if\n    /// one exists.\n    ///\n    /// - returns: Completable trait that represents `self`.\n    func asCompletable() -> Completable {\n        primitiveSequence.source.ignoreElements().asCompletable()\n    }\n}\n"
  },
  {
    "path": "RxTest/Any+Equatable.swift",
    "content": "//\n//  Any+Equatable.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// A way to use built in XCTest methods with objects that are partially equatable.\n///\n/// If this can be done simpler, PRs are welcome :)\nstruct AnyEquatable<Target>: Equatable {\n    typealias Comparer = (Target, Target) -> Bool\n\n    let target: Target\n    let comparer: Comparer\n\n    init(target: Target, comparer: @escaping Comparer) {\n        self.target = target\n        self.comparer = comparer\n    }\n}\n\nfunc == <T>(lhs: AnyEquatable<T>, rhs: AnyEquatable<T>) -> Bool {\n    lhs.comparer(lhs.target, rhs.target)\n}\n\nextension AnyEquatable:\n    CustomDebugStringConvertible,\n    CustomStringConvertible\n{\n    var description: String {\n        \"\\(target)\"\n    }\n\n    var debugDescription: String {\n        \"\\(target)\"\n    }\n}\n"
  },
  {
    "path": "RxTest/ColdObservable.swift",
    "content": "//\n//  ColdObservable.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 3/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// A representation of cold observable sequence.\n///\n/// Recorded events are replayed after subscription once per subscriber.\n///\n/// Event times represent relative offset to subscription time.\nfinal class ColdObservable<Element>:\n    TestableObservable<Element>\n{\n    override init(testScheduler: TestScheduler, recordedEvents: [Recorded<Event<Element>>]) {\n        super.init(testScheduler: testScheduler, recordedEvents: recordedEvents)\n    }\n\n    /// Subscribes `observer` to receive events for this sequence.\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        subscriptions.append(Subscription(testScheduler.clock))\n\n        let i = subscriptions.count - 1\n\n        var disposed = false\n\n        for recordedEvent in recordedEvents {\n            _ = testScheduler.scheduleRelativeVirtual((), dueTime: recordedEvent.time, action: { _ in\n                if !disposed {\n                    observer.on(recordedEvent.value)\n                }\n                return Disposables.create()\n            })\n        }\n\n        return Disposables.create {\n            disposed = true\n            let existing = self.subscriptions[i]\n            self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock)\n        }\n    }\n}\n"
  },
  {
    "path": "RxTest/Event+Equatable.swift",
    "content": "//\n//  Event+Equatable.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\nfunc equals<Element: Equatable>(lhs: Event<Element>, rhs: Event<Element>) -> Bool {\n    switch (lhs, rhs) {\n    case (.completed, .completed): return true\n    case let (.error(e1), .error(e2)):\n        #if os(Linux)\n        return \"\\(e1)\" == \"\\(e2)\"\n        #else\n        let error1 = e1 as NSError\n        let error2 = e2 as NSError\n\n        return error1.domain == error2.domain\n            && error1.code == error2.code\n            && \"\\(e1)\" == \"\\(e2)\"\n        #endif\n    case let (.next(v1), .next(v2)): return v1 == v2\n    default: return false\n    }\n}\n\nfunc equals<Element: Equatable>(lhs: Event<Element?>, rhs: Event<Element?>) -> Bool {\n    switch (lhs, rhs) {\n    case (.completed, .completed): return true\n    case let (.error(e1), .error(e2)):\n        #if os(Linux)\n        return \"\\(e1)\" == \"\\(e2)\"\n        #else\n        let error1 = e1 as NSError\n        let error2 = e2 as NSError\n\n        return error1.domain == error2.domain\n            && error1.code == error2.code\n            && \"\\(e1)\" == \"\\(e2)\"\n        #endif\n    case let (.next(v1), .next(v2)): return v1 == v2\n    default: return false\n    }\n}\n\nfunc equals<Element: Equatable>(lhs: SingleEvent<Element>, rhs: SingleEvent<Element>) -> Bool {\n    switch (lhs, rhs) {\n    case let (.failure(e1), .failure(e2)):\n        #if os(Linux)\n        return \"\\(e1)\" == \"\\(e2)\"\n        #else\n        let error1 = e1 as NSError\n        let error2 = e2 as NSError\n\n        return error1.domain == error2.domain\n            && error1.code == error2.code\n            && \"\\(e1)\" == \"\\(e2)\"\n        #endif\n    case let (.success(v1), .success(v2)): return v1 == v2\n    default: return false\n    }\n}\n\nfunc equals<Element: Equatable>(lhs: MaybeEvent<Element>, rhs: MaybeEvent<Element>) -> Bool {\n    switch (lhs, rhs) {\n    case (.completed, .completed): return true\n    case let (.error(e1), .error(e2)):\n        #if os(Linux)\n        return \"\\(e1)\" == \"\\(e2)\"\n        #else\n        let error1 = e1 as NSError\n        let error2 = e2 as NSError\n\n        return error1.domain == error2.domain\n            && error1.code == error2.code\n            && \"\\(e1)\" == \"\\(e2)\"\n        #endif\n    case let (.success(v1), .success(v2)): return v1 == v2\n    default: return false\n    }\n}\n\n/// Compares two `CompletableEvent` events.\n///\n/// In case `Error` events are being compared, they are equal in case their `NSError` representations are equal (domain and code)\n/// and their string representations are equal.\nextension CompletableEvent: Equatable {\n    public static func == (lhs: CompletableEvent, rhs: CompletableEvent) -> Bool {\n        switch (lhs, rhs) {\n        case (.completed, .completed): return true\n        case let (.error(e1), .error(e2)):\n            #if os(Linux)\n            return \"\\(e1)\" == \"\\(e2)\"\n            #else\n            let error1 = e1 as NSError\n            let error2 = e2 as NSError\n\n            return error1.domain == error2.domain\n                && error1.code == error2.code\n                && \"\\(e1)\" == \"\\(e2)\"\n            #endif\n        default: return false\n        }\n    }\n}\n\nextension Event: Equatable where Element: Equatable {\n    public static func == (lhs: Event<Element>, rhs: Event<Element>) -> Bool {\n        equals(lhs: lhs, rhs: rhs)\n    }\n}\n\nextension MaybeEvent: Equatable where Element: Equatable {\n    public static func == (lhs: MaybeEvent<Element>, rhs: MaybeEvent<Element>) -> Bool {\n        equals(lhs: lhs, rhs: rhs)\n    }\n}\n"
  },
  {
    "path": "RxTest/HotObservable.swift",
    "content": "//\n//  HotObservable.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// A representation of hot observable sequence.\n///\n/// Recorded events are replayed at absolute times no matter is there any subscriber.\n///\n/// Event times represent absolute `TestScheduler` time.\nfinal class HotObservable<Element>\n    : TestableObservable<Element> {\n\n    typealias Observer = (Event<Element>) -> Void\n    typealias Observers = Bag<Observer>\n\n    /// Current subscribed observers.\n    private var observers: Observers\n\n    override init(testScheduler: TestScheduler, recordedEvents: [Recorded<Event<Element>>]) {\n        self.observers = Observers()\n        \n        super.init(testScheduler: testScheduler, recordedEvents: recordedEvents)\n\n        for recordedEvent in recordedEvents {\n            testScheduler.scheduleAt(recordedEvent.time) { () -> Void in\n                self.observers.forEach {\n                    $0(recordedEvent.value)\n                }\n            }\n        }\n    }\n\n    /// Subscribes `observer` to receive events for this sequence.\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        let key = self.observers.insert(observer.on)\n        self.subscriptions.append(Subscription(self.testScheduler.clock))\n        \n        let i = self.subscriptions.count - 1\n        \n        return Disposables.create {\n            let removed = self.observers.removeKey(key)\n            assert(removed != nil)\n            \n            let existing = self.subscriptions[i]\n            self.subscriptions[i] = Subscription(existing.subscribe, self.testScheduler.clock)\n        }\n    }\n}\n\n"
  },
  {
    "path": "RxTest/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>$(RX_VERSION)</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "RxTest/Recorded+Event.swift",
    "content": "//\n//  Recorded+Event.swift\n//  RxTest\n//\n//  Created by luojie on 2017/12/19.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\npublic extension Recorded {\n    /**\n     Factory method for an `.next` event recorded at a given time with a given value.\n\n     - parameter time: Recorded virtual time the `.next` event occurs.\n     - parameter element: Next sequence element.\n     - returns: Recorded event in time.\n     */\n    static func next<T>(_ time: TestTime, _ element: T) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: time, value: .next(element))\n    }\n\n    /**\n     Factory method for an `.completed` event recorded at a given time.\n\n     - parameter time: Recorded virtual time the `.completed` event occurs.\n     - parameter type: Sequence elements type.\n     - returns: Recorded event in time.\n     */\n    static func completed<T>(_ time: TestTime, _: T.Type = T.self) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: time, value: .completed)\n    }\n\n    /**\n     Factory method for an `.error` event recorded at a given time with a given error.\n\n     - parameter time: Recorded virtual time the `.error` event occurs.\n     */\n    static func error<T>(_ time: TestTime, _ error: Swift.Error, _: T.Type = T.self) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: time, value: .error(error))\n    }\n}\n\npublic extension Recorded {\n    /**\n     Convenience method for recording a sequence of events. Its primary use case is improving readability in cases where type inference is unable to deduce the type of recorded events.\n\n     ```\n     let correctMessages = Recorded.events(\n         .next(210, 2),\n         .next(220, 3),\n         .next(230, 4),\n         .next(240, 5),\n         .completed(250)\n     )\n     ```\n\n     is equivalent to:\n\n     ```\n     let correctMessages: [Recorded<Event<Int>>] = [\n         .next(210, 2),\n         .next(220, 3),\n         .next(230, 4),\n         .next(240, 5),\n         .completed(250)\n     ]\n     ```\n\n     - parameter recordedEvents: Method return value.\n     */\n    static func events<T>(_ recordedEvents: Recorded<Event<T>>...) -> [Recorded<Event<T>>] where Value == Event<T> {\n        events(recordedEvents)\n    }\n\n    /**\n     Convenience method for recording a sequence of events. Its primary use case is improving readability in cases where type inference is unable to deduce the type of recorded events.\n\n     ```\n     let correctMessages = Recorded.events([\n         .next(210, 2),\n         .next(220, 3),\n         .next(230, 4),\n         .next(240, 5),\n         .completed(250)\n     ])\n     ```\n\n     is equivalent to:\n\n     ```\n     let correctMessages: [Recorded<Event<Int>>] = [\n         .next(210, 2),\n         .next(220, 3),\n         .next(230, 4),\n         .next(240, 5),\n         .completed(250)\n     ]\n     ```\n\n     - parameter recordedEvents: Method return value.\n     */\n    static func events<T>(_ recordedEvents: [Recorded<Event<T>>]) -> [Recorded<Event<T>>] where Value == Event<T> {\n        recordedEvents\n    }\n}\n"
  },
  {
    "path": "RxTest/Recorded.swift",
    "content": "//\n//  Recorded.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport Swift\n\n/// Record of a value including the virtual time it was produced on.\npublic struct Recorded<Value>:\n    CustomDebugStringConvertible\n{\n    /// Gets the virtual time the value was produced on.\n    public let time: TestTime\n\n    /// Gets the recorded value.\n    public let value: Value\n\n    public init(time: TestTime, value: Value) {\n        self.time = time\n        self.value = value\n    }\n}\n\npublic extension Recorded {\n    /// A textual representation of `self`, suitable for debugging.\n    var debugDescription: String {\n        \"\\(value) @ \\(time)\"\n    }\n}\n\nextension Recorded: Equatable where Value: Equatable {\n    public static func == (lhs: Recorded<Value>, rhs: Recorded<Value>) -> Bool {\n        lhs.time == rhs.time && lhs.value == rhs.value\n    }\n}\n"
  },
  {
    "path": "RxTest/RxTest.swift",
    "content": "//\n//  RxTest.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Virtual time type.\npublic typealias TestTime = Int\n"
  },
  {
    "path": "RxTest/Schedulers/TestScheduler.swift",
    "content": "//\n//  TestScheduler.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// Virtual time scheduler used for testing applications and libraries built using RxSwift.\npublic class TestScheduler: VirtualTimeScheduler<TestSchedulerVirtualTimeConverter> {\n    /// Default values of scheduler times.\n    public enum Defaults {\n        /// Default absolute time when to create tested observable sequence.\n        public static let created = 100\n        /// Default absolute time when to subscribe to tested observable sequence.\n        public static let subscribed = 200\n        /// Default absolute time when to dispose subscription to tested observable sequence.\n        public static let disposed = 1000\n    }\n\n    private let simulateProcessingDelay: Bool\n\n    /**\n      Creates a new test scheduler.\n\n      - parameter initialClock: Initial value for the clock.\n      - parameter resolution: Real time [TimeInterval] = ticks * resolution\n      - parameter simulateProcessingDelay: When true, if something is scheduled right `now`,\n         it will be scheduled to `now + 1` in virtual time.\n     */\n    public init(initialClock: TestTime, resolution: Double = 1.0, simulateProcessingDelay: Bool = true) {\n        self.simulateProcessingDelay = simulateProcessingDelay\n        super.init(initialClock: initialClock, converter: TestSchedulerVirtualTimeConverter(resolution: resolution))\n    }\n\n    /**\n     Creates a hot observable using the specified timestamped events.\n\n     - parameter events: Events to surface through the created sequence at their specified absolute virtual times.\n     - returns: Hot observable sequence that can be used to assert the timing of subscriptions and events.\n     */\n    public func createHotObservable<Element>(_ events: [Recorded<Event<Element>>]) -> TestableObservable<Element> {\n        HotObservable(testScheduler: self as AnyObject as! TestScheduler, recordedEvents: events)\n    }\n\n    /**\n     Creates a cold observable using the specified timestamped events.\n\n      - parameter events: Events to surface through the created sequence at their specified virtual time offsets from the sequence subscription time.\n      - returns: Cold observable sequence that can be used to assert the timing of subscriptions and events.\n     */\n    public func createColdObservable<Element>(_ events: [Recorded<Event<Element>>]) -> TestableObservable<Element> {\n        ColdObservable(testScheduler: self as AnyObject as! TestScheduler, recordedEvents: events)\n    }\n\n    /**\n     Creates an observer that records received events and timestamps those.\n\n      - parameter type: Optional type hint of the observed sequence elements.\n      - returns: Observer that can be used to assert the timing of events.\n     */\n    public func createObserver<Element>(_: Element.Type) -> TestableObserver<Element> {\n        TestableObserver(scheduler: self as AnyObject as! TestScheduler)\n    }\n\n    /**\n     Schedules an action to be executed at the specified virtual time.\n\n     - parameter time: Absolute virtual time at which to execute the action.\n     */\n    public func scheduleAt(_ time: TestTime, action: @escaping () -> Void) {\n        _ = scheduleAbsoluteVirtual((), time: time, action: { _ -> Disposable in\n            action()\n            return Disposables.create()\n        })\n    }\n\n    /**\n     Adjusts time of scheduling before adding item to schedule queue. If scheduled time is `<= clock`, then it is scheduled at `clock + 1`\n     */\n    override public func adjustScheduledTime(_ time: VirtualTime) -> VirtualTime {\n        time <= clock ? clock + (simulateProcessingDelay ? 1 : 0) : time\n    }\n\n    /**\n     Starts the test scheduler and uses the specified virtual times to invoke the factory function, subscribe to the resulting sequence, and dispose the subscription.\n\n     - parameter created: Virtual time at which to invoke the factory to create an observable sequence.\n     - parameter subscribed: Virtual time at which to subscribe to the created observable sequence.\n     - parameter disposed: Virtual time at which to dispose the subscription.\n     - parameter create: Factory method to create an observable convertible sequence.\n     - returns: Observer with timestamped recordings of events that were received during the virtual time window when the subscription to the source sequence was active.\n     */\n    public func start<Element, OutputSequence: ObservableConvertibleType>(created: TestTime, subscribed: TestTime, disposed: TestTime, create: @escaping () -> OutputSequence)\n        -> TestableObserver<Element> where OutputSequence.Element == Element\n    {\n        var source: Observable<Element>?\n        var subscription: Disposable?\n        let observer = createObserver(Element.self)\n\n        _ = scheduleAbsoluteVirtual((), time: created) { _ in\n            source = create().asObservable()\n            return Disposables.create()\n        }\n\n        _ = scheduleAbsoluteVirtual((), time: subscribed) { _ in\n            subscription = source!.subscribe(observer)\n            return Disposables.create()\n        }\n\n        _ = scheduleAbsoluteVirtual((), time: disposed) { _ in\n            subscription!.dispose()\n            return Disposables.create()\n        }\n\n        start()\n\n        return observer\n    }\n\n    /**\n     Starts the test scheduler and uses the specified virtual times to invoke the factory function, subscribe to the resulting sequence, and dispose the subscription.\n\n     Observable sequence will be:\n     * created at virtual time `Defaults.created`           -> 100\n     * subscribed to at virtual time `Defaults.subscribed`  -> 200\n\n     - parameter disposed: Virtual time at which to dispose the subscription.\n     - parameter create: Factory method to create an observable convertible sequence.\n     - returns: Observer with timestamped recordings of events that were received during the virtual time window when the subscription to the source sequence was active.\n     */\n    public func start<Element, OutputSequence: ObservableConvertibleType>(disposed: TestTime, create: @escaping () -> OutputSequence)\n        -> TestableObserver<Element> where OutputSequence.Element == Element\n    {\n        start(created: Defaults.created, subscribed: Defaults.subscribed, disposed: disposed, create: create)\n    }\n\n    /**\n     Starts the test scheduler and uses the specified virtual times to invoke the factory function, subscribe to the resulting sequence, and dispose the subscription.\n\n     Observable sequence will be:\n     * created at virtual time `Defaults.created`           -> 100\n     * subscribed to at virtual time `Defaults.subscribed`  -> 200\n     * subscription will be disposed at `Defaults.disposed` -> 1000\n\n     - parameter create: Factory method to create an observable convertible sequence.\n     - returns: Observer with timestamped recordings of events that were received during the virtual time window when the subscription to the source sequence was active.\n     */\n    public func start<Element, OutputSequence: ObservableConvertibleType>(_ create: @escaping () -> OutputSequence)\n        -> TestableObserver<Element> where OutputSequence.Element == Element\n    {\n        start(created: Defaults.created, subscribed: Defaults.subscribed, disposed: Defaults.disposed, create: create)\n    }\n}\n"
  },
  {
    "path": "RxTest/Schedulers/TestSchedulerVirtualTimeConverter.swift",
    "content": "//\n//  TestSchedulerVirtualTimeConverter.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\n/// Converter from virtual time and time interval measured in `Int`s to `Date` and `TimeInterval`.\npublic struct TestSchedulerVirtualTimeConverter: VirtualTimeConverterType {\n    /// Virtual time unit used that represents ticks of virtual clock.\n    public typealias VirtualTimeUnit = Int\n\n    /// Virtual time unit used to represent differences of virtual times.\n    public typealias VirtualTimeIntervalUnit = Int\n\n    private let resolution: Double\n\n    init(resolution: Double) {\n        self.resolution = resolution\n    }\n\n    /// Converts virtual time to real time.\n    ///\n    /// - parameter virtualTime: Virtual time to convert to `Date`.\n    /// - returns: `Date` corresponding to virtual time.\n    public func convertFromVirtualTime(_ virtualTime: VirtualTimeUnit) -> RxTime {\n        Date(timeIntervalSince1970: TimeInterval(virtualTime) * resolution)\n    }\n\n    /// Converts real time to virtual time.\n    ///\n    /// - parameter time: `Date` to convert to virtual time.\n    /// - returns: Virtual time corresponding to `Date`.\n    public func convertToVirtualTime(_ time: RxTime) -> VirtualTimeUnit {\n        VirtualTimeIntervalUnit(time.timeIntervalSince1970 / resolution + 0.5)\n    }\n\n    /// Converts from virtual time interval to `TimeInterval`.\n    ///\n    /// - parameter virtualTimeInterval: Virtual time interval to convert to `TimeInterval`.\n    /// - returns: `TimeInterval` corresponding to virtual time interval.\n    public func convertFromVirtualTimeInterval(_ virtualTimeInterval: VirtualTimeIntervalUnit) -> TimeInterval {\n        TimeInterval(virtualTimeInterval) * resolution\n    }\n\n    /// Converts from `TimeInterval` to virtual time interval.\n    ///\n    /// - parameter timeInterval: `TimeInterval` to convert to virtual time interval.\n    /// - returns: Virtual time interval corresponding to time interval.\n    public func convertToVirtualTimeInterval(_ timeInterval: TimeInterval) -> VirtualTimeIntervalUnit {\n        VirtualTimeIntervalUnit(timeInterval / resolution + 0.5)\n    }\n\n    /// Adds virtual time and virtual time interval.\n    ///\n    /// - parameter time: Virtual time.\n    /// - parameter offset: Virtual time interval.\n    /// - returns: Time corresponding to time offsetted by virtual time interval.\n    public func offsetVirtualTime(_ time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit {\n        time + offset\n    }\n\n    /// Compares virtual times.\n    public func compareVirtualTime(_ lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison {\n        if lhs < rhs {\n            .lessThan\n        } else if lhs > rhs {\n            .greaterThan\n        } else {\n            .equal\n        }\n    }\n}\n"
  },
  {
    "path": "RxTest/Subscription.swift",
    "content": "//\n//  Subscription.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n/// Records information about subscriptions to and unsubscriptions from observable sequences.\npublic struct Subscription {\n    /// Subscription virtual time.\n    public let subscribe: Int\n    /// Unsubscription virtual time.\n    public let unsubscribe: Int\n\n    /// Creates a new subscription object with the given virtual subscription time.\n    ///\n    /// - parameter subscribe: Virtual time at which the subscription occurred.\n    public init(_ subscribe: Int) {\n        self.subscribe = subscribe\n        unsubscribe = Int.max\n    }\n\n    /// Creates a new subscription object with the given virtual subscription and unsubscription time.\n    ///\n    /// - parameter subscribe: Virtual time at which the subscription occurred.\n    /// - parameter unsubscribe: Virtual time at which the unsubscription occurred.\n    public init(_ subscribe: Int, _ unsubscribe: Int) {\n        self.subscribe = subscribe\n        self.unsubscribe = unsubscribe\n    }\n}\n\nextension Subscription: Hashable {\n    /// The hash value.\n    public func hash(into hasher: inout Hasher) {\n        hasher.combine(subscribe)\n        hasher.combine(unsubscribe)\n    }\n}\n\nextension Subscription: CustomDebugStringConvertible {\n    /// A textual representation of `self`, suitable for debugging.\n    public var debugDescription: String {\n        let infiniteText = \"Infinity\"\n        return \"(\\(subscribe): \\(unsubscribe != Int.max ? String(unsubscribe) : infiniteText))\"\n    }\n}\n\npublic func == (lhs: Subscription, rhs: Subscription) -> Bool {\n    lhs.subscribe == rhs.subscribe && lhs.unsubscribe == rhs.unsubscribe\n}\n"
  },
  {
    "path": "RxTest/TestableObservable.swift",
    "content": "//\n//  TestableObservable.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/28/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// Observable sequence that records subscription lifetimes and timestamped events sent to observers.\npublic class TestableObservable<Element>:\n    ObservableType\n{\n    /// Subscriptions recorded during observable lifetime.\n    public internal(set) var subscriptions: [Subscription]\n\n    /// List of events to replay for all subscribers.\n    ///\n    /// Event times represent absolute `TestScheduler` time.\n    public internal(set) var recordedEvents: [Recorded<Event<Element>>]\n\n    /// Parent test scheduler.\n    let testScheduler: TestScheduler\n\n    init(testScheduler: TestScheduler, recordedEvents: [Recorded<Event<Element>>]) {\n        self.testScheduler = testScheduler\n        self.recordedEvents = recordedEvents\n        subscriptions = []\n    }\n\n    public func subscribe<Observer: ObserverType>(_: Observer) -> Disposable where Observer.Element == Element {\n        fatalError(\"Abstract method\")\n    }\n}\n"
  },
  {
    "path": "RxTest/TestableObserver.swift",
    "content": "//\n//  TestableObserver.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 2/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n/// Observer that records events together with virtual time when they were received.\npublic final class TestableObserver<Element>:\n    ObserverType\n{\n    private let scheduler: TestScheduler\n\n    /// Recorded events.\n    public private(set) var events = [Recorded<Event<Element>>]()\n\n    init(scheduler: TestScheduler) {\n        self.scheduler = scheduler\n    }\n\n    /// Notify observer about sequence event.\n    ///\n    /// - parameter event: Event that occurred.\n    public func on(_ event: Event<Element>) {\n        events.append(Recorded(time: scheduler.clock, value: event))\n    }\n}\n"
  },
  {
    "path": "RxTest/XCTest+Rx.swift",
    "content": "//\n//  XCTest+Rx.swift\n//  RxTest\n//\n//  Created by Krunoslav Zaher on 12/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#if !os(watchOS)\nimport RxSwift\nimport XCTest\n\n/**\n Asserts two lists of events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual<Element: Equatable>(_ lhs: [Event<Element>], _ rhs: [Event<Element>], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: ==) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: ==) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, ==)\n}\n\n/**\n Asserts two lists of events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual<Element: Equatable>(_ lhs: [SingleEvent<Element>], _ rhs: [SingleEvent<Element>], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: equals) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: equals) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, equals)\n}\n\n/**\n Asserts two lists of events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual<Element: Equatable>(_ lhs: [MaybeEvent<Element>], _ rhs: [MaybeEvent<Element>], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: ==) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: ==) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, ==)\n}\n\n/**\n Asserts two lists of events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual(_ lhs: [CompletableEvent], _ rhs: [CompletableEvent], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: ==) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: ==) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, ==)\n}\n\n/**\n Asserts two lists of Recorded events are equal.\n\n Recorded events are equal if times are equal and recorded events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual<Element: Equatable>(_ lhs: [Recorded<Event<Element>>], _ rhs: [Recorded<Event<Element>>], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: ==) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: ==) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, ==)\n}\n\n/**\n Asserts two lists of Recorded events with optional elements are equal.\n\n Recorded events are equal if times are equal and recorded events are equal.\n\n Event is considered equal if:\n * `Next` events are equal if they have equal corresponding elements.\n * `Error` events are equal if errors have same domain and code for `NSError` representation and have equal descriptions.\n * `Completed` events are always equal.\n\n - parameter lhs: first set of events.\n - parameter rhs: second set of events.\n - parameter file: The path to the file in which it appears.\n - parameter line: The line number on which it appears.\n */\npublic func XCTAssertEqual<Element: Equatable>(_ lhs: [Recorded<Event<Element?>>], _ rhs: [Recorded<Event<Element?>>], file: StaticString = #file, line: UInt = #line) {\n    let leftEquatable = lhs.map { AnyEquatable(target: $0, comparer: ==) }\n    let rightEquatable = rhs.map { AnyEquatable(target: $0, comparer: ==) }\n    #if os(Linux)\n    XCTAssertEqual(leftEquatable, rightEquatable)\n    #else\n    XCTAssertEqual(leftEquatable, rightEquatable, file: file, line: line)\n    #endif\n\n    if leftEquatable == rightEquatable {\n        return\n    }\n\n    printSequenceDifferences(lhs, rhs, ==)\n}\n\n/**\n Assert a list of Recorded events has emitted the provided elements.\n This method does not take event times into consideration.\n\n This method will assert a failure if any stop events have been emitted (e.g. `completed` or `error`).\n\n - parameter stream: Array of recorded events.\n - parameter elements: Array of expected elements.\n */\npublic func XCTAssertRecordedElements<Element: Equatable>(_ stream: [Recorded<Event<Element>>], _ elements: [Element], file: StaticString = #file, line: UInt = #line) {\n    if let stopEvent = stream.first(where: { $0.value.isStopEvent }) {\n        #if os(Linux)\n        XCTFail(\"A non-next stop event has been emitted: \\(stopEvent)\")\n        #else\n        XCTFail(\"A non-next stop event has been emitted: \\(stopEvent)\", file: file, line: line)\n        #endif\n        return\n    }\n\n    let streamElements = stream.map { event -> Element in\n        guard case let .next(element) = event.value else {\n            fatalError(\"Non-next stop event should cause assertion\")\n        }\n\n        return element\n    }\n\n    #if os(Linux)\n    XCTAssertEqual(streamElements, elements)\n    #else\n    XCTAssertEqual(streamElements, elements, file: file, line: line)\n    #endif\n\n    if streamElements == elements {\n        return\n    }\n\n    printSequenceDifferences(streamElements, elements, ==)\n}\n\nfunc printSequenceDifferences<Element>(_ lhs: [Element], _ rhs: [Element], _ equal: (Element, Element) -> Bool) {\n    print(\"Differences:\")\n    for (index, elements) in zip(lhs, rhs).enumerated() {\n        let l = elements.0\n        let r = elements.1\n        if !equal(l, r) {\n            print(\"lhs[\\(index)]:\\n    \\(l)\")\n            print(\"rhs[\\(index)]:\\n    \\(r)\")\n        }\n    }\n\n    let shortest = min(lhs.count, rhs.count)\n    for (index, element) in lhs[shortest ..< lhs.count].enumerated() {\n        print(\"lhs[\\(index + shortest)]:\\n    \\(element)\")\n    }\n    for (index, element) in rhs[shortest ..< rhs.count].enumerated() {\n        print(\"rhs[\\(index + shortest)]:\\n    \\(element)\")\n    }\n}\n#endif\n"
  },
  {
    "path": "Sources/AllTestz/main.swift",
    "content": "// this file is autogenerated using `./scripts/package-spm.swift`\nimport XCTest\nimport RxSwift\n\nprotocol RxTestCase {\n#if os(macOS)\n    init()\n    static var allTests: [(String, (Self) -> () -> Void)] { get }\n#endif\n    func setUp()\n    func tearDown()\n}\n\n\nfinal class AnomaliesTest_ : AnomaliesTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (AnomaliesTest_) -> () -> Void)] { return [\n    (\"test936\", AnomaliesTest.test936),\n    (\"test1323\", AnomaliesTest.test1323),\n    (\"test1344\", AnomaliesTest.test1344),\n    (\"testSeparationBetweenOnAndSubscriptionLocks\", AnomaliesTest.testSeparationBetweenOnAndSubscriptionLocks),\n    (\"test2653ShareReplayOneInitialEmissionDeadlock\", AnomaliesTest.test2653ShareReplayOneInitialEmissionDeadlock),\n    (\"test2653ShareReplayMoreInitialEmissionDeadlock\", AnomaliesTest.test2653ShareReplayMoreInitialEmissionDeadlock),\n    (\"test2653ShareReplayOneForeverInitialEmissionDeadlock\", AnomaliesTest.test2653ShareReplayOneForeverInitialEmissionDeadlock),\n    (\"test2653ShareReplayMoreForeverInitialEmissionDeadlock\", AnomaliesTest.test2653ShareReplayMoreForeverInitialEmissionDeadlock),\n    ] }\n}\n\nfinal class AsyncSubjectTests_ : AsyncSubjectTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (AsyncSubjectTests_) -> () -> Void)] { return [\n    (\"test_hasObserversManyObserver\", AsyncSubjectTests.test_hasObserversManyObserver),\n    (\"test_infinite\", AsyncSubjectTests.test_infinite),\n    (\"test_finite\", AsyncSubjectTests.test_finite),\n    (\"test_error\", AsyncSubjectTests.test_error),\n    (\"test_empty\", AsyncSubjectTests.test_empty),\n    ] }\n}\n\nfinal class AtomicTests_ : AtomicTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (AtomicTests_) -> () -> Void)] { return [\n    (\"testAtomicInitialValue\", AtomicTests.testAtomicInitialValue),\n    (\"testAtomicInitialDefaultValue\", AtomicTests.testAtomicInitialDefaultValue),\n    (\"testFetchOrSetsBits\", AtomicTests.testFetchOrSetsBits),\n    (\"testFetchOrConcurrent\", AtomicTests.testFetchOrConcurrent),\n    (\"testAdd\", AtomicTests.testAdd),\n    (\"testAddConcurrent\", AtomicTests.testAddConcurrent),\n    (\"testSub\", AtomicTests.testSub),\n    (\"testSubConcurrent\", AtomicTests.testSubConcurrent),\n    ] }\n}\n\nfinal class BehaviorSubjectTest_ : BehaviorSubjectTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (BehaviorSubjectTest_) -> () -> Void)] { return [\n    (\"test_Infinite\", BehaviorSubjectTest.test_Infinite),\n    (\"test_Finite\", BehaviorSubjectTest.test_Finite),\n    (\"test_Error\", BehaviorSubjectTest.test_Error),\n    (\"test_Canceled\", BehaviorSubjectTest.test_Canceled),\n    (\"test_hasObserversNoObservers\", BehaviorSubjectTest.test_hasObserversNoObservers),\n    (\"test_hasObserversOneObserver\", BehaviorSubjectTest.test_hasObserversOneObserver),\n    (\"test_hasObserversManyObserver\", BehaviorSubjectTest.test_hasObserversManyObserver),\n    ] }\n}\n\nfinal class BinderTests_ : BinderTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (BinderTests_) -> () -> Void)] { return [\n    (\"testBindingOnNonMainQueueDispatchesToMainQueue\", BinderTests.testBindingOnNonMainQueueDispatchesToMainQueue),\n    (\"testBindingOnMainQueueDispatchesToNonMainQueue\", BinderTests.testBindingOnMainQueueDispatchesToNonMainQueue),\n    (\"testBinderDoesNotRetainTarget\", BinderTests.testBinderDoesNotRetainTarget),\n    (\"testBindingDoesNotExecuteAfterTargetDeallocated\", BinderTests.testBindingDoesNotExecuteAfterTargetDeallocated),\n    (\"testBindingReceivesCorrectValue\", BinderTests.testBindingReceivesCorrectValue),\n    (\"testBindingReceivesCorrectTarget\", BinderTests.testBindingReceivesCorrectTarget),\n    ] }\n}\n\nfinal class CompletableAndThenTest_ : CompletableAndThenTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (CompletableAndThenTest_) -> () -> Void)] { return [\n    (\"testCompletableEmpty_CompletableCompleted\", CompletableAndThenTest.testCompletableEmpty_CompletableCompleted),\n    (\"testCompletableCompleted_CompletableCompleted\", CompletableAndThenTest.testCompletableCompleted_CompletableCompleted),\n    (\"testCompletableError_CompletableCompleted\", CompletableAndThenTest.testCompletableError_CompletableCompleted),\n    (\"testCompletableCompleted_CompletableError\", CompletableAndThenTest.testCompletableCompleted_CompletableError),\n    (\"testCompletable_FirstCompletableNotRetainedBeyondCompletion\", CompletableAndThenTest.testCompletable_FirstCompletableNotRetainedBeyondCompletion),\n    (\"testCompletable_FirstCompletableNotRetainedBeyondFailure\", CompletableAndThenTest.testCompletable_FirstCompletableNotRetainedBeyondFailure),\n    (\"testCompletableEmpty_SingleCompleted\", CompletableAndThenTest.testCompletableEmpty_SingleCompleted),\n    (\"testCompletableCompleted_SingleNormal\", CompletableAndThenTest.testCompletableCompleted_SingleNormal),\n    (\"testCompletableError_SingleNormal\", CompletableAndThenTest.testCompletableError_SingleNormal),\n    (\"testCompletableCompleted_SingleError\", CompletableAndThenTest.testCompletableCompleted_SingleError),\n    (\"testCompletableEmpty_MaybeCompleted\", CompletableAndThenTest.testCompletableEmpty_MaybeCompleted),\n    (\"testCompletableCompleted_MaybeNormal\", CompletableAndThenTest.testCompletableCompleted_MaybeNormal),\n    (\"testCompletableError_MaybeNormal\", CompletableAndThenTest.testCompletableError_MaybeNormal),\n    (\"testCompletableCompleted_MaybeError\", CompletableAndThenTest.testCompletableCompleted_MaybeError),\n    (\"testCompletableCompleted_MaybeEmpty\", CompletableAndThenTest.testCompletableCompleted_MaybeEmpty),\n    (\"testCompletableEmpty_ObservableCompleted\", CompletableAndThenTest.testCompletableEmpty_ObservableCompleted),\n    (\"testCompletableCompleted_ObservableNormal\", CompletableAndThenTest.testCompletableCompleted_ObservableNormal),\n    (\"testCompletableError_ObservableNormal\", CompletableAndThenTest.testCompletableError_ObservableNormal),\n    (\"testCompletableCompleted_ObservableError\", CompletableAndThenTest.testCompletableCompleted_ObservableError),\n    (\"testCompletableCompleted_ObservableEmpty\", CompletableAndThenTest.testCompletableCompleted_ObservableEmpty),\n    ] }\n}\n\nfinal class CompletableTest_ : CompletableTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (CompletableTest_) -> () -> Void)] { return [\n    (\"testCompletable_Subscription_completed\", CompletableTest.testCompletable_Subscription_completed),\n    (\"testCompletable_Subscription_error\", CompletableTest.testCompletable_Subscription_error),\n    (\"testCompletable_Subscription_onDisposed\", CompletableTest.testCompletable_Subscription_onDisposed),\n    (\"testCompletable_Subscription_onDisposed_completed\", CompletableTest.testCompletable_Subscription_onDisposed_completed),\n    (\"testCompletable_Subscription_onDisposed_error\", CompletableTest.testCompletable_Subscription_onDisposed_error),\n    (\"testCompletable_create_completed\", CompletableTest.testCompletable_create_completed),\n    (\"testCompletable_create_error\", CompletableTest.testCompletable_create_error),\n    (\"testCompletable_create_disposing\", CompletableTest.testCompletable_create_disposing),\n    (\"test_error_fails\", CompletableTest.test_error_fails),\n    (\"test_never_producesElement\", CompletableTest.test_never_producesElement),\n    (\"test_deferred\", CompletableTest.test_deferred),\n    (\"test_delaySubscription\", CompletableTest.test_delaySubscription),\n    (\"test_delay\", CompletableTest.test_delay),\n    (\"test_observeOn\", CompletableTest.test_observeOn),\n    (\"test_subscribeOn\", CompletableTest.test_subscribeOn),\n    (\"test_catchError\", CompletableTest.test_catchError),\n    (\"test_retry\", CompletableTest.test_retry),\n    (\"test_retryWhen1\", CompletableTest.test_retryWhen1),\n    (\"test_retryWhen2\", CompletableTest.test_retryWhen2),\n    (\"test_debug\", CompletableTest.test_debug),\n    (\"test_using\", CompletableTest.test_using),\n    (\"test_timeout\", CompletableTest.test_timeout),\n    (\"test_timeout_other\", CompletableTest.test_timeout_other),\n    (\"test_timeout_succeeds\", CompletableTest.test_timeout_succeeds),\n    (\"test_timeout_other_succeeds\", CompletableTest.test_timeout_other_succeeds),\n    (\"test_do\", CompletableTest.test_do),\n    (\"test_concat\", CompletableTest.test_concat),\n    (\"test_concat_sequence\", CompletableTest.test_concat_sequence),\n    (\"test_concat_collection\", CompletableTest.test_concat_collection),\n    (\"test_concat_variadic\", CompletableTest.test_concat_variadic),\n    (\"test_zip_collection\", CompletableTest.test_zip_collection),\n    (\"test_zip_array\", CompletableTest.test_zip_array),\n    (\"test_zip_variadic\", CompletableTest.test_zip_variadic),\n    (\"testDefaultErrorHandler\", CompletableTest.testDefaultErrorHandler),\n    ] }\n}\n\nfinal class ConcurrentDispatchQueueSchedulerTests_ : ConcurrentDispatchQueueSchedulerTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ConcurrentDispatchQueueSchedulerTests_) -> () -> Void)] { return [\n    (\"test_scheduleRelative\", ConcurrentDispatchQueueSchedulerTests.test_scheduleRelative),\n    (\"test_scheduleRelativeCancel\", ConcurrentDispatchQueueSchedulerTests.test_scheduleRelativeCancel),\n    (\"test_schedulePeriodic\", ConcurrentDispatchQueueSchedulerTests.test_schedulePeriodic),\n    (\"test_schedulePeriodicCancel\", ConcurrentDispatchQueueSchedulerTests.test_schedulePeriodicCancel),\n    ] }\n}\n\nfinal class CurrentThreadSchedulerTest_ : CurrentThreadSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (CurrentThreadSchedulerTest_) -> () -> Void)] { return [\n    (\"testCurrentThreadScheduler_scheduleRequired\", CurrentThreadSchedulerTest.testCurrentThreadScheduler_scheduleRequired),\n    (\"testCurrentThreadScheduler_basicScenario\", CurrentThreadSchedulerTest.testCurrentThreadScheduler_basicScenario),\n    (\"testCurrentThreadScheduler_disposing1\", CurrentThreadSchedulerTest.testCurrentThreadScheduler_disposing1),\n    (\"testCurrentThreadScheduler_disposing2\", CurrentThreadSchedulerTest.testCurrentThreadScheduler_disposing2),\n    ] }\n}\n\nfinal class DisposableTest_ : DisposableTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (DisposableTest_) -> () -> Void)] { return [\n    (\"testActionDisposable\", DisposableTest.testActionDisposable),\n    (\"testHotObservable_Disposing\", DisposableTest.testHotObservable_Disposing),\n    (\"testCompositeDisposable_TestNormal\", DisposableTest.testCompositeDisposable_TestNormal),\n    (\"testCompositeDisposable_TestInitWithNumberOfDisposables\", DisposableTest.testCompositeDisposable_TestInitWithNumberOfDisposables),\n    (\"testCompositeDisposable_TestRemoving\", DisposableTest.testCompositeDisposable_TestRemoving),\n    (\"testDisposables_TestCreateWithNumberOfDisposables\", DisposableTest.testDisposables_TestCreateWithNumberOfDisposables),\n    (\"testRefCountDisposable_RefCounting\", DisposableTest.testRefCountDisposable_RefCounting),\n    (\"testRefCountDisposable_PrimaryDisposesFirst\", DisposableTest.testRefCountDisposable_PrimaryDisposesFirst),\n    (\"testScheduledDisposable_correctQueue\", DisposableTest.testScheduledDisposable_correctQueue),\n    (\"testSerialDisposable_firstDisposedThenSet\", DisposableTest.testSerialDisposable_firstDisposedThenSet),\n    (\"testSerialDisposable_firstSetThenDisposed\", DisposableTest.testSerialDisposable_firstSetThenDisposed),\n    (\"testSerialDisposable_firstSetThenSetAnotherThenDisposed\", DisposableTest.testSerialDisposable_firstSetThenSetAnotherThenDisposed),\n    (\"testSingleAssignmentDisposable_firstDisposedThenSet\", DisposableTest.testSingleAssignmentDisposable_firstDisposedThenSet),\n    (\"testSingleAssignmentDisposable_firstSetThenDisposed\", DisposableTest.testSingleAssignmentDisposable_firstSetThenDisposed),\n    (\"testSingleAssignmentDisposable_stress\", DisposableTest.testSingleAssignmentDisposable_stress),\n    ] }\n}\n\nfinal class DisposeBagTest_ : DisposeBagTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (DisposeBagTest_) -> () -> Void)] { return [\n    (\"testDisposeBagInsert\", DisposeBagTest.testDisposeBagInsert),\n    (\"testDisposeBagVaradicInsert\", DisposeBagTest.testDisposeBagVaradicInsert),\n    (\"testDisposeBagVaradicInsertArray\", DisposeBagTest.testDisposeBagVaradicInsertArray),\n    (\"testDisposableBuilderInitializer\", DisposeBagTest.testDisposableBuilderInitializer),\n    (\"testDisposableBuilderInsert\", DisposeBagTest.testDisposableBuilderInsert),\n    ] }\n}\n\nfinal class DriverTest_ : DriverTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (DriverTest_) -> () -> Void)] { return [\n    (\"testDriverSharing_WhenErroring\", DriverTest.testDriverSharing_WhenErroring),\n    (\"testDriverSharing_WhenCompleted\", DriverTest.testDriverSharing_WhenCompleted),\n    (\"testBehaviorRelayAsDriver\", DriverTest.testBehaviorRelayAsDriver),\n    (\"testInfallibleAsDriver\", DriverTest.testInfallibleAsDriver),\n    (\"testAsDriver_onErrorJustReturn\", DriverTest.testAsDriver_onErrorJustReturn),\n    (\"testAsDriver_onErrorDriveWith\", DriverTest.testAsDriver_onErrorDriveWith),\n    (\"testAsDriver_onErrorRecover\", DriverTest.testAsDriver_onErrorRecover),\n    (\"testDrivingOrderOfSynchronousSubscriptions1\", DriverTest.testDrivingOrderOfSynchronousSubscriptions1),\n    (\"testDrivingOrderOfSynchronousSubscriptions2\", DriverTest.testDrivingOrderOfSynchronousSubscriptions2),\n    (\"testDriveObserver\", DriverTest.testDriveObserver),\n    (\"testDriveObservers\", DriverTest.testDriveObservers),\n    (\"testDriveOptionalObserver\", DriverTest.testDriveOptionalObserver),\n    (\"testDriveOptionalObservers\", DriverTest.testDriveOptionalObservers),\n    (\"testDriveNoAmbiguity\", DriverTest.testDriveNoAmbiguity),\n    (\"testDriveBehaviorRelay\", DriverTest.testDriveBehaviorRelay),\n    (\"testDriveBehaviorRelays\", DriverTest.testDriveBehaviorRelays),\n    (\"testDriveOptionalBehaviorRelay1\", DriverTest.testDriveOptionalBehaviorRelay1),\n    (\"testDriveOptionalBehaviorRelays1\", DriverTest.testDriveOptionalBehaviorRelays1),\n    (\"testDriveOptionalBehaviorRelay2\", DriverTest.testDriveOptionalBehaviorRelay2),\n    (\"testDriveOptionalBehaviorRelays2\", DriverTest.testDriveOptionalBehaviorRelays2),\n    (\"testDriveBehaviorRelayNoAmbiguity\", DriverTest.testDriveBehaviorRelayNoAmbiguity),\n    (\"testDriveReplayRelay\", DriverTest.testDriveReplayRelay),\n    (\"testDriveReplayRelays\", DriverTest.testDriveReplayRelays),\n    (\"testDriveOptionalReplayRelay1\", DriverTest.testDriveOptionalReplayRelay1),\n    (\"testDriveOptionalReplayRelays\", DriverTest.testDriveOptionalReplayRelays),\n    (\"testDriveOptionalReplayRelay2\", DriverTest.testDriveOptionalReplayRelay2),\n    (\"testDriveReplayRelays2\", DriverTest.testDriveReplayRelays2),\n    (\"testDriveReplayRelayNoAmbiguity\", DriverTest.testDriveReplayRelayNoAmbiguity),\n    (\"testDriveWithNext\", DriverTest.testDriveWithNext),\n    (\"testDriveWithError\", DriverTest.testDriveWithError),\n    (\"testDriveWithCompleted\", DriverTest.testDriveWithCompleted),\n    ] }\n}\n\nfinal class EventTests_ : EventTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (EventTests_) -> () -> Void)] { return [\n    (\"testMapTransformNext\", EventTests.testMapTransformNext),\n    (\"testMapTransformNextThrow\", EventTests.testMapTransformNextThrow),\n    (\"testMapTransformError\", EventTests.testMapTransformError),\n    (\"testMapTransformCompleted\", EventTests.testMapTransformCompleted),\n    ] }\n}\n\nfinal class HistoricalSchedulerTest_ : HistoricalSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (HistoricalSchedulerTest_) -> () -> Void)] { return [\n    (\"testHistoricalScheduler_initialClock\", HistoricalSchedulerTest.testHistoricalScheduler_initialClock),\n    (\"testHistoricalScheduler_start\", HistoricalSchedulerTest.testHistoricalScheduler_start),\n    (\"testHistoricalScheduler_disposeStart\", HistoricalSchedulerTest.testHistoricalScheduler_disposeStart),\n    (\"testHistoricalScheduler_advanceToAfter\", HistoricalSchedulerTest.testHistoricalScheduler_advanceToAfter),\n    (\"testHistoricalScheduler_advanceToBefore\", HistoricalSchedulerTest.testHistoricalScheduler_advanceToBefore),\n    (\"testHistoricalScheduler_disposeAdvanceTo\", HistoricalSchedulerTest.testHistoricalScheduler_disposeAdvanceTo),\n    (\"testHistoricalScheduler_stop\", HistoricalSchedulerTest.testHistoricalScheduler_stop),\n    (\"testHistoricalScheduler_sleep\", HistoricalSchedulerTest.testHistoricalScheduler_sleep),\n    ] }\n}\n\nfinal class InfallibleCombineLatestTest_ : InfallibleCombineLatestTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (InfallibleCombineLatestTest_) -> () -> Void)] { return [\n    (\"testCombineLatest_Arity\", InfallibleCombineLatestTest.testCombineLatest_Arity),\n    (\"testCombineLatest_3_Arity\", InfallibleCombineLatestTest.testCombineLatest_3_Arity),\n    (\"testCombineLatest_4_Arity\", InfallibleCombineLatestTest.testCombineLatest_4_Arity),\n    (\"testCombineLatest_5_Arity\", InfallibleCombineLatestTest.testCombineLatest_5_Arity),\n    (\"testCombineLatest_6_Arity\", InfallibleCombineLatestTest.testCombineLatest_6_Arity),\n    (\"testCombineLatest_7_Arity\", InfallibleCombineLatestTest.testCombineLatest_7_Arity),\n    (\"testCombineLatest_8_Arity\", InfallibleCombineLatestTest.testCombineLatest_8_Arity),\n    ] }\n}\n\nfinal class InfallibleTest_ : InfallibleTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (InfallibleTest_) -> () -> Void)] { return [\n    (\"testAsInfallible_OnErrorJustReturn\", InfallibleTest.testAsInfallible_OnErrorJustReturn),\n    (\"testAsInfallible_OnErrorFallbackTo\", InfallibleTest.testAsInfallible_OnErrorFallbackTo),\n    (\"testAsInfallible_OnErrorRecover\", InfallibleTest.testAsInfallible_OnErrorRecover),\n    (\"testAsInfallible_BehaviourRelay\", InfallibleTest.testAsInfallible_BehaviourRelay),\n    (\"testAsInfallible_PublishRelay\", InfallibleTest.testAsInfallible_PublishRelay),\n    (\"testAsInfallible_ReplayRelay\", InfallibleTest.testAsInfallible_ReplayRelay),\n    (\"testAnonymousInfallible_detachesOnDispose\", InfallibleTest.testAnonymousInfallible_detachesOnDispose),\n    (\"testAnonymousInfallible_detachesOnComplete\", InfallibleTest.testAnonymousInfallible_detachesOnComplete),\n    (\"testAsInfallible_never\", InfallibleTest.testAsInfallible_never),\n    (\"testSubscribeWithNext\", InfallibleTest.testSubscribeWithNext),\n    (\"testSubscribeWithError\", InfallibleTest.testSubscribeWithError),\n    ] }\n}\n\nfinal class MainSchedulerTest_ : MainSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (MainSchedulerTest_) -> () -> Void)] { return [\n    (\"testMainScheduler_basicScenario\", MainSchedulerTest.testMainScheduler_basicScenario),\n    (\"testMainScheduler_disposing1\", MainSchedulerTest.testMainScheduler_disposing1),\n    (\"testMainScheduler_disposing2\", MainSchedulerTest.testMainScheduler_disposing2),\n    ] }\n}\n\nfinal class MaybeTest_ : MaybeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (MaybeTest_) -> () -> Void)] { return [\n    (\"testMaybe_Subscription_success\", MaybeTest.testMaybe_Subscription_success),\n    (\"testMaybe_Subscription_completed\", MaybeTest.testMaybe_Subscription_completed),\n    (\"testMaybe_Subscription_error\", MaybeTest.testMaybe_Subscription_error),\n    (\"testMaybe_Subscription_onDisposed\", MaybeTest.testMaybe_Subscription_onDisposed),\n    (\"testMaybe_Subscription_onDisposed_success\", MaybeTest.testMaybe_Subscription_onDisposed_success),\n    (\"testMaybe_Subscription_onDisposed_completed\", MaybeTest.testMaybe_Subscription_onDisposed_completed),\n    (\"testMaybe_Subscription_onDisposed_error\", MaybeTest.testMaybe_Subscription_onDisposed_error),\n    (\"testMaybe_create_success\", MaybeTest.testMaybe_create_success),\n    (\"testMaybe_create_completed\", MaybeTest.testMaybe_create_completed),\n    (\"testMaybe_create_error\", MaybeTest.testMaybe_create_error),\n    (\"testMaybe_create_disposing\", MaybeTest.testMaybe_create_disposing),\n    (\"test_just_producesElement\", MaybeTest.test_just_producesElement),\n    (\"test_just2_producesElement\", MaybeTest.test_just2_producesElement),\n    (\"test_error_fails\", MaybeTest.test_error_fails),\n    (\"test_never_producesElement\", MaybeTest.test_never_producesElement),\n    (\"test_deferred\", MaybeTest.test_deferred),\n    (\"test_delaySubscription\", MaybeTest.test_delaySubscription),\n    (\"test_delay\", MaybeTest.test_delay),\n    (\"test_observeOn\", MaybeTest.test_observeOn),\n    (\"test_subscribeOn\", MaybeTest.test_subscribeOn),\n    (\"test_catchError\", MaybeTest.test_catchError),\n    (\"test_catchAndReturn\", MaybeTest.test_catchAndReturn),\n    (\"test_retry\", MaybeTest.test_retry),\n    (\"test_retryWhen1\", MaybeTest.test_retryWhen1),\n    (\"test_retryWhen2\", MaybeTest.test_retryWhen2),\n    (\"test_debug\", MaybeTest.test_debug),\n    (\"test_using\", MaybeTest.test_using),\n    (\"test_timeout\", MaybeTest.test_timeout),\n    (\"test_timeout_other\", MaybeTest.test_timeout_other),\n    (\"test_timeout_succeeds\", MaybeTest.test_timeout_succeeds),\n    (\"test_timeout_other_succeeds\", MaybeTest.test_timeout_other_succeeds),\n    (\"test_timer\", MaybeTest.test_timer),\n    (\"test_do\", MaybeTest.test_do),\n    (\"test_filter\", MaybeTest.test_filter),\n    (\"test_map\", MaybeTest.test_map),\n    (\"test_compactMap\", MaybeTest.test_compactMap),\n    (\"test_compactMapNil\", MaybeTest.test_compactMapNil),\n    (\"test_flatMap\", MaybeTest.test_flatMap),\n    (\"test_ifEmptyDefault\", MaybeTest.test_ifEmptyDefault),\n    (\"test_ifEmptySwitchToMaybe\", MaybeTest.test_ifEmptySwitchToMaybe),\n    (\"test_ifEmptySwitchToSingle\", MaybeTest.test_ifEmptySwitchToSingle),\n    (\"test_zip_tuple\", MaybeTest.test_zip_tuple),\n    (\"test_zip_resultSelector\", MaybeTest.test_zip_resultSelector),\n    (\"testDefaultErrorHandler\", MaybeTest.testDefaultErrorHandler),\n    (\"testZip2_selector\", MaybeTest.testZip2_selector),\n    (\"testZip2_tuple\", MaybeTest.testZip2_tuple),\n    (\"testZip3_selector\", MaybeTest.testZip3_selector),\n    (\"testZip3_tuple\", MaybeTest.testZip3_tuple),\n    (\"testZip4_selector\", MaybeTest.testZip4_selector),\n    (\"testZip4_tuple\", MaybeTest.testZip4_tuple),\n    (\"testZip5_selector\", MaybeTest.testZip5_selector),\n    (\"testZip5_tuple\", MaybeTest.testZip5_tuple),\n    (\"testZip6_selector\", MaybeTest.testZip6_selector),\n    (\"testZip6_tuple\", MaybeTest.testZip6_tuple),\n    (\"testZip7_selector\", MaybeTest.testZip7_selector),\n    (\"testZip7_tuple\", MaybeTest.testZip7_tuple),\n    (\"testZip8_selector\", MaybeTest.testZip8_selector),\n    (\"testZip8_tuple\", MaybeTest.testZip8_tuple),\n    ] }\n}\n\nfinal class NSNotificationCenterTests_ : NSNotificationCenterTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (NSNotificationCenterTests_) -> () -> Void)] { return [\n    (\"testNotificationCenterWithoutObject\", NSNotificationCenterTests.testNotificationCenterWithoutObject),\n    (\"testNotificationCenterWithObject\", NSNotificationCenterTests.testNotificationCenterWithObject),\n    ] }\n}\n\nfinal class ObservableAmbTest_ : ObservableAmbTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableAmbTest_) -> () -> Void)] { return [\n    (\"testAmb_Never2\", ObservableAmbTest.testAmb_Never2),\n    (\"testAmb_Never3\", ObservableAmbTest.testAmb_Never3),\n    (\"testAmb_Never_Empty\", ObservableAmbTest.testAmb_Never_Empty),\n    (\"testAmb_RegularShouldDisposeLoser\", ObservableAmbTest.testAmb_RegularShouldDisposeLoser),\n    (\"testAmb_WinnerThrows\", ObservableAmbTest.testAmb_WinnerThrows),\n    (\"testAmb_LoserThrows\", ObservableAmbTest.testAmb_LoserThrows),\n    (\"testAmb_ThrowsBeforeElectionLeft\", ObservableAmbTest.testAmb_ThrowsBeforeElectionLeft),\n    (\"testAmb_ThrowsBeforeElectionRight\", ObservableAmbTest.testAmb_ThrowsBeforeElectionRight),\n    ] }\n}\n\nfinal class ObservableBlockingTest_ : ObservableBlockingTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableBlockingTest_) -> () -> Void)] { return [\n    (\"testToArray_empty\", ObservableBlockingTest.testToArray_empty),\n    (\"testToArray_return\", ObservableBlockingTest.testToArray_return),\n    (\"testToArray_fail\", ObservableBlockingTest.testToArray_fail),\n    (\"testToArray_someData\", ObservableBlockingTest.testToArray_someData),\n    (\"testToArray_withRealScheduler\", ObservableBlockingTest.testToArray_withRealScheduler),\n    (\"testToArray_independent\", ObservableBlockingTest.testToArray_independent),\n    (\"testToArray_timeout\", ObservableBlockingTest.testToArray_timeout),\n    (\"testFirst_empty\", ObservableBlockingTest.testFirst_empty),\n    (\"testFirst_return\", ObservableBlockingTest.testFirst_return),\n    (\"testFirst_fail\", ObservableBlockingTest.testFirst_fail),\n    (\"testFirst_someData\", ObservableBlockingTest.testFirst_someData),\n    (\"testFirst_withRealScheduler\", ObservableBlockingTest.testFirst_withRealScheduler),\n    (\"testFirst_independent\", ObservableBlockingTest.testFirst_independent),\n    (\"testFirst_timeout\", ObservableBlockingTest.testFirst_timeout),\n    (\"testLast_empty\", ObservableBlockingTest.testLast_empty),\n    (\"testLast_return\", ObservableBlockingTest.testLast_return),\n    (\"testLast_fail\", ObservableBlockingTest.testLast_fail),\n    (\"testLast_someData\", ObservableBlockingTest.testLast_someData),\n    (\"testLast_withRealScheduler\", ObservableBlockingTest.testLast_withRealScheduler),\n    (\"testLast_independent\", ObservableBlockingTest.testLast_independent),\n    (\"testLast_timeout\", ObservableBlockingTest.testLast_timeout),\n    (\"testSingle_empty\", ObservableBlockingTest.testSingle_empty),\n    (\"testSingle_return\", ObservableBlockingTest.testSingle_return),\n    (\"testSingle_two\", ObservableBlockingTest.testSingle_two),\n    (\"testSingle_someData\", ObservableBlockingTest.testSingle_someData),\n    (\"testSingle_fail\", ObservableBlockingTest.testSingle_fail),\n    (\"testSingle_withRealScheduler\", ObservableBlockingTest.testSingle_withRealScheduler),\n    (\"testSingle_predicate_empty\", ObservableBlockingTest.testSingle_predicate_empty),\n    (\"testSingle_predicate_return\", ObservableBlockingTest.testSingle_predicate_return),\n    (\"testSingle_predicate_someData_one_match\", ObservableBlockingTest.testSingle_predicate_someData_one_match),\n    (\"testSingle_predicate_someData_two_match\", ObservableBlockingTest.testSingle_predicate_someData_two_match),\n    (\"testSingle_predicate_none\", ObservableBlockingTest.testSingle_predicate_none),\n    (\"testSingle_predicate_throws\", ObservableBlockingTest.testSingle_predicate_throws),\n    (\"testSingle_predicate_fail\", ObservableBlockingTest.testSingle_predicate_fail),\n    (\"testSingle_predicate_withRealScheduler\", ObservableBlockingTest.testSingle_predicate_withRealScheduler),\n    (\"testSingle_independent\", ObservableBlockingTest.testSingle_independent),\n    (\"testSingle_timeout\", ObservableBlockingTest.testSingle_timeout),\n    (\"testSinglePredicate_timeout\", ObservableBlockingTest.testSinglePredicate_timeout),\n    (\"testMaterialize_empty\", ObservableBlockingTest.testMaterialize_empty),\n    (\"testMaterialize_empty_fail\", ObservableBlockingTest.testMaterialize_empty_fail),\n    (\"testMaterialize_someData\", ObservableBlockingTest.testMaterialize_someData),\n    (\"testMaterialize_someData_fail\", ObservableBlockingTest.testMaterialize_someData_fail),\n    ] }\n}\n\nfinal class ObservableBufferTest_ : ObservableBufferTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableBufferTest_) -> () -> Void)] { return [\n    (\"testBufferWithTimeOrCount_Basic\", ObservableBufferTest.testBufferWithTimeOrCount_Basic),\n    (\"testBufferWithTimeOrCount_Error\", ObservableBufferTest.testBufferWithTimeOrCount_Error),\n    (\"testBufferWithTimeOrCount_Disposed\", ObservableBufferTest.testBufferWithTimeOrCount_Disposed),\n    (\"testBufferWithTimeOrCount_Default\", ObservableBufferTest.testBufferWithTimeOrCount_Default),\n    ] }\n}\n\nfinal class ObservableCatchTest_ : ObservableCatchTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableCatchTest_) -> () -> Void)] { return [\n    (\"testCatch_ErrorSpecific_Caught\", ObservableCatchTest.testCatch_ErrorSpecific_Caught),\n    (\"testCatch_HandlerThrows\", ObservableCatchTest.testCatch_HandlerThrows),\n    (\"testCatchSequenceOf_IEofIO\", ObservableCatchTest.testCatchSequenceOf_IEofIO),\n    (\"testCatchAnySequence_NoErrors\", ObservableCatchTest.testCatchAnySequence_NoErrors),\n    (\"testCatchAnySequence_Never\", ObservableCatchTest.testCatchAnySequence_Never),\n    (\"testCatchAnySequence_Empty\", ObservableCatchTest.testCatchAnySequence_Empty),\n    (\"testCatchSequenceOf_Error\", ObservableCatchTest.testCatchSequenceOf_Error),\n    (\"testCatchSequenceOf_ErrorNever\", ObservableCatchTest.testCatchSequenceOf_ErrorNever),\n    (\"testCatchSequenceOf_ErrorError\", ObservableCatchTest.testCatchSequenceOf_ErrorError),\n    (\"testCatchSequenceOf_Multiple\", ObservableCatchTest.testCatchSequenceOf_Multiple),\n    (\"testRetry_Basic\", ObservableCatchTest.testRetry_Basic),\n    (\"testRetry_Infinite\", ObservableCatchTest.testRetry_Infinite),\n    (\"testRetry_Observable_Error\", ObservableCatchTest.testRetry_Observable_Error),\n    (\"testRetryCount_Basic\", ObservableCatchTest.testRetryCount_Basic),\n    (\"testRetryCount_Dispose\", ObservableCatchTest.testRetryCount_Dispose),\n    (\"testRetryCount_Infinite\", ObservableCatchTest.testRetryCount_Infinite),\n    (\"testRetryCount_Completed\", ObservableCatchTest.testRetryCount_Completed),\n    (\"testRetry_tailRecursiveOptimizationsTest\", ObservableCatchTest.testRetry_tailRecursiveOptimizationsTest),\n    ] }\n}\n\nfinal class ObservableCombineLatestTest_ : ObservableCombineLatestTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableCombineLatestTest_) -> () -> Void)] { return [\n    (\"testCombineLatest_Never2\", ObservableCombineLatestTest.testCombineLatest_Never2),\n    (\"testCombineLatest_Empty2\", ObservableCombineLatestTest.testCombineLatest_Empty2),\n    (\"testCombineLatest_SelectorThrows2\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows2),\n    (\"testCombineLatest_WillNeverBeAbleToCombine2\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine2),\n    (\"testCombineLatest_Typical2\", ObservableCombineLatestTest.testCombineLatest_Typical2),\n    (\"testCombineLatest_Never3\", ObservableCombineLatestTest.testCombineLatest_Never3),\n    (\"testCombineLatest_Empty3\", ObservableCombineLatestTest.testCombineLatest_Empty3),\n    (\"testCombineLatest_SelectorThrows3\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows3),\n    (\"testCombineLatest_WillNeverBeAbleToCombine3\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine3),\n    (\"testCombineLatest_Typical3\", ObservableCombineLatestTest.testCombineLatest_Typical3),\n    (\"testCombineLatest_Never4\", ObservableCombineLatestTest.testCombineLatest_Never4),\n    (\"testCombineLatest_Empty4\", ObservableCombineLatestTest.testCombineLatest_Empty4),\n    (\"testCombineLatest_SelectorThrows4\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows4),\n    (\"testCombineLatest_WillNeverBeAbleToCombine4\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine4),\n    (\"testCombineLatest_Typical4\", ObservableCombineLatestTest.testCombineLatest_Typical4),\n    (\"testCombineLatest_Never5\", ObservableCombineLatestTest.testCombineLatest_Never5),\n    (\"testCombineLatest_Empty5\", ObservableCombineLatestTest.testCombineLatest_Empty5),\n    (\"testCombineLatest_SelectorThrows5\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows5),\n    (\"testCombineLatest_WillNeverBeAbleToCombine5\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine5),\n    (\"testCombineLatest_Typical5\", ObservableCombineLatestTest.testCombineLatest_Typical5),\n    (\"testCombineLatest_Never6\", ObservableCombineLatestTest.testCombineLatest_Never6),\n    (\"testCombineLatest_Empty6\", ObservableCombineLatestTest.testCombineLatest_Empty6),\n    (\"testCombineLatest_SelectorThrows6\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows6),\n    (\"testCombineLatest_WillNeverBeAbleToCombine6\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine6),\n    (\"testCombineLatest_Typical6\", ObservableCombineLatestTest.testCombineLatest_Typical6),\n    (\"testCombineLatest_Never7\", ObservableCombineLatestTest.testCombineLatest_Never7),\n    (\"testCombineLatest_Empty7\", ObservableCombineLatestTest.testCombineLatest_Empty7),\n    (\"testCombineLatest_SelectorThrows7\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows7),\n    (\"testCombineLatest_WillNeverBeAbleToCombine7\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine7),\n    (\"testCombineLatest_Typical7\", ObservableCombineLatestTest.testCombineLatest_Typical7),\n    (\"testCombineLatest_Never8\", ObservableCombineLatestTest.testCombineLatest_Never8),\n    (\"testCombineLatest_Empty8\", ObservableCombineLatestTest.testCombineLatest_Empty8),\n    (\"testCombineLatest_SelectorThrows8\", ObservableCombineLatestTest.testCombineLatest_SelectorThrows8),\n    (\"testCombineLatest_WillNeverBeAbleToCombine8\", ObservableCombineLatestTest.testCombineLatest_WillNeverBeAbleToCombine8),\n    (\"testCombineLatest_Typical8\", ObservableCombineLatestTest.testCombineLatest_Typical8),\n    (\"testCombineLatest_NeverEmpty\", ObservableCombineLatestTest.testCombineLatest_NeverEmpty),\n    (\"testCombineLatest_EmptyNever\", ObservableCombineLatestTest.testCombineLatest_EmptyNever),\n    (\"testCombineLatest_EmptyReturn\", ObservableCombineLatestTest.testCombineLatest_EmptyReturn),\n    (\"testCombineLatest_ReturnEmpty\", ObservableCombineLatestTest.testCombineLatest_ReturnEmpty),\n    (\"testCombineLatest_NeverReturn\", ObservableCombineLatestTest.testCombineLatest_NeverReturn),\n    (\"testCombineLatest_ReturnNever\", ObservableCombineLatestTest.testCombineLatest_ReturnNever),\n    (\"testCombineLatest_ReturnReturn1\", ObservableCombineLatestTest.testCombineLatest_ReturnReturn1),\n    (\"testCombineLatest_ReturnReturn2\", ObservableCombineLatestTest.testCombineLatest_ReturnReturn2),\n    (\"testCombineLatest_EmptyError\", ObservableCombineLatestTest.testCombineLatest_EmptyError),\n    (\"testCombineLatest_ErrorEmpty\", ObservableCombineLatestTest.testCombineLatest_ErrorEmpty),\n    (\"testCombineLatest_ReturnThrow\", ObservableCombineLatestTest.testCombineLatest_ReturnThrow),\n    (\"testCombineLatest_ThrowReturn\", ObservableCombineLatestTest.testCombineLatest_ThrowReturn),\n    (\"testCombineLatest_ThrowThrow1\", ObservableCombineLatestTest.testCombineLatest_ThrowThrow1),\n    (\"testCombineLatest_ThrowThrow2\", ObservableCombineLatestTest.testCombineLatest_ThrowThrow2),\n    (\"testCombineLatest_ErrorThrow\", ObservableCombineLatestTest.testCombineLatest_ErrorThrow),\n    (\"testCombineLatest_ThrowError\", ObservableCombineLatestTest.testCombineLatest_ThrowError),\n    (\"testCombineLatest_SomeThrow\", ObservableCombineLatestTest.testCombineLatest_SomeThrow),\n    (\"testCombineLatest_ThrowSome\", ObservableCombineLatestTest.testCombineLatest_ThrowSome),\n    (\"testCombineLatest_ThrowAfterCompleteLeft\", ObservableCombineLatestTest.testCombineLatest_ThrowAfterCompleteLeft),\n    (\"testCombineLatest_ThrowAfterCompleteRight\", ObservableCombineLatestTest.testCombineLatest_ThrowAfterCompleteRight),\n    (\"testCombineLatest_TestInterleavedWithTail\", ObservableCombineLatestTest.testCombineLatest_TestInterleavedWithTail),\n    (\"testCombineLatest_Consecutive\", ObservableCombineLatestTest.testCombineLatest_Consecutive),\n    (\"testCombineLatest_ConsecutiveEndWithErrorLeft\", ObservableCombineLatestTest.testCombineLatest_ConsecutiveEndWithErrorLeft),\n    (\"testCombineLatest_ConsecutiveEndWithErrorRight\", ObservableCombineLatestTest.testCombineLatest_ConsecutiveEndWithErrorRight),\n    (\"testCombineLatest_DeadlockErrorAfterN\", ObservableCombineLatestTest.testCombineLatest_DeadlockErrorAfterN),\n    (\"testCombineLatest_DeadlockErrorImmediately\", ObservableCombineLatestTest.testCombineLatest_DeadlockErrorImmediately),\n    (\"testReplay_DeadlockEmpty\", ObservableCombineLatestTest.testReplay_DeadlockEmpty),\n    (\"testCombineLatest_emptyArrayN\", ObservableCombineLatestTest.testCombineLatest_emptyArrayN),\n    (\"testCombineLatest_NeverN\", ObservableCombineLatestTest.testCombineLatest_NeverN),\n    (\"testCombineLatest_NeverEmptyN\", ObservableCombineLatestTest.testCombineLatest_NeverEmptyN),\n    (\"testCombineLatest_EmptyNeverN\", ObservableCombineLatestTest.testCombineLatest_EmptyNeverN),\n    (\"testCombineLatest_EmptyReturnN\", ObservableCombineLatestTest.testCombineLatest_EmptyReturnN),\n    (\"testCombineLatest_ReturnReturnN\", ObservableCombineLatestTest.testCombineLatest_ReturnReturnN),\n    (\"testCombineLatest_EmptyErrorN\", ObservableCombineLatestTest.testCombineLatest_EmptyErrorN),\n    (\"testCombineLatest_ReturnErrorN\", ObservableCombineLatestTest.testCombineLatest_ReturnErrorN),\n    (\"testCombineLatest_ErrorErrorN\", ObservableCombineLatestTest.testCombineLatest_ErrorErrorN),\n    (\"testCombineLatest_NeverErrorN\", ObservableCombineLatestTest.testCombineLatest_NeverErrorN),\n    (\"testCombineLatest_SomeErrorN\", ObservableCombineLatestTest.testCombineLatest_SomeErrorN),\n    (\"testCombineLatest_ErrorAfterCompletedN\", ObservableCombineLatestTest.testCombineLatest_ErrorAfterCompletedN),\n    (\"testCombineLatest_InterleavedWithTailN\", ObservableCombineLatestTest.testCombineLatest_InterleavedWithTailN),\n    (\"testCombineLatest_ConsecutiveN\", ObservableCombineLatestTest.testCombineLatest_ConsecutiveN),\n    (\"testCombineLatest_ConsecutiveNWithErrorLeft\", ObservableCombineLatestTest.testCombineLatest_ConsecutiveNWithErrorLeft),\n    (\"testCombineLatest_ConsecutiveNWithErrorRight\", ObservableCombineLatestTest.testCombineLatest_ConsecutiveNWithErrorRight),\n    (\"testCombineLatest_SelectorThrowsN\", ObservableCombineLatestTest.testCombineLatest_SelectorThrowsN),\n    (\"testCombineLatest_willNeverBeAbleToCombineN\", ObservableCombineLatestTest.testCombineLatest_willNeverBeAbleToCombineN),\n    (\"testCombineLatest_typicalN\", ObservableCombineLatestTest.testCombineLatest_typicalN),\n    (\"testCombineLatest_NAry_symmetric\", ObservableCombineLatestTest.testCombineLatest_NAry_symmetric),\n    (\"testCombineLatest_NAry_asymmetric\", ObservableCombineLatestTest.testCombineLatest_NAry_asymmetric),\n    ] }\n}\n\nfinal class ObservableCompactMapTest_ : ObservableCompactMapTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableCompactMapTest_) -> () -> Void)] { return [\n    (\"test_compactMapNilFromClosure\", ObservableCompactMapTest.test_compactMapNilFromClosure),\n    (\"test_compactMapNilFromElement\", ObservableCompactMapTest.test_compactMapNilFromElement),\n    (\"test_compactMapDisposed\", ObservableCompactMapTest.test_compactMapDisposed),\n    ] }\n}\n\nfinal class ObservableConcatTest_ : ObservableConcatTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableConcatTest_) -> () -> Void)] { return [\n    (\"testConcat_DefaultScheduler\", ObservableConcatTest.testConcat_DefaultScheduler),\n    (\"testConcat_IEofIO\", ObservableConcatTest.testConcat_IEofIO),\n    (\"testConcat_EmptyEmpty\", ObservableConcatTest.testConcat_EmptyEmpty),\n    (\"testConcat_EmptyNever\", ObservableConcatTest.testConcat_EmptyNever),\n    (\"testConcat_NeverNever\", ObservableConcatTest.testConcat_NeverNever),\n    (\"testConcat_EmptyThrow\", ObservableConcatTest.testConcat_EmptyThrow),\n    (\"testConcat_ThrowEmpty\", ObservableConcatTest.testConcat_ThrowEmpty),\n    (\"testConcat_ThrowThrow\", ObservableConcatTest.testConcat_ThrowThrow),\n    (\"testConcat_ReturnEmpty\", ObservableConcatTest.testConcat_ReturnEmpty),\n    (\"testConcat_EmptyReturn\", ObservableConcatTest.testConcat_EmptyReturn),\n    (\"testConcat_ReturnNever\", ObservableConcatTest.testConcat_ReturnNever),\n    (\"testConcat_NeverReturn\", ObservableConcatTest.testConcat_NeverReturn),\n    (\"testConcat_ReturnReturn\", ObservableConcatTest.testConcat_ReturnReturn),\n    (\"testConcat_ThrowReturn\", ObservableConcatTest.testConcat_ThrowReturn),\n    (\"testConcat_ReturnThrow\", ObservableConcatTest.testConcat_ReturnThrow),\n    (\"testConcat_SomeDataSomeData\", ObservableConcatTest.testConcat_SomeDataSomeData),\n    (\"testConcat_EnumerableTiming\", ObservableConcatTest.testConcat_EnumerableTiming),\n    (\"testConcat_variadicElementsOverload\", ObservableConcatTest.testConcat_variadicElementsOverload),\n    ] }\n}\n\nfinal class ObservableDebugTest_ : ObservableDebugTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDebugTest_) -> () -> Void)] { return [\n    (\"testDebug_Completed\", ObservableDebugTest.testDebug_Completed),\n    (\"testDebug_Error\", ObservableDebugTest.testDebug_Error),\n    ] }\n}\n\nfinal class ObservableDecodeTest_ : ObservableDecodeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDecodeTest_) -> () -> Void)] { return [\n    (\"testDecodeValidJSON\", ObservableDecodeTest.testDecodeValidJSON),\n    (\"testDecodeInvalidJSON\", ObservableDecodeTest.testDecodeInvalidJSON),\n    ] }\n}\n\nfinal class ObservableDefaultIfEmptyTest_ : ObservableDefaultIfEmptyTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDefaultIfEmptyTest_) -> () -> Void)] { return [\n    (\"testDefaultIfEmpty_Source_Empty\", ObservableDefaultIfEmptyTest.testDefaultIfEmpty_Source_Empty),\n    (\"testDefaultIfEmpty_Source_Errors\", ObservableDefaultIfEmptyTest.testDefaultIfEmpty_Source_Errors),\n    (\"testDefaultIfEmpty_Source_Emits\", ObservableDefaultIfEmptyTest.testDefaultIfEmpty_Source_Emits),\n    (\"testDefaultIfEmpty_Never\", ObservableDefaultIfEmptyTest.testDefaultIfEmpty_Never),\n    ] }\n}\n\nfinal class ObservableDelaySubscriptionTest_ : ObservableDelaySubscriptionTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDelaySubscriptionTest_) -> () -> Void)] { return [\n    (\"testDelaySubscription_TimeSpan_Simple\", ObservableDelaySubscriptionTest.testDelaySubscription_TimeSpan_Simple),\n    (\"testDelaySubscription_TimeSpan_Error\", ObservableDelaySubscriptionTest.testDelaySubscription_TimeSpan_Error),\n    (\"testDelaySubscription_TimeSpan_Dispose\", ObservableDelaySubscriptionTest.testDelaySubscription_TimeSpan_Dispose),\n    ] }\n}\n\nfinal class ObservableDelayTest_ : ObservableDelayTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDelayTest_) -> () -> Void)] { return [\n    (\"testDelay_TimeSpan_Simple1\", ObservableDelayTest.testDelay_TimeSpan_Simple1),\n    (\"testDelay_TimeSpan_Simple2\", ObservableDelayTest.testDelay_TimeSpan_Simple2),\n    (\"testDelay_TimeSpan_Simple3\", ObservableDelayTest.testDelay_TimeSpan_Simple3),\n    (\"testDelay_TimeSpan_Error\", ObservableDelayTest.testDelay_TimeSpan_Error),\n    (\"testDelay_TimeSpan_Completed\", ObservableDelayTest.testDelay_TimeSpan_Completed),\n    (\"testDelay_TimeSpan_Error1\", ObservableDelayTest.testDelay_TimeSpan_Error1),\n    (\"testDelay_TimeSpan_Error2\", ObservableDelayTest.testDelay_TimeSpan_Error2),\n    (\"testDelay_TimeSpan_Real_Simple\", ObservableDelayTest.testDelay_TimeSpan_Real_Simple),\n    (\"testDelay_TimeSpan_Real_Error1\", ObservableDelayTest.testDelay_TimeSpan_Real_Error1),\n    (\"testDelay_TimeSpan_Real_Error2\", ObservableDelayTest.testDelay_TimeSpan_Real_Error2),\n    (\"testDelay_TimeSpan_Real_Error3\", ObservableDelayTest.testDelay_TimeSpan_Real_Error3),\n    (\"testDelay_TimeSpan_Positive\", ObservableDelayTest.testDelay_TimeSpan_Positive),\n    (\"testDelay_TimeSpan_DefaultScheduler\", ObservableDelayTest.testDelay_TimeSpan_DefaultScheduler),\n    ] }\n}\n\nfinal class ObservableDematerializeTest_ : ObservableDematerializeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDematerializeTest_) -> () -> Void)] { return [\n    (\"testDematerialize_Range1\", ObservableDematerializeTest.testDematerialize_Range1),\n    (\"testDematerialize_Range2\", ObservableDematerializeTest.testDematerialize_Range2),\n    (\"testDematerialize_Error\", ObservableDematerializeTest.testDematerialize_Error),\n    (\"testDematerialize_Error2\", ObservableDematerializeTest.testDematerialize_Error2),\n    (\"testMaterialize_Dematerialize_Never\", ObservableDematerializeTest.testMaterialize_Dematerialize_Never),\n    (\"testMaterialize_Dematerialize_Empty\", ObservableDematerializeTest.testMaterialize_Dematerialize_Empty),\n    (\"testMaterialize_Dematerialize_Return\", ObservableDematerializeTest.testMaterialize_Dematerialize_Return),\n    (\"testMaterialize_Dematerialize_Throw\", ObservableDematerializeTest.testMaterialize_Dematerialize_Throw),\n    ] }\n}\n\nfinal class ObservableDistinctUntilChangedTest_ : ObservableDistinctUntilChangedTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDistinctUntilChangedTest_) -> () -> Void)] { return [\n    (\"testDistinctUntilChanged_allChanges\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_allChanges),\n    (\"testDistinctUntilChanged_someChanges\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_someChanges),\n    (\"testDistinctUntilChanged_allEqual\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_allEqual),\n    (\"testDistinctUntilChanged_allDifferent\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_allDifferent),\n    (\"testDistinctUntilChanged_keySelector_Div2\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_keySelector_Div2),\n    (\"testDistinctUntilChanged_keySelectorThrows\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_keySelectorThrows),\n    (\"testDistinctUntilChangedKeyPath_allChanges\", ObservableDistinctUntilChangedTest.testDistinctUntilChangedKeyPath_allChanges),\n    (\"testDistinctUntilChanged_comparerThrows\", ObservableDistinctUntilChangedTest.testDistinctUntilChanged_comparerThrows),\n    ] }\n}\n\nfinal class ObservableDoOnTest_ : ObservableDoOnTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableDoOnTest_) -> () -> Void)] { return [\n    (\"testDoOn_shouldSeeAllValues\", ObservableDoOnTest.testDoOn_shouldSeeAllValues),\n    (\"testDoOn_plainAction\", ObservableDoOnTest.testDoOn_plainAction),\n    (\"testDoOn_nextCompleted\", ObservableDoOnTest.testDoOn_nextCompleted),\n    (\"testDoOn_completedNever\", ObservableDoOnTest.testDoOn_completedNever),\n    (\"testDoOn_nextError\", ObservableDoOnTest.testDoOn_nextError),\n    (\"testDoOn_nextErrorNot\", ObservableDoOnTest.testDoOn_nextErrorNot),\n    (\"testDoOnNext_normal\", ObservableDoOnTest.testDoOnNext_normal),\n    (\"testDoOnNext_throws\", ObservableDoOnTest.testDoOnNext_throws),\n    (\"testDoOnError_normal\", ObservableDoOnTest.testDoOnError_normal),\n    (\"testDoOnError_throws\", ObservableDoOnTest.testDoOnError_throws),\n    (\"testDoOnCompleted_normal\", ObservableDoOnTest.testDoOnCompleted_normal),\n    (\"testDoOnCompleted_throws\", ObservableDoOnTest.testDoOnCompleted_throws),\n    (\"testDoOnOrder_Completed_Async\", ObservableDoOnTest.testDoOnOrder_Completed_Async),\n    (\"testDoOnOrder_Completed_Sync\", ObservableDoOnTest.testDoOnOrder_Completed_Sync),\n    (\"testDoOnOrder_Error\", ObservableDoOnTest.testDoOnOrder_Error),\n    (\"testDoOnOrder_Dispose\", ObservableDoOnTest.testDoOnOrder_Dispose),\n    ] }\n}\n\nfinal class ObservableElementAtTest_ : ObservableElementAtTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableElementAtTest_) -> () -> Void)] { return [\n    (\"testElementAt_Complete_After\", ObservableElementAtTest.testElementAt_Complete_After),\n    (\"testElementAt_Complete_Before\", ObservableElementAtTest.testElementAt_Complete_Before),\n    (\"testElementAt_Error_After\", ObservableElementAtTest.testElementAt_Error_After),\n    (\"testElementAt_Error_Before\", ObservableElementAtTest.testElementAt_Error_Before),\n    (\"testElementAt_Dispose_Before\", ObservableElementAtTest.testElementAt_Dispose_Before),\n    (\"testElementAt_Dispose_After\", ObservableElementAtTest.testElementAt_Dispose_After),\n    (\"testElementAt_First\", ObservableElementAtTest.testElementAt_First),\n    ] }\n}\n\nfinal class ObservableEnumeratedTest_ : ObservableEnumeratedTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableEnumeratedTest_) -> () -> Void)] { return [\n    (\"test_Infinite\", ObservableEnumeratedTest.test_Infinite),\n    (\"test_Completed\", ObservableEnumeratedTest.test_Completed),\n    (\"test_Error\", ObservableEnumeratedTest.test_Error),\n    ] }\n}\n\nfinal class ObservableFilterTest_ : ObservableFilterTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableFilterTest_) -> () -> Void)] { return [\n    (\"test_filterComplete\", ObservableFilterTest.test_filterComplete),\n    (\"test_filterTrue\", ObservableFilterTest.test_filterTrue),\n    (\"test_filterFalse\", ObservableFilterTest.test_filterFalse),\n    (\"test_filterDisposed\", ObservableFilterTest.test_filterDisposed),\n    (\"testIgnoreElements_DoesNotSendValues\", ObservableFilterTest.testIgnoreElements_DoesNotSendValues),\n    ] }\n}\n\nfinal class ObservableGenerateTest_ : ObservableGenerateTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableGenerateTest_) -> () -> Void)] { return [\n    (\"testGenerate_Finite\", ObservableGenerateTest.testGenerate_Finite),\n    (\"testGenerate_ThrowCondition\", ObservableGenerateTest.testGenerate_ThrowCondition),\n    (\"testGenerate_ThrowIterate\", ObservableGenerateTest.testGenerate_ThrowIterate),\n    (\"testGenerate_Dispose\", ObservableGenerateTest.testGenerate_Dispose),\n    (\"testGenerate_take\", ObservableGenerateTest.testGenerate_take),\n    ] }\n}\n\nfinal class ObservableGroupByTest_ : ObservableGroupByTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableGroupByTest_) -> () -> Void)] { return [\n    (\"testGroupBy_TwoGroup\", ObservableGroupByTest.testGroupBy_TwoGroup),\n    (\"testGroupBy_OuterComplete\", ObservableGroupByTest.testGroupBy_OuterComplete),\n    (\"testGroupBy_OuterError\", ObservableGroupByTest.testGroupBy_OuterError),\n    (\"testGroupBy_OuterDispose\", ObservableGroupByTest.testGroupBy_OuterDispose),\n    (\"testGroupBy_OuterKeySelectorThrows\", ObservableGroupByTest.testGroupBy_OuterKeySelectorThrows),\n    (\"testGroupBy_InnerComplete\", ObservableGroupByTest.testGroupBy_InnerComplete),\n    (\"testGroupBy_InnerCompleteAll\", ObservableGroupByTest.testGroupBy_InnerCompleteAll),\n    (\"testGroupBy_InnerError\", ObservableGroupByTest.testGroupBy_InnerError),\n    (\"testGroupBy_InnerDispose\", ObservableGroupByTest.testGroupBy_InnerDispose),\n    (\"testGroupBy_InnerKeyThrow\", ObservableGroupByTest.testGroupBy_InnerKeyThrow),\n    (\"testGroupBy_OuterIndependence\", ObservableGroupByTest.testGroupBy_OuterIndependence),\n    (\"testGroupBy_InnerIndependence\", ObservableGroupByTest.testGroupBy_InnerIndependence),\n    (\"testGroupBy_InnerMultipleIndependence\", ObservableGroupByTest.testGroupBy_InnerMultipleIndependence),\n    (\"testGroupBy_InnerEscapeComplete\", ObservableGroupByTest.testGroupBy_InnerEscapeComplete),\n    (\"testGroupBy_InnerEscapeError\", ObservableGroupByTest.testGroupBy_InnerEscapeError),\n    (\"testGroupBy_InnerEscapeDispose\", ObservableGroupByTest.testGroupBy_InnerEscapeDispose),\n    ] }\n}\n\nfinal class ObservableJustTest_ : ObservableJustTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableJustTest_) -> () -> Void)] { return [\n    (\"testJust_Immediate\", ObservableJustTest.testJust_Immediate),\n    (\"testJust_Basic\", ObservableJustTest.testJust_Basic),\n    (\"testJust_Disposed\", ObservableJustTest.testJust_Disposed),\n    (\"testJust_DisposeAfterNext\", ObservableJustTest.testJust_DisposeAfterNext),\n    (\"testJust_DefaultScheduler\", ObservableJustTest.testJust_DefaultScheduler),\n    (\"testJust_CompilesInMap\", ObservableJustTest.testJust_CompilesInMap),\n    ] }\n}\n\nfinal class ObservableMapTest_ : ObservableMapTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableMapTest_) -> () -> Void)] { return [\n    (\"testMap_Never\", ObservableMapTest.testMap_Never),\n    (\"testMap_Empty\", ObservableMapTest.testMap_Empty),\n    (\"testMap_Range\", ObservableMapTest.testMap_Range),\n    (\"testMap_Error\", ObservableMapTest.testMap_Error),\n    (\"testMap_Dispose\", ObservableMapTest.testMap_Dispose),\n    (\"testMap_SelectorThrows\", ObservableMapTest.testMap_SelectorThrows),\n    (\"testMapCompose_Never\", ObservableMapTest.testMapCompose_Never),\n    (\"testMapCompose_Empty\", ObservableMapTest.testMapCompose_Empty),\n    (\"testMapCompose_Range\", ObservableMapTest.testMapCompose_Range),\n    (\"testMapCompose_Error\", ObservableMapTest.testMapCompose_Error),\n    (\"testMapCompose_Dispose\", ObservableMapTest.testMapCompose_Dispose),\n    (\"testMapCompose_Selector1Throws\", ObservableMapTest.testMapCompose_Selector1Throws),\n    (\"testMapCompose_Selector2Throws\", ObservableMapTest.testMapCompose_Selector2Throws),\n    ] }\n}\n\nfinal class ObservableMaterializeTest_ : ObservableMaterializeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableMaterializeTest_) -> () -> Void)] { return [\n    (\"testMaterializeNever\", ObservableMaterializeTest.testMaterializeNever),\n    (\"testMaterializeEmpty\", ObservableMaterializeTest.testMaterializeEmpty),\n    (\"testMaterializeEmits\", ObservableMaterializeTest.testMaterializeEmits),\n    (\"testMaterializeThrow\", ObservableMaterializeTest.testMaterializeThrow),\n    ] }\n}\n\nfinal class ObservableMergeTest_ : ObservableMergeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableMergeTest_) -> () -> Void)] { return [\n    (\"testMerge_DeadlockSimple\", ObservableMergeTest.testMerge_DeadlockSimple),\n    (\"testMerge_DeadlockErrorAfterN\", ObservableMergeTest.testMerge_DeadlockErrorAfterN),\n    (\"testMerge_DeadlockErrorImmediately\", ObservableMergeTest.testMerge_DeadlockErrorImmediately),\n    (\"testMerge_DeadlockEmpty\", ObservableMergeTest.testMerge_DeadlockEmpty),\n    (\"testMerge_DeadlockFirstEmpty\", ObservableMergeTest.testMerge_DeadlockFirstEmpty),\n    (\"testMergeConcurrent_DeadlockSimple\", ObservableMergeTest.testMergeConcurrent_DeadlockSimple),\n    (\"testMergeConcurrent_DeadlockErrorAfterN\", ObservableMergeTest.testMergeConcurrent_DeadlockErrorAfterN),\n    (\"testMergeConcurrent_DeadlockErrorImmediately\", ObservableMergeTest.testMergeConcurrent_DeadlockErrorImmediately),\n    (\"testMergeConcurrent_DeadlockEmpty\", ObservableMergeTest.testMergeConcurrent_DeadlockEmpty),\n    (\"testMergeConcurrent_DeadlockFirstEmpty\", ObservableMergeTest.testMergeConcurrent_DeadlockFirstEmpty),\n    (\"testMerge_ObservableOfObservable_Data\", ObservableMergeTest.testMerge_ObservableOfObservable_Data),\n    (\"testMerge_ObservableOfObservable_Data_NotOverlapped\", ObservableMergeTest.testMerge_ObservableOfObservable_Data_NotOverlapped),\n    (\"testMerge_ObservableOfObservable_InnerThrows\", ObservableMergeTest.testMerge_ObservableOfObservable_InnerThrows),\n    (\"testMerge_ObservableOfObservable_OuterThrows\", ObservableMergeTest.testMerge_ObservableOfObservable_OuterThrows),\n    (\"testMerge_MergeConcat_Basic\", ObservableMergeTest.testMerge_MergeConcat_Basic),\n    (\"testMerge_MergeConcat_BasicLong\", ObservableMergeTest.testMerge_MergeConcat_BasicLong),\n    (\"testMerge_MergeConcat_BasicWide\", ObservableMergeTest.testMerge_MergeConcat_BasicWide),\n    (\"testMerge_MergeConcat_BasicLate\", ObservableMergeTest.testMerge_MergeConcat_BasicLate),\n    (\"testMerge_MergeConcat_Disposed\", ObservableMergeTest.testMerge_MergeConcat_Disposed),\n    (\"testMerge_MergeConcat_OuterError\", ObservableMergeTest.testMerge_MergeConcat_OuterError),\n    (\"testMerge_MergeConcat_InnerError\", ObservableMergeTest.testMerge_MergeConcat_InnerError),\n    (\"testMergeSync_Empty\", ObservableMergeTest.testMergeSync_Empty),\n    (\"testMergeSync_EmptyData_DoesntCompleteImmediately\", ObservableMergeTest.testMergeSync_EmptyData_DoesntCompleteImmediately),\n    (\"testMergeSync_EmptyEmpty_Completes\", ObservableMergeTest.testMergeSync_EmptyEmpty_Completes),\n    (\"testMergeSync_Data\", ObservableMergeTest.testMergeSync_Data),\n    (\"testMergeSync_ObservableOfObservable_InnerThrows\", ObservableMergeTest.testMergeSync_ObservableOfObservable_InnerThrows),\n    (\"testFlatMapFirst_Complete\", ObservableMergeTest.testFlatMapFirst_Complete),\n    (\"testFlatMapFirst_Complete_InnerNotComplete\", ObservableMergeTest.testFlatMapFirst_Complete_InnerNotComplete),\n    (\"testFlatMapFirst_Complete_OuterNotComplete\", ObservableMergeTest.testFlatMapFirst_Complete_OuterNotComplete),\n    (\"testFlatMapFirst_Complete_ErrorOuter\", ObservableMergeTest.testFlatMapFirst_Complete_ErrorOuter),\n    (\"testFlatMapFirst_Error_Inner\", ObservableMergeTest.testFlatMapFirst_Error_Inner),\n    (\"testFlatMapFirst_Dispose\", ObservableMergeTest.testFlatMapFirst_Dispose),\n    (\"testFlatMapFirst_SelectorThrows\", ObservableMergeTest.testFlatMapFirst_SelectorThrows),\n    (\"testFlatMapFirst_UseFunction\", ObservableMergeTest.testFlatMapFirst_UseFunction),\n    (\"testFlatMap_Complete\", ObservableMergeTest.testFlatMap_Complete),\n    (\"testFlatMap_Complete_InnerNotComplete\", ObservableMergeTest.testFlatMap_Complete_InnerNotComplete),\n    (\"testFlatMap_Complete_OuterNotComplete\", ObservableMergeTest.testFlatMap_Complete_OuterNotComplete),\n    (\"testFlatMap_Complete_ErrorOuter\", ObservableMergeTest.testFlatMap_Complete_ErrorOuter),\n    (\"testFlatMap_Error_Inner\", ObservableMergeTest.testFlatMap_Error_Inner),\n    (\"testFlatMap_Dispose\", ObservableMergeTest.testFlatMap_Dispose),\n    (\"testFlatMap_SelectorThrows\", ObservableMergeTest.testFlatMap_SelectorThrows),\n    (\"testFlatMap_UseFunction\", ObservableMergeTest.testFlatMap_UseFunction),\n    (\"testConcatMap_InnerCompleteFasterThanOuterElementsAreProduced\", ObservableMergeTest.testConcatMap_InnerCompleteFasterThanOuterElementsAreProduced),\n    (\"testConcatMap_Disposed\", ObservableMergeTest.testConcatMap_Disposed),\n    (\"testConcatMap_OuterComplete_InnerNotComplete\", ObservableMergeTest.testConcatMap_OuterComplete_InnerNotComplete),\n    (\"testConcatMap_InnerComplete_OuterNotComplete\", ObservableMergeTest.testConcatMap_InnerComplete_OuterNotComplete),\n    (\"testConcatMap_InnerComplete_OuterCompleteBeforeInner\", ObservableMergeTest.testConcatMap_InnerComplete_OuterCompleteBeforeInner),\n    (\"testConcatMap_InnerComplete_OuterCompleteAfterInner\", ObservableMergeTest.testConcatMap_InnerComplete_OuterCompleteAfterInner),\n    (\"testConcatMap_Error_Outer\", ObservableMergeTest.testConcatMap_Error_Outer),\n    (\"testConcatMap_Error_Inner\", ObservableMergeTest.testConcatMap_Error_Inner),\n    (\"testConcatMap_Throw\", ObservableMergeTest.testConcatMap_Throw),\n    (\"testConcatMap_UseFunction\", ObservableMergeTest.testConcatMap_UseFunction),\n    ] }\n}\n\nfinal class ObservableMulticastTest_ : ObservableMulticastTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableMulticastTest_) -> () -> Void)] { return [\n    (\"testMulticastWhileConnected_connectControlsSourceSubscription\", ObservableMulticastTest.testMulticastWhileConnected_connectControlsSourceSubscription),\n    (\"testMulticastWhileConnected_connectFirstThenSubscribe\", ObservableMulticastTest.testMulticastWhileConnected_connectFirstThenSubscribe),\n    (\"testMulticastWhileConnected_completed\", ObservableMulticastTest.testMulticastWhileConnected_completed),\n    (\"testMulticastWhileConnected_error\", ObservableMulticastTest.testMulticastWhileConnected_error),\n    (\"testMulticastForever_connectControlsSourceSubscription\", ObservableMulticastTest.testMulticastForever_connectControlsSourceSubscription),\n    (\"testMulticastForever_connectFirstThenSubscribe\", ObservableMulticastTest.testMulticastForever_connectFirstThenSubscribe),\n    (\"testMulticastForever_completed\", ObservableMulticastTest.testMulticastForever_completed),\n    (\"testMulticastForever_error\", ObservableMulticastTest.testMulticastForever_error),\n    (\"testMulticast_Cold_Completed\", ObservableMulticastTest.testMulticast_Cold_Completed),\n    (\"testMulticast_Cold_Error\", ObservableMulticastTest.testMulticast_Cold_Error),\n    (\"testMulticast_Cold_Dispose\", ObservableMulticastTest.testMulticast_Cold_Dispose),\n    (\"testMulticast_Cold_Zip\", ObservableMulticastTest.testMulticast_Cold_Zip),\n    (\"testMulticast_SubjectSelectorThrows\", ObservableMulticastTest.testMulticast_SubjectSelectorThrows),\n    (\"testMulticast_SelectorThrows\", ObservableMulticastTest.testMulticast_SelectorThrows),\n    (\"testRefCount_DeadlockSimple\", ObservableMulticastTest.testRefCount_DeadlockSimple),\n    (\"testRefCount_DeadlockErrorAfterN\", ObservableMulticastTest.testRefCount_DeadlockErrorAfterN),\n    (\"testRefCount_DeadlockErrorImmediately\", ObservableMulticastTest.testRefCount_DeadlockErrorImmediately),\n    (\"testRefCount_DeadlockEmpty\", ObservableMulticastTest.testRefCount_DeadlockEmpty),\n    (\"testRefCount_ConnectsOnFirst\", ObservableMulticastTest.testRefCount_ConnectsOnFirst),\n    (\"testRefCount_DoesntConnectsOnFirstInCaseSynchronousCompleted\", ObservableMulticastTest.testRefCount_DoesntConnectsOnFirstInCaseSynchronousCompleted),\n    (\"testRefCount_DoesntConnectsOnFirstInCaseSynchronousError\", ObservableMulticastTest.testRefCount_DoesntConnectsOnFirstInCaseSynchronousError),\n    (\"testRefCount_NotConnected\", ObservableMulticastTest.testRefCount_NotConnected),\n    (\"testRefCount_Error\", ObservableMulticastTest.testRefCount_Error),\n    (\"testRefCount_Publish\", ObservableMulticastTest.testRefCount_Publish),\n    (\"testRefCount_synchronousResubscribingOnErrorWorks\", ObservableMulticastTest.testRefCount_synchronousResubscribingOnErrorWorks),\n    (\"testRefCount_synchronousResubscribingOnCompletedWorks\", ObservableMulticastTest.testRefCount_synchronousResubscribingOnCompletedWorks),\n    (\"testReplayCount_Basic\", ObservableMulticastTest.testReplayCount_Basic),\n    (\"testReplayCount_Error\", ObservableMulticastTest.testReplayCount_Error),\n    (\"testReplayCount_Complete\", ObservableMulticastTest.testReplayCount_Complete),\n    (\"testReplayCount_Dispose\", ObservableMulticastTest.testReplayCount_Dispose),\n    (\"testReplayOneCount_Basic\", ObservableMulticastTest.testReplayOneCount_Basic),\n    (\"testReplayOneCount_Error\", ObservableMulticastTest.testReplayOneCount_Error),\n    (\"testReplayOneCount_Complete\", ObservableMulticastTest.testReplayOneCount_Complete),\n    (\"testReplayOneCount_Dispose\", ObservableMulticastTest.testReplayOneCount_Dispose),\n    (\"testReplayAll_Basic\", ObservableMulticastTest.testReplayAll_Basic),\n    (\"testReplayAll_Error\", ObservableMulticastTest.testReplayAll_Error),\n    (\"testReplayAll_Complete\", ObservableMulticastTest.testReplayAll_Complete),\n    (\"testReplayAll_Dispose\", ObservableMulticastTest.testReplayAll_Dispose),\n    ] }\n}\n\nfinal class ObservableObserveOnTest_ : ObservableObserveOnTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableObserveOnTest_) -> () -> Void)] { return [\n    (\"testObserveOnDispatchQueue_DoesPerformWorkOnQueue\", ObservableObserveOnTest.testObserveOnDispatchQueue_DoesPerformWorkOnQueue),\n    (\"testObserveOnDispatchQueue_DeadlockErrorImmediately\", ObservableObserveOnTest.testObserveOnDispatchQueue_DeadlockErrorImmediately),\n    (\"testObserveOnDispatchQueue_DeadlockEmpty\", ObservableObserveOnTest.testObserveOnDispatchQueue_DeadlockEmpty),\n    (\"testObserveOnDispatchQueue_Never\", ObservableObserveOnTest.testObserveOnDispatchQueue_Never),\n    (\"testObserveOnDispatchQueue_Simple\", ObservableObserveOnTest.testObserveOnDispatchQueue_Simple),\n    (\"testObserveOnDispatchQueue_Empty\", ObservableObserveOnTest.testObserveOnDispatchQueue_Empty),\n    (\"testObserveOnDispatchQueue_Error\", ObservableObserveOnTest.testObserveOnDispatchQueue_Error),\n    (\"testObserveOnDispatchQueue_Dispose\", ObservableObserveOnTest.testObserveOnDispatchQueue_Dispose),\n    ] }\n}\n\nfinal class ObservableObserveOnTestConcurrentSchedulerTest_ : ObservableObserveOnTestConcurrentSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableObserveOnTestConcurrentSchedulerTest_) -> () -> Void)] { return [\n    (\"testObserveOn_EnsureTestsAreExecutedWithRealConcurrentScheduler\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_EnsureTestsAreExecutedWithRealConcurrentScheduler),\n    (\"testObserveOn_Never\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_Never),\n    (\"testObserveOn_Simple\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_Simple),\n    (\"testObserveOn_Empty\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_Empty),\n    (\"testObserveOn_ConcurrentSchedulerIsSerialized\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_ConcurrentSchedulerIsSerialized),\n    (\"testObserveOn_Error\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_Error),\n    (\"testObserveOn_Dispose\", ObservableObserveOnTestConcurrentSchedulerTest.testObserveOn_Dispose),\n    ] }\n}\n\nfinal class ObservableOptionalTest_ : ObservableOptionalTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableOptionalTest_) -> () -> Void)] { return [\n    (\"testFromOptionalSome_immediate\", ObservableOptionalTest.testFromOptionalSome_immediate),\n    (\"testFromOptionalNone_immediate\", ObservableOptionalTest.testFromOptionalNone_immediate),\n    (\"testFromOptionalSome_basic_testScheduler\", ObservableOptionalTest.testFromOptionalSome_basic_testScheduler),\n    (\"testFromOptionalNone_basic_testScheduler\", ObservableOptionalTest.testFromOptionalNone_basic_testScheduler),\n    ] }\n}\n\nfinal class ObservablePrimitiveSequenceTest_ : ObservablePrimitiveSequenceTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservablePrimitiveSequenceTest_) -> () -> Void)] { return [\n    (\"testAsSingle_Empty\", ObservablePrimitiveSequenceTest.testAsSingle_Empty),\n    (\"testAsSingle_One\", ObservablePrimitiveSequenceTest.testAsSingle_One),\n    (\"testAsSingle_Many\", ObservablePrimitiveSequenceTest.testAsSingle_Many),\n    (\"testAsSingle_Error\", ObservablePrimitiveSequenceTest.testAsSingle_Error),\n    (\"testAsSingle_Error2\", ObservablePrimitiveSequenceTest.testAsSingle_Error2),\n    (\"testAsSingle_subscribeOnSuccess\", ObservablePrimitiveSequenceTest.testAsSingle_subscribeOnSuccess),\n    (\"testAsSingle_subscribeOnError\", ObservablePrimitiveSequenceTest.testAsSingle_subscribeOnError),\n    (\"testFirst_Empty\", ObservablePrimitiveSequenceTest.testFirst_Empty),\n    (\"testFirst_One\", ObservablePrimitiveSequenceTest.testFirst_One),\n    (\"testFirst_Many\", ObservablePrimitiveSequenceTest.testFirst_Many),\n    (\"testFirst_ManyWithoutCompletion\", ObservablePrimitiveSequenceTest.testFirst_ManyWithoutCompletion),\n    (\"testFirst_Error\", ObservablePrimitiveSequenceTest.testFirst_Error),\n    (\"testAsMaybe_Empty\", ObservablePrimitiveSequenceTest.testAsMaybe_Empty),\n    (\"testAsMaybe_One\", ObservablePrimitiveSequenceTest.testAsMaybe_One),\n    (\"testAsMaybe_Many\", ObservablePrimitiveSequenceTest.testAsMaybe_Many),\n    (\"testAsMaybe_Error\", ObservablePrimitiveSequenceTest.testAsMaybe_Error),\n    (\"testAsMaybe_Error2\", ObservablePrimitiveSequenceTest.testAsMaybe_Error2),\n    (\"testAsMaybe_subscribeOnSuccess\", ObservablePrimitiveSequenceTest.testAsMaybe_subscribeOnSuccess),\n    (\"testAsMaybe_subscribeOnError\", ObservablePrimitiveSequenceTest.testAsMaybe_subscribeOnError),\n    (\"testAsMaybe_subscribeOnCompleted\", ObservablePrimitiveSequenceTest.testAsMaybe_subscribeOnCompleted),\n    (\"testAsCompletable_Empty\", ObservablePrimitiveSequenceTest.testAsCompletable_Empty),\n    (\"testAsCompletable_Error\", ObservablePrimitiveSequenceTest.testAsCompletable_Error),\n    (\"testAsCompletable_subscribeOnCompleted\", ObservablePrimitiveSequenceTest.testAsCompletable_subscribeOnCompleted),\n    (\"testAsCompletable_subscribeOnError\", ObservablePrimitiveSequenceTest.testAsCompletable_subscribeOnError),\n    (\"testCompletable_merge\", ObservablePrimitiveSequenceTest.testCompletable_merge),\n    (\"testCompletable_concat\", ObservablePrimitiveSequenceTest.testCompletable_concat),\n    ] }\n}\n\nfinal class ObservableRangeTest_ : ObservableRangeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableRangeTest_) -> () -> Void)] { return [\n    (\"testRange_Boundaries\", ObservableRangeTest.testRange_Boundaries),\n    (\"testRange_ZeroCount\", ObservableRangeTest.testRange_ZeroCount),\n    (\"testRange_Dispose\", ObservableRangeTest.testRange_Dispose),\n    ] }\n}\n\nfinal class ObservableReduceTest_ : ObservableReduceTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableReduceTest_) -> () -> Void)] { return [\n    (\"test_ReduceWithSeed_Empty\", ObservableReduceTest.test_ReduceWithSeed_Empty),\n    (\"test_ReduceWithSeed_Return\", ObservableReduceTest.test_ReduceWithSeed_Return),\n    (\"test_ReduceWithSeed_Throw\", ObservableReduceTest.test_ReduceWithSeed_Throw),\n    (\"test_ReduceWithSeed_Never\", ObservableReduceTest.test_ReduceWithSeed_Never),\n    (\"test_ReduceWithSeed_Range\", ObservableReduceTest.test_ReduceWithSeed_Range),\n    (\"test_ReduceWithSeed_AccumulatorThrows\", ObservableReduceTest.test_ReduceWithSeed_AccumulatorThrows),\n    (\"test_ReduceWithSeedAndResult_Empty\", ObservableReduceTest.test_ReduceWithSeedAndResult_Empty),\n    (\"test_ReduceWithSeedAndResult_Return\", ObservableReduceTest.test_ReduceWithSeedAndResult_Return),\n    (\"test_ReduceWithSeedAndResult_Throw\", ObservableReduceTest.test_ReduceWithSeedAndResult_Throw),\n    (\"test_ReduceWithSeedAndResult_Never\", ObservableReduceTest.test_ReduceWithSeedAndResult_Never),\n    (\"test_ReduceWithSeedAndResult_Range\", ObservableReduceTest.test_ReduceWithSeedAndResult_Range),\n    (\"test_ReduceWithSeedAndResult_AccumulatorThrows\", ObservableReduceTest.test_ReduceWithSeedAndResult_AccumulatorThrows),\n    (\"test_ReduceWithSeedAndResult_SelectorThrows\", ObservableReduceTest.test_ReduceWithSeedAndResult_SelectorThrows),\n    ] }\n}\n\nfinal class ObservableRelayBindTest_ : ObservableRelayBindTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableRelayBindTest_) -> () -> Void)] { return [\n    (\"testBindToPublishRelay\", ObservableRelayBindTest.testBindToPublishRelay),\n    (\"testBindToPublishRelays\", ObservableRelayBindTest.testBindToPublishRelays),\n    (\"testBindToOptionalPublishRelay\", ObservableRelayBindTest.testBindToOptionalPublishRelay),\n    (\"testBindToOptionalPublishRelays\", ObservableRelayBindTest.testBindToOptionalPublishRelays),\n    (\"testBindToPublishRelayNoAmbiguity\", ObservableRelayBindTest.testBindToPublishRelayNoAmbiguity),\n    (\"testBindToBehaviorRelay\", ObservableRelayBindTest.testBindToBehaviorRelay),\n    (\"testBindToBehaviorRelays\", ObservableRelayBindTest.testBindToBehaviorRelays),\n    (\"testBindToOptionalBehaviorRelay\", ObservableRelayBindTest.testBindToOptionalBehaviorRelay),\n    (\"testBindToOptionalBehaviorRelays\", ObservableRelayBindTest.testBindToOptionalBehaviorRelays),\n    (\"testBindToBehaviorRelayNoAmbiguity\", ObservableRelayBindTest.testBindToBehaviorRelayNoAmbiguity),\n    (\"testBindToReplayRelay\", ObservableRelayBindTest.testBindToReplayRelay),\n    (\"testBindToReplayRelays\", ObservableRelayBindTest.testBindToReplayRelays),\n    (\"testBindToOptionalReplayRelay\", ObservableRelayBindTest.testBindToOptionalReplayRelay),\n    (\"testBindToOptionalReplayRelays\", ObservableRelayBindTest.testBindToOptionalReplayRelays),\n    (\"testBindToReplayRelayNoAmbiguity\", ObservableRelayBindTest.testBindToReplayRelayNoAmbiguity),\n    ] }\n}\n\nfinal class ObservableRepeatTest_ : ObservableRepeatTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableRepeatTest_) -> () -> Void)] { return [\n    (\"testRepeat_Element\", ObservableRepeatTest.testRepeat_Element),\n    ] }\n}\n\nfinal class ObservableRetryWhenTest_ : ObservableRetryWhenTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableRetryWhenTest_) -> () -> Void)] { return [\n    (\"testRetryWhen_Never\", ObservableRetryWhenTest.testRetryWhen_Never),\n    (\"testRetryWhen_ObservableNever\", ObservableRetryWhenTest.testRetryWhen_ObservableNever),\n    (\"testRetryWhen_ObservableNeverComplete\", ObservableRetryWhenTest.testRetryWhen_ObservableNeverComplete),\n    (\"testRetryWhen_ObservableEmpty\", ObservableRetryWhenTest.testRetryWhen_ObservableEmpty),\n    (\"testRetryWhen_ObservableNextError\", ObservableRetryWhenTest.testRetryWhen_ObservableNextError),\n    (\"testRetryWhen_ObservableComplete\", ObservableRetryWhenTest.testRetryWhen_ObservableComplete),\n    (\"testRetryWhen_ObservableNextComplete\", ObservableRetryWhenTest.testRetryWhen_ObservableNextComplete),\n    (\"testRetryWhen_ObservableInfinite\", ObservableRetryWhenTest.testRetryWhen_ObservableInfinite),\n    (\"testRetryWhen_Incremental_BackOff\", ObservableRetryWhenTest.testRetryWhen_Incremental_BackOff),\n    (\"testRetryWhen_IgnoresDifferentErrorTypes\", ObservableRetryWhenTest.testRetryWhen_IgnoresDifferentErrorTypes),\n    (\"testRetryWhen_tailRecursiveOptimizationsTest\", ObservableRetryWhenTest.testRetryWhen_tailRecursiveOptimizationsTest),\n    ] }\n}\n\nfinal class ObservableSampleTest_ : ObservableSampleTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSampleTest_) -> () -> Void)] { return [\n    (\"testSample_Sampler_DefaultValue\", ObservableSampleTest.testSample_Sampler_DefaultValue),\n    (\"testSample_Sampler_SamplerThrows\", ObservableSampleTest.testSample_Sampler_SamplerThrows),\n    (\"testSample_Sampler_Simple1\", ObservableSampleTest.testSample_Sampler_Simple1),\n    (\"testSample_Sampler_Simple2\", ObservableSampleTest.testSample_Sampler_Simple2),\n    (\"testSample_Sampler_Simple3\", ObservableSampleTest.testSample_Sampler_Simple3),\n    (\"testSample_Sampler_SourceThrows\", ObservableSampleTest.testSample_Sampler_SourceThrows),\n    ] }\n}\n\nfinal class ObservableScanTest_ : ObservableScanTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableScanTest_) -> () -> Void)] { return [\n    (\"testScan_Seed_Never\", ObservableScanTest.testScan_Seed_Never),\n    (\"testScan_Into_Never\", ObservableScanTest.testScan_Into_Never),\n    (\"testScan_Seed_Empty\", ObservableScanTest.testScan_Seed_Empty),\n    (\"testScan_Into_Empty\", ObservableScanTest.testScan_Into_Empty),\n    (\"testScan_Seed_Return\", ObservableScanTest.testScan_Seed_Return),\n    (\"testScan_Into_Accumulate\", ObservableScanTest.testScan_Into_Accumulate),\n    (\"testScan_Seed_Throw\", ObservableScanTest.testScan_Seed_Throw),\n    (\"testScan_Into_Throw\", ObservableScanTest.testScan_Into_Throw),\n    (\"testScan_Seed_SomeData\", ObservableScanTest.testScan_Seed_SomeData),\n    (\"testScan_Into_SomeData\", ObservableScanTest.testScan_Into_SomeData),\n    (\"testScan_Seed_AccumulatorThrows\", ObservableScanTest.testScan_Seed_AccumulatorThrows),\n    (\"testScan_Into_AccumulatorThrows\", ObservableScanTest.testScan_Into_AccumulatorThrows),\n    ] }\n}\n\nfinal class ObservableSequenceTest_ : ObservableSequenceTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSequenceTest_) -> () -> Void)] { return [\n    (\"testFromArray_complete_immediate\", ObservableSequenceTest.testFromArray_complete_immediate),\n    (\"testFromArray_complete\", ObservableSequenceTest.testFromArray_complete),\n    (\"testFromArray_dispose\", ObservableSequenceTest.testFromArray_dispose),\n    (\"testSequenceOf_complete_immediate\", ObservableSequenceTest.testSequenceOf_complete_immediate),\n    (\"testSequenceOf_complete\", ObservableSequenceTest.testSequenceOf_complete),\n    (\"testSequenceOf_dispose\", ObservableSequenceTest.testSequenceOf_dispose),\n    (\"testFromAnySequence_basic_immediate\", ObservableSequenceTest.testFromAnySequence_basic_immediate),\n    (\"testToObservableAnySequence_basic_testScheduler\", ObservableSequenceTest.testToObservableAnySequence_basic_testScheduler),\n    ] }\n}\n\nfinal class ObservableShareReplayScopeTests_ : ObservableShareReplayScopeTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableShareReplayScopeTests_) -> () -> Void)] { return [\n    (\"test_testDefaultArguments\", ObservableShareReplayScopeTests.test_testDefaultArguments),\n    (\"test_forever_receivesCorrectElements\", ObservableShareReplayScopeTests.test_forever_receivesCorrectElements),\n    (\"test_whileConnected_receivesCorrectElements\", ObservableShareReplayScopeTests.test_whileConnected_receivesCorrectElements),\n    (\"test_forever_error\", ObservableShareReplayScopeTests.test_forever_error),\n    (\"test_whileConnected_error\", ObservableShareReplayScopeTests.test_whileConnected_error),\n    (\"test_forever_completed\", ObservableShareReplayScopeTests.test_forever_completed),\n    (\"test_whileConnected_completed\", ObservableShareReplayScopeTests.test_whileConnected_completed),\n    ] }\n}\n\nfinal class ObservableSingleTest_ : ObservableSingleTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSingleTest_) -> () -> Void)] { return [\n    (\"testSingle_Empty\", ObservableSingleTest.testSingle_Empty),\n    (\"testSingle_One\", ObservableSingleTest.testSingle_One),\n    (\"testSingle_Many\", ObservableSingleTest.testSingle_Many),\n    (\"testSingle_Error\", ObservableSingleTest.testSingle_Error),\n    (\"testSinglePredicate_Empty\", ObservableSingleTest.testSinglePredicate_Empty),\n    (\"testSinglePredicate_One\", ObservableSingleTest.testSinglePredicate_One),\n    (\"testSinglePredicate_Many\", ObservableSingleTest.testSinglePredicate_Many),\n    (\"testSinglePredicate_Error\", ObservableSingleTest.testSinglePredicate_Error),\n    (\"testSinglePredicate_Throws\", ObservableSingleTest.testSinglePredicate_Throws),\n    ] }\n}\n\nfinal class ObservableSkipTest_ : ObservableSkipTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSkipTest_) -> () -> Void)] { return [\n    (\"testSkip_Complete_After\", ObservableSkipTest.testSkip_Complete_After),\n    (\"testSkip_Complete_Some\", ObservableSkipTest.testSkip_Complete_Some),\n    (\"testSkip_Complete_Before\", ObservableSkipTest.testSkip_Complete_Before),\n    (\"testSkip_Complete_Zero\", ObservableSkipTest.testSkip_Complete_Zero),\n    (\"testSkip_Error_After\", ObservableSkipTest.testSkip_Error_After),\n    (\"testSkip_Error_Same\", ObservableSkipTest.testSkip_Error_Same),\n    (\"testSkip_Error_Before\", ObservableSkipTest.testSkip_Error_Before),\n    (\"testSkip_Dispose_Before\", ObservableSkipTest.testSkip_Dispose_Before),\n    (\"testSkip_Dispose_After\", ObservableSkipTest.testSkip_Dispose_After),\n    (\"testSkip_Zero\", ObservableSkipTest.testSkip_Zero),\n    (\"testSkip_Some\", ObservableSkipTest.testSkip_Some),\n    (\"testSkip_Late\", ObservableSkipTest.testSkip_Late),\n    (\"testSkip_Error\", ObservableSkipTest.testSkip_Error),\n    (\"testSkip_Never\", ObservableSkipTest.testSkip_Never),\n    ] }\n}\n\nfinal class ObservableSkipUntilTest_ : ObservableSkipUntilTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSkipUntilTest_) -> () -> Void)] { return [\n    (\"testSkipUntil_SomeData_Next\", ObservableSkipUntilTest.testSkipUntil_SomeData_Next),\n    (\"testSkipUntil_SomeData_Error\", ObservableSkipUntilTest.testSkipUntil_SomeData_Error),\n    (\"testSkipUntil_Error_SomeData\", ObservableSkipUntilTest.testSkipUntil_Error_SomeData),\n    (\"testSkipUntil_SomeData_Empty\", ObservableSkipUntilTest.testSkipUntil_SomeData_Empty),\n    (\"testSkipUntil_Never_Next\", ObservableSkipUntilTest.testSkipUntil_Never_Next),\n    (\"testSkipUntil_Never_Error1\", ObservableSkipUntilTest.testSkipUntil_Never_Error1),\n    (\"testSkipUntil_SomeData_Error2\", ObservableSkipUntilTest.testSkipUntil_SomeData_Error2),\n    (\"testSkipUntil_SomeData_Never\", ObservableSkipUntilTest.testSkipUntil_SomeData_Never),\n    (\"testSkipUntil_Never_Empty\", ObservableSkipUntilTest.testSkipUntil_Never_Empty),\n    (\"testSkipUntil_Never_Never\", ObservableSkipUntilTest.testSkipUntil_Never_Never),\n    (\"testSkipUntil_HasCompletedCausesDisposal\", ObservableSkipUntilTest.testSkipUntil_HasCompletedCausesDisposal),\n    ] }\n}\n\nfinal class ObservableSkipWhileTest_ : ObservableSkipWhileTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSkipWhileTest_) -> () -> Void)] { return [\n    (\"testSkipWhile_Complete_Before\", ObservableSkipWhileTest.testSkipWhile_Complete_Before),\n    (\"testSkipWhile_Complete_After\", ObservableSkipWhileTest.testSkipWhile_Complete_After),\n    (\"testSkipWhile_Error_Before\", ObservableSkipWhileTest.testSkipWhile_Error_Before),\n    (\"testSkipWhile_Error_After\", ObservableSkipWhileTest.testSkipWhile_Error_After),\n    (\"testSkipWhile_Dispose_Before\", ObservableSkipWhileTest.testSkipWhile_Dispose_Before),\n    (\"testSkipWhile_Dispose_After\", ObservableSkipWhileTest.testSkipWhile_Dispose_After),\n    (\"testSkipWhile_Zero\", ObservableSkipWhileTest.testSkipWhile_Zero),\n    (\"testSkipWhile_Throw\", ObservableSkipWhileTest.testSkipWhile_Throw),\n    ] }\n}\n\nfinal class ObservableSubscribeOnTest_ : ObservableSubscribeOnTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSubscribeOnTest_) -> () -> Void)] { return [\n    (\"testSubscribeOn_SchedulerSleep\", ObservableSubscribeOnTest.testSubscribeOn_SchedulerSleep),\n    (\"testSubscribeOn_SchedulerCompleted\", ObservableSubscribeOnTest.testSubscribeOn_SchedulerCompleted),\n    (\"testSubscribeOn_SchedulerError\", ObservableSubscribeOnTest.testSubscribeOn_SchedulerError),\n    (\"testSubscribeOn_SchedulerDispose\", ObservableSubscribeOnTest.testSubscribeOn_SchedulerDispose),\n    ] }\n}\n\nfinal class ObservableSubscriptionTest_ : ObservableSubscriptionTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSubscriptionTest_) -> () -> Void)] { return [\n    (\"testDefaultErrorHandler\", ObservableSubscriptionTest.testDefaultErrorHandler),\n    (\"testCustomCaptureSubscriptionCallstack\", ObservableSubscriptionTest.testCustomCaptureSubscriptionCallstack),\n    ] }\n}\n\nfinal class ObservableSubscriptionTests_ : ObservableSubscriptionTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSubscriptionTests_) -> () -> Void)] { return [\n    (\"testSubscribeOnNext\", ObservableSubscriptionTests.testSubscribeOnNext),\n    (\"testSubscribeOnError\", ObservableSubscriptionTests.testSubscribeOnError),\n    (\"testSubscribeOnCompleted\", ObservableSubscriptionTests.testSubscribeOnCompleted),\n    (\"testDisposed\", ObservableSubscriptionTests.testDisposed),\n    ] }\n}\n\nfinal class ObservableSwitchIfEmptyTest_ : ObservableSwitchIfEmptyTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSwitchIfEmptyTest_) -> () -> Void)] { return [\n    (\"testSwitchIfEmpty_SourceNotEmpty_SwitchCompletes\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_SourceNotEmpty_SwitchCompletes),\n    (\"testSwitchIfEmpty_SourceNotEmptyError_SwitchCompletes\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_SourceNotEmptyError_SwitchCompletes),\n    (\"testSwitchIfEmpty_SourceEmptyError_SwitchCompletes\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_SourceEmptyError_SwitchCompletes),\n    (\"testSwitchIfEmpty_SourceEmpty_SwitchCompletes\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_SourceEmpty_SwitchCompletes),\n    (\"testSwitchIfEmpty_SourceEmpty_SwitchError\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_SourceEmpty_SwitchError),\n    (\"testSwitchIfEmpty_Never\", ObservableSwitchIfEmptyTest.testSwitchIfEmpty_Never),\n    ] }\n}\n\nfinal class ObservableSwitchTest_ : ObservableSwitchTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableSwitchTest_) -> () -> Void)] { return [\n    (\"testSwitch_Data\", ObservableSwitchTest.testSwitch_Data),\n    (\"testSwitch_InnerThrows\", ObservableSwitchTest.testSwitch_InnerThrows),\n    (\"testSwitch_OuterThrows\", ObservableSwitchTest.testSwitch_OuterThrows),\n    (\"testFlatMapLatest_Data\", ObservableSwitchTest.testFlatMapLatest_Data),\n    (\"testFlatMapLatest_InnerThrows\", ObservableSwitchTest.testFlatMapLatest_InnerThrows),\n    (\"testFlatMapLatest_OuterThrows\", ObservableSwitchTest.testFlatMapLatest_OuterThrows),\n    (\"testFlatMapLatest_SelectorThrows\", ObservableSwitchTest.testFlatMapLatest_SelectorThrows),\n    ] }\n}\n\nfinal class ObservableTakeLastTest_ : ObservableTakeLastTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTakeLastTest_) -> () -> Void)] { return [\n    (\"testTakeLast_Complete_Less\", ObservableTakeLastTest.testTakeLast_Complete_Less),\n    (\"testTakeLast_Complete_Same\", ObservableTakeLastTest.testTakeLast_Complete_Same),\n    (\"testTakeLast_Complete_More\", ObservableTakeLastTest.testTakeLast_Complete_More),\n    (\"testTakeLast_Error_Less\", ObservableTakeLastTest.testTakeLast_Error_Less),\n    (\"testTakeLast_Error_Same\", ObservableTakeLastTest.testTakeLast_Error_Same),\n    (\"testTakeLast_Error_More\", ObservableTakeLastTest.testTakeLast_Error_More),\n    (\"testTakeLast_0_DefaultScheduler\", ObservableTakeLastTest.testTakeLast_0_DefaultScheduler),\n    (\"testTakeLast_TakeLast1\", ObservableTakeLastTest.testTakeLast_TakeLast1),\n    (\"testTakeLast_DecrementCountsFirst\", ObservableTakeLastTest.testTakeLast_DecrementCountsFirst),\n    ] }\n}\n\nfinal class ObservableTakeTest_ : ObservableTakeTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTakeTest_) -> () -> Void)] { return [\n    (\"testTake_Complete_After\", ObservableTakeTest.testTake_Complete_After),\n    (\"testTake_Complete_Same\", ObservableTakeTest.testTake_Complete_Same),\n    (\"testTake_Complete_Before\", ObservableTakeTest.testTake_Complete_Before),\n    (\"testTake_Error_After\", ObservableTakeTest.testTake_Error_After),\n    (\"testTake_Error_Same\", ObservableTakeTest.testTake_Error_Same),\n    (\"testTake_Error_Before\", ObservableTakeTest.testTake_Error_Before),\n    (\"testTake_Dispose_Before\", ObservableTakeTest.testTake_Dispose_Before),\n    (\"testTake_Dispose_After\", ObservableTakeTest.testTake_Dispose_After),\n    (\"testTake_0_DefaultScheduler\", ObservableTakeTest.testTake_0_DefaultScheduler),\n    (\"testTake_Take1\", ObservableTakeTest.testTake_Take1),\n    (\"testTake_DecrementCountsFirst\", ObservableTakeTest.testTake_DecrementCountsFirst),\n    (\"testTake_TakeZero\", ObservableTakeTest.testTake_TakeZero),\n    (\"testTake_Some\", ObservableTakeTest.testTake_Some),\n    (\"testTake_TakeLate\", ObservableTakeTest.testTake_TakeLate),\n    (\"testTake_TakeError\", ObservableTakeTest.testTake_TakeError),\n    (\"testTake_TakeNever\", ObservableTakeTest.testTake_TakeNever),\n    (\"testTake_TakeTwice1\", ObservableTakeTest.testTake_TakeTwice1),\n    (\"testTake_TakeDefault\", ObservableTakeTest.testTake_TakeDefault),\n    ] }\n}\n\nfinal class ObservableTakeUntilTest_ : ObservableTakeUntilTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTakeUntilTest_) -> () -> Void)] { return [\n    (\"testTakeUntil_Preempt_SomeData_Next\", ObservableTakeUntilTest.testTakeUntil_Preempt_SomeData_Next),\n    (\"testTakeUntil_Preempt_SomeData_Error\", ObservableTakeUntilTest.testTakeUntil_Preempt_SomeData_Error),\n    (\"testTakeUntil_NoPreempt_SomeData_Empty\", ObservableTakeUntilTest.testTakeUntil_NoPreempt_SomeData_Empty),\n    (\"testTakeUntil_NoPreempt_SomeData_Never\", ObservableTakeUntilTest.testTakeUntil_NoPreempt_SomeData_Never),\n    (\"testTakeUntil_Preempt_Never_Next\", ObservableTakeUntilTest.testTakeUntil_Preempt_Never_Next),\n    (\"testTakeUntil_Preempt_Never_Error\", ObservableTakeUntilTest.testTakeUntil_Preempt_Never_Error),\n    (\"testTakeUntil_NoPreempt_Never_Empty\", ObservableTakeUntilTest.testTakeUntil_NoPreempt_Never_Empty),\n    (\"testTakeUntil_NoPreempt_Never_Never\", ObservableTakeUntilTest.testTakeUntil_NoPreempt_Never_Never),\n    (\"testTakeUntil_Preempt_BeforeFirstProduced\", ObservableTakeUntilTest.testTakeUntil_Preempt_BeforeFirstProduced),\n    (\"testTakeUntil_Preempt_BeforeFirstProduced_RemainSilentAndProperlyDisposed\", ObservableTakeUntilTest.testTakeUntil_Preempt_BeforeFirstProduced_RemainSilentAndProperlyDisposed),\n    (\"testTakeUntil_NoPreempt_AfterLastProduced_ProperlyDisposed\", ObservableTakeUntilTest.testTakeUntil_NoPreempt_AfterLastProduced_ProperlyDisposed),\n    (\"testTakeUntil_Error_Some\", ObservableTakeUntilTest.testTakeUntil_Error_Some),\n    (\"testTakeUntilPredicate_Exclusive_Preempt_SomeData_Next\", ObservableTakeUntilTest.testTakeUntilPredicate_Exclusive_Preempt_SomeData_Next),\n    (\"testTakeUntilPredicate_Exclusive_Preempt_SomeData_Error\", ObservableTakeUntilTest.testTakeUntilPredicate_Exclusive_Preempt_SomeData_Error),\n    (\"testTakeUntilPredicate_Exclusive_AlwaysFailingPredicate\", ObservableTakeUntilTest.testTakeUntilPredicate_Exclusive_AlwaysFailingPredicate),\n    (\"testTakeUntilPredicate_Exclusive_ImmediatelySuccessfulPredicate\", ObservableTakeUntilTest.testTakeUntilPredicate_Exclusive_ImmediatelySuccessfulPredicate),\n    (\"testTakeUntilPredicate_Inclusive_Preempt_SomeData_Next\", ObservableTakeUntilTest.testTakeUntilPredicate_Inclusive_Preempt_SomeData_Next),\n    (\"testTakeUntilPredicate_Inclusive_Preempt_SomeData_Error\", ObservableTakeUntilTest.testTakeUntilPredicate_Inclusive_Preempt_SomeData_Error),\n    (\"testTakeUntilPredicate_Inclusive_AlwaysFailingPredicate\", ObservableTakeUntilTest.testTakeUntilPredicate_Inclusive_AlwaysFailingPredicate),\n    (\"testTakeUntilPredicate_Inclusive_ImmediatelySuccessfulPredicate\", ObservableTakeUntilTest.testTakeUntilPredicate_Inclusive_ImmediatelySuccessfulPredicate),\n    ] }\n}\n\nfinal class ObservableTakeWhileTest_ : ObservableTakeWhileTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTakeWhileTest_) -> () -> Void)] { return [\n    (\"testTakeWhile_Exclusive_Complete_Before\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Complete_Before),\n    (\"testTakeWhile_Exclusive_Complete_After\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Complete_After),\n    (\"testTakeWhile_Exclusive_Error_Before\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Error_Before),\n    (\"testTakeWhile_Exclusive_Error_After\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Error_After),\n    (\"testTakeWhile_Exclusive_Dispose_Before\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Dispose_Before),\n    (\"testTakeWhile_Exclusive_Dispose_After\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Dispose_After),\n    (\"testTakeWhile_Exclusive_Zero\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Zero),\n    (\"testTakeWhile_Exclusive_Throw\", ObservableTakeWhileTest.testTakeWhile_Exclusive_Throw),\n    (\"testTakeWhile_Inclusive_Complete_Before\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Complete_Before),\n    (\"testTakeWhile_Inclusive_Complete_After\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Complete_After),\n    (\"testTakeWhile_Inclusive_Error_Before\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Error_Before),\n    (\"testTakeWhile_Inclusive_Error_After\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Error_After),\n    (\"testTakeWhile_Inclusive_Dispose_Before\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Dispose_Before),\n    (\"testTakeWhile_Inclusive_Dispose_After\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Dispose_After),\n    (\"testTakeWhile_Inclusive_Zero\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Zero),\n    (\"testTakeWhile_Inclusive_Throw\", ObservableTakeWhileTest.testTakeWhile_Inclusive_Throw),\n    ] }\n}\n\nfinal class ObservableTest_ : ObservableTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTest_) -> () -> Void)] { return [\n    (\"testAnonymousObservable_detachesOnDispose\", ObservableTest.testAnonymousObservable_detachesOnDispose),\n    (\"testAnonymousObservable_detachesOnComplete\", ObservableTest.testAnonymousObservable_detachesOnComplete),\n    (\"testAnonymousObservable_detachesOnError\", ObservableTest.testAnonymousObservable_detachesOnError),\n    (\"testAsObservable_asObservable\", ObservableTest.testAsObservable_asObservable),\n    (\"testAsObservable_hides\", ObservableTest.testAsObservable_hides),\n    (\"testAsObservable_never\", ObservableTest.testAsObservable_never),\n    (\"testSubscribeWithNext\", ObservableTest.testSubscribeWithNext),\n    (\"testDeferredFactoryClosureLifetime\", ObservableTest.testDeferredFactoryClosureLifetime),\n    (\"testObservableFactoryClosureLifetime\", ObservableTest.testObservableFactoryClosureLifetime),\n    ] }\n}\n\nfinal class ObservableThrottleTest_ : ObservableThrottleTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableThrottleTest_) -> () -> Void)] { return [\n    (\"test_ThrottleTimeSpan_NotLatest_Completed\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_Completed),\n    (\"test_ThrottleTimeSpan_NotLatest_Never\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_Never),\n    (\"test_ThrottleTimeSpan_NotLatest_Empty\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_Empty),\n    (\"test_ThrottleTimeSpan_NotLatest_Error\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_Error),\n    (\"test_ThrottleTimeSpan_NotLatest_NoEnd\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_NoEnd),\n    (\"test_ThrottleTimeSpan_NotLatest_WithRealScheduler\", ObservableThrottleTest.test_ThrottleTimeSpan_NotLatest_WithRealScheduler),\n    (\"test_ThrottleTimeSpan_Completed\", ObservableThrottleTest.test_ThrottleTimeSpan_Completed),\n    (\"test_ThrottleTimeSpan_CompletedAfterDueTime\", ObservableThrottleTest.test_ThrottleTimeSpan_CompletedAfterDueTime),\n    (\"test_ThrottleTimeSpan_Never\", ObservableThrottleTest.test_ThrottleTimeSpan_Never),\n    (\"test_ThrottleTimeSpan_Empty\", ObservableThrottleTest.test_ThrottleTimeSpan_Empty),\n    (\"test_ThrottleTimeSpan_Error\", ObservableThrottleTest.test_ThrottleTimeSpan_Error),\n    (\"test_ThrottleTimeSpan_NoEnd\", ObservableThrottleTest.test_ThrottleTimeSpan_NoEnd),\n    (\"test_ThrottleTimeSpan_WithRealScheduler_seconds\", ObservableThrottleTest.test_ThrottleTimeSpan_WithRealScheduler_seconds),\n    (\"test_ThrottleTimeSpan_WithRealScheduler_milliseconds\", ObservableThrottleTest.test_ThrottleTimeSpan_WithRealScheduler_milliseconds),\n    (\"test_ThrottleTimeSpan_WithRealScheduler_microseconds\", ObservableThrottleTest.test_ThrottleTimeSpan_WithRealScheduler_microseconds),\n    (\"test_ThrottleTimeSpan_WithRealScheduler_nanoseconds\", ObservableThrottleTest.test_ThrottleTimeSpan_WithRealScheduler_nanoseconds),\n    ] }\n}\n\nfinal class ObservableTimeoutTest_ : ObservableTimeoutTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTimeoutTest_) -> () -> Void)] { return [\n    (\"testTimeout_Empty\", ObservableTimeoutTest.testTimeout_Empty),\n    (\"testTimeout_Error\", ObservableTimeoutTest.testTimeout_Error),\n    (\"testTimeout_Never\", ObservableTimeoutTest.testTimeout_Never),\n    (\"testTimeout_Duetime_Simple\", ObservableTimeoutTest.testTimeout_Duetime_Simple),\n    (\"testTimeout_Duetime_Timeout_Exact\", ObservableTimeoutTest.testTimeout_Duetime_Timeout_Exact),\n    (\"testTimeout_Duetime_Timeout\", ObservableTimeoutTest.testTimeout_Duetime_Timeout),\n    (\"testTimeout_Duetime_Disposed\", ObservableTimeoutTest.testTimeout_Duetime_Disposed),\n    (\"testTimeout_TimeoutOccurs_1\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_1),\n    (\"testTimeout_TimeoutOccurs_2\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_2),\n    (\"testTimeout_TimeoutOccurs_Never\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_Never),\n    (\"testTimeout_TimeoutOccurs_Completed\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_Completed),\n    (\"testTimeout_TimeoutOccurs_Error\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_Error),\n    (\"testTimeout_TimeoutOccurs_NextIsError\", ObservableTimeoutTest.testTimeout_TimeoutOccurs_NextIsError),\n    (\"testTimeout_TimeoutNotOccurs_Completed\", ObservableTimeoutTest.testTimeout_TimeoutNotOccurs_Completed),\n    (\"testTimeout_TimeoutNotOccurs_Error\", ObservableTimeoutTest.testTimeout_TimeoutNotOccurs_Error),\n    (\"testTimeout_TimeoutNotOccurs\", ObservableTimeoutTest.testTimeout_TimeoutNotOccurs),\n    ] }\n}\n\nfinal class ObservableTimerTest_ : ObservableTimerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableTimerTest_) -> () -> Void)] { return [\n    (\"testTimer_Basic\", ObservableTimerTest.testTimer_Basic),\n    (\"testInterval_TimeSpan_Basic\", ObservableTimerTest.testInterval_TimeSpan_Basic),\n    (\"testInterval_TimeSpan_Zero\", ObservableTimerTest.testInterval_TimeSpan_Zero),\n    (\"testInterval_TimeSpan_Zero_DefaultScheduler\", ObservableTimerTest.testInterval_TimeSpan_Zero_DefaultScheduler),\n    (\"testInterval_TimeSpan_Disposed\", ObservableTimerTest.testInterval_TimeSpan_Disposed),\n    (\"test_IntervalWithRealScheduler\", ObservableTimerTest.test_IntervalWithRealScheduler),\n    ] }\n}\n\nfinal class ObservableToArrayTest_ : ObservableToArrayTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableToArrayTest_) -> () -> Void)] { return [\n    (\"test_ToArrayWithSingleItem_Return\", ObservableToArrayTest.test_ToArrayWithSingleItem_Return),\n    (\"test_ToArrayWithMultipleItems_Return\", ObservableToArrayTest.test_ToArrayWithMultipleItems_Return),\n    (\"test_ToArrayWithNoItems_Empty\", ObservableToArrayTest.test_ToArrayWithNoItems_Empty),\n    (\"test_ToArrayWithSingleItem_Never\", ObservableToArrayTest.test_ToArrayWithSingleItem_Never),\n    (\"test_ToArrayWithImmediateError_Throw\", ObservableToArrayTest.test_ToArrayWithImmediateError_Throw),\n    (\"test_ToArrayWithMultipleItems_Throw\", ObservableToArrayTest.test_ToArrayWithMultipleItems_Throw),\n    ] }\n}\n\nfinal class ObservableUsingTest_ : ObservableUsingTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableUsingTest_) -> () -> Void)] { return [\n    (\"testUsing_Complete\", ObservableUsingTest.testUsing_Complete),\n    (\"testUsing_Error\", ObservableUsingTest.testUsing_Error),\n    (\"testUsing_Dispose\", ObservableUsingTest.testUsing_Dispose),\n    (\"testUsing_ThrowResourceSelector\", ObservableUsingTest.testUsing_ThrowResourceSelector),\n    (\"testUsing_ThrowResourceUsage\", ObservableUsingTest.testUsing_ThrowResourceUsage),\n    ] }\n}\n\nfinal class ObservableWindowTest_ : ObservableWindowTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableWindowTest_) -> () -> Void)] { return [\n    (\"testWindowWithTimeOrCount_Basic\", ObservableWindowTest.testWindowWithTimeOrCount_Basic),\n    (\"testWindowWithTimeOrCount_Error\", ObservableWindowTest.testWindowWithTimeOrCount_Error),\n    (\"testWindowWithTimeOrCount_Disposed\", ObservableWindowTest.testWindowWithTimeOrCount_Disposed),\n    ] }\n}\n\nfinal class ObservableWithLatestFromTest_ : ObservableWithLatestFromTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableWithLatestFromTest_) -> () -> Void)] { return [\n    (\"testWithLatestFrom_Simple1\", ObservableWithLatestFromTest.testWithLatestFrom_Simple1),\n    (\"testWithLatestFrom_TwoObservablesWithImmediateValues\", ObservableWithLatestFromTest.testWithLatestFrom_TwoObservablesWithImmediateValues),\n    (\"testWithLatestFrom_Simple2\", ObservableWithLatestFromTest.testWithLatestFrom_Simple2),\n    (\"testWithLatestFrom_Simple3\", ObservableWithLatestFromTest.testWithLatestFrom_Simple3),\n    (\"testWithLatestFrom_Error1\", ObservableWithLatestFromTest.testWithLatestFrom_Error1),\n    (\"testWithLatestFrom_Error2\", ObservableWithLatestFromTest.testWithLatestFrom_Error2),\n    (\"testWithLatestFrom_Error3\", ObservableWithLatestFromTest.testWithLatestFrom_Error3),\n    (\"testWithLatestFrom_MakeSureDefaultOverloadTakesSecondSequenceValues\", ObservableWithLatestFromTest.testWithLatestFrom_MakeSureDefaultOverloadTakesSecondSequenceValues),\n    ] }\n}\n\nfinal class ObservableZipTest_ : ObservableZipTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObservableZipTest_) -> () -> Void)] { return [\n    (\"testZip_ImmediateSchedule2\", ObservableZipTest.testZip_ImmediateSchedule2),\n    (\"testZip_Never2\", ObservableZipTest.testZip_Never2),\n    (\"testZip_Empty2\", ObservableZipTest.testZip_Empty2),\n    (\"testZip_SymmetricReturn2\", ObservableZipTest.testZip_SymmetricReturn2),\n    (\"testZip_AllCompleted2\", ObservableZipTest.testZip_AllCompleted2),\n    (\"testZip_ImmediateSchedule3\", ObservableZipTest.testZip_ImmediateSchedule3),\n    (\"testZip_Never3\", ObservableZipTest.testZip_Never3),\n    (\"testZip_Empty3\", ObservableZipTest.testZip_Empty3),\n    (\"testZip_SymmetricReturn3\", ObservableZipTest.testZip_SymmetricReturn3),\n    (\"testZip_AllCompleted3\", ObservableZipTest.testZip_AllCompleted3),\n    (\"testZip_ImmediateSchedule4\", ObservableZipTest.testZip_ImmediateSchedule4),\n    (\"testZip_Never4\", ObservableZipTest.testZip_Never4),\n    (\"testZip_Empty4\", ObservableZipTest.testZip_Empty4),\n    (\"testZip_SymmetricReturn4\", ObservableZipTest.testZip_SymmetricReturn4),\n    (\"testZip_AllCompleted4\", ObservableZipTest.testZip_AllCompleted4),\n    (\"testZip_ImmediateSchedule5\", ObservableZipTest.testZip_ImmediateSchedule5),\n    (\"testZip_Never5\", ObservableZipTest.testZip_Never5),\n    (\"testZip_Empty5\", ObservableZipTest.testZip_Empty5),\n    (\"testZip_SymmetricReturn5\", ObservableZipTest.testZip_SymmetricReturn5),\n    (\"testZip_AllCompleted5\", ObservableZipTest.testZip_AllCompleted5),\n    (\"testZip_ImmediateSchedule6\", ObservableZipTest.testZip_ImmediateSchedule6),\n    (\"testZip_Never6\", ObservableZipTest.testZip_Never6),\n    (\"testZip_Empty6\", ObservableZipTest.testZip_Empty6),\n    (\"testZip_SymmetricReturn6\", ObservableZipTest.testZip_SymmetricReturn6),\n    (\"testZip_AllCompleted6\", ObservableZipTest.testZip_AllCompleted6),\n    (\"testZip_ImmediateSchedule7\", ObservableZipTest.testZip_ImmediateSchedule7),\n    (\"testZip_Never7\", ObservableZipTest.testZip_Never7),\n    (\"testZip_Empty7\", ObservableZipTest.testZip_Empty7),\n    (\"testZip_SymmetricReturn7\", ObservableZipTest.testZip_SymmetricReturn7),\n    (\"testZip_AllCompleted7\", ObservableZipTest.testZip_AllCompleted7),\n    (\"testZip_ImmediateSchedule8\", ObservableZipTest.testZip_ImmediateSchedule8),\n    (\"testZip_Never8\", ObservableZipTest.testZip_Never8),\n    (\"testZip_Empty8\", ObservableZipTest.testZip_Empty8),\n    (\"testZip_SymmetricReturn8\", ObservableZipTest.testZip_SymmetricReturn8),\n    (\"testZip_AllCompleted8\", ObservableZipTest.testZip_AllCompleted8),\n    (\"testZip_NeverEmpty\", ObservableZipTest.testZip_NeverEmpty),\n    (\"testZip_EmptyNever\", ObservableZipTest.testZip_EmptyNever),\n    (\"testZip_EmptyNonEmpty\", ObservableZipTest.testZip_EmptyNonEmpty),\n    (\"testZip_NonEmptyEmpty\", ObservableZipTest.testZip_NonEmptyEmpty),\n    (\"testZip_NeverNonEmpty\", ObservableZipTest.testZip_NeverNonEmpty),\n    (\"testZip_NonEmptyNever\", ObservableZipTest.testZip_NonEmptyNever),\n    (\"testZip_NonEmptyNonEmpty\", ObservableZipTest.testZip_NonEmptyNonEmpty),\n    (\"testZip_EmptyError\", ObservableZipTest.testZip_EmptyError),\n    (\"testZip_ErrorEmpty\", ObservableZipTest.testZip_ErrorEmpty),\n    (\"testZip_NeverError\", ObservableZipTest.testZip_NeverError),\n    (\"testZip_ErrorNever\", ObservableZipTest.testZip_ErrorNever),\n    (\"testZip_ErrorError\", ObservableZipTest.testZip_ErrorError),\n    (\"testZip_SomeError\", ObservableZipTest.testZip_SomeError),\n    (\"testZip_ErrorSome\", ObservableZipTest.testZip_ErrorSome),\n    (\"testZip_LeftCompletesFirst\", ObservableZipTest.testZip_LeftCompletesFirst),\n    (\"testZip_RightCompletesFirst\", ObservableZipTest.testZip_RightCompletesFirst),\n    (\"testZip_LeftTriggersSelectorError\", ObservableZipTest.testZip_LeftTriggersSelectorError),\n    (\"testZip_RightTriggersSelectorError\", ObservableZipTest.testZip_RightTriggersSelectorError),\n    (\"testZip_NAry_emptyArray\", ObservableZipTest.testZip_NAry_emptyArray),\n    (\"testZip_NAry_symmetric\", ObservableZipTest.testZip_NAry_symmetric),\n    (\"testZip_NAry_asymmetric\", ObservableZipTest.testZip_NAry_asymmetric),\n    (\"testZip_NAry_error\", ObservableZipTest.testZip_NAry_error),\n    (\"testZip_NAry_atLeastOneErrors4\", ObservableZipTest.testZip_NAry_atLeastOneErrors4),\n    ] }\n}\n\nfinal class ObserverTests_ : ObserverTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ObserverTests_) -> () -> Void)] { return [\n    (\"testConvenienceOn_Next\", ObserverTests.testConvenienceOn_Next),\n    (\"testConvenienceOn_Error\", ObserverTests.testConvenienceOn_Error),\n    (\"testConvenienceOn_Complete\", ObserverTests.testConvenienceOn_Complete),\n    (\"testMapElement\", ObserverTests.testMapElement),\n    (\"testMapElementCompleted\", ObserverTests.testMapElementCompleted),\n    (\"testMapElementError\", ObserverTests.testMapElementError),\n    (\"testMapElementThrow\", ObserverTests.testMapElementThrow),\n    ] }\n}\n\nfinal class OperationQueueSchedulerTests_ : OperationQueueSchedulerTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (OperationQueueSchedulerTests_) -> () -> Void)] { return [\n    (\"test_scheduleWithPriority\", OperationQueueSchedulerTests.test_scheduleWithPriority),\n    ] }\n}\n\nfinal class PublishSubjectTest_ : PublishSubjectTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (PublishSubjectTest_) -> () -> Void)] { return [\n    (\"test_hasObserversNoObservers\", PublishSubjectTest.test_hasObserversNoObservers),\n    (\"test_hasObserversOneObserver\", PublishSubjectTest.test_hasObserversOneObserver),\n    (\"test_hasObserversManyObserver\", PublishSubjectTest.test_hasObserversManyObserver),\n    ] }\n}\n\nfinal class ReactiveTests_ : ReactiveTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ReactiveTests_) -> () -> Void)] { return [\n    (\"testEnablesMutations\", ReactiveTests.testEnablesMutations),\n    (\"testReactiveStruct\", ReactiveTests.testReactiveStruct),\n    (\"testReactiveProtocol\", ReactiveTests.testReactiveProtocol),\n    (\"testDynamicLookup\", ReactiveTests.testDynamicLookup),\n    ] }\n}\n\nfinal class RecursiveLockTests_ : RecursiveLockTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (RecursiveLockTests_) -> () -> Void)] { return [\n    (\"testSynchronizes\", RecursiveLockTests.testSynchronizes),\n    (\"testIsReentrant\", RecursiveLockTests.testIsReentrant),\n    ] }\n}\n\nfinal class ReplayRelayTests_ : ReplayRelayTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ReplayRelayTests_) -> () -> Void)] { return [\n    (\"test_noEvents\", ReplayRelayTests.test_noEvents),\n    (\"test_fewerEventsThanBufferSize\", ReplayRelayTests.test_fewerEventsThanBufferSize),\n    (\"test_moreEventsThanBufferSize\", ReplayRelayTests.test_moreEventsThanBufferSize),\n    (\"test_moreEventsThanBufferSizeMultipleObservers\", ReplayRelayTests.test_moreEventsThanBufferSizeMultipleObservers),\n    ] }\n}\n\nfinal class ReplaySubjectTest_ : ReplaySubjectTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (ReplaySubjectTest_) -> () -> Void)] { return [\n    (\"test_hasObserversNoObservers\", ReplaySubjectTest.test_hasObserversNoObservers),\n    (\"test_hasObserversOneObserver\", ReplaySubjectTest.test_hasObserversOneObserver),\n    (\"test_hasObserversManyObserver\", ReplaySubjectTest.test_hasObserversManyObserver),\n    (\"test_noEvents\", ReplaySubjectTest.test_noEvents),\n    (\"test_fewerEventsThanBufferSize\", ReplaySubjectTest.test_fewerEventsThanBufferSize),\n    (\"test_moreEventsThanBufferSize\", ReplaySubjectTest.test_moreEventsThanBufferSize),\n    (\"test_moreEventsThanBufferSizeMultipleObservers\", ReplaySubjectTest.test_moreEventsThanBufferSizeMultipleObservers),\n    (\"test_subscribingBeforeComplete\", ReplaySubjectTest.test_subscribingBeforeComplete),\n    (\"test_subscribingAfterComplete\", ReplaySubjectTest.test_subscribingAfterComplete),\n    (\"test_subscribingBeforeError\", ReplaySubjectTest.test_subscribingBeforeError),\n    (\"test_subscribingAfterError\", ReplaySubjectTest.test_subscribingAfterError),\n    ] }\n}\n\nfinal class SharedSequenceOperatorTests_ : SharedSequenceOperatorTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (SharedSequenceOperatorTests_) -> () -> Void)] { return [\n    (\"testAsDriver_deferred\", SharedSequenceOperatorTests.testAsDriver_deferred),\n    (\"testAsDriver_map\", SharedSequenceOperatorTests.testAsDriver_map),\n    (\"testAsDriver_compactMap\", SharedSequenceOperatorTests.testAsDriver_compactMap),\n    (\"testAsDriver_compactMapNil\", SharedSequenceOperatorTests.testAsDriver_compactMapNil),\n    (\"testAsDriver_filter\", SharedSequenceOperatorTests.testAsDriver_filter),\n    (\"testAsDriver_switchLatest\", SharedSequenceOperatorTests.testAsDriver_switchLatest),\n    (\"testAsDriver_flatMapLatest\", SharedSequenceOperatorTests.testAsDriver_flatMapLatest),\n    (\"testAsDriver_flatMapFirst\", SharedSequenceOperatorTests.testAsDriver_flatMapFirst),\n    (\"testAsDriver_doOn\", SharedSequenceOperatorTests.testAsDriver_doOn),\n    (\"testAsDriver_doOnNext\", SharedSequenceOperatorTests.testAsDriver_doOnNext),\n    (\"testAsDriver_doAfterNext\", SharedSequenceOperatorTests.testAsDriver_doAfterNext),\n    (\"testAsDriver_doOnCompleted\", SharedSequenceOperatorTests.testAsDriver_doOnCompleted),\n    (\"testAsDriver_distinctUntilChanged1\", SharedSequenceOperatorTests.testAsDriver_distinctUntilChanged1),\n    (\"testAsDriver_distinctUntilChanged2\", SharedSequenceOperatorTests.testAsDriver_distinctUntilChanged2),\n    (\"testAsDriver_distinctUntilChanged3\", SharedSequenceOperatorTests.testAsDriver_distinctUntilChanged3),\n    (\"testAsDriver_distinctUntilChanged4\", SharedSequenceOperatorTests.testAsDriver_distinctUntilChanged4),\n    (\"testAsDriver_flatMap\", SharedSequenceOperatorTests.testAsDriver_flatMap),\n    (\"testAsDriver_mergeSync\", SharedSequenceOperatorTests.testAsDriver_mergeSync),\n    (\"testAsDriver_merge\", SharedSequenceOperatorTests.testAsDriver_merge),\n    (\"testAsDriver_merge2\", SharedSequenceOperatorTests.testAsDriver_merge2),\n    (\"testAsDriver_debug\", SharedSequenceOperatorTests.testAsDriver_debug),\n    (\"testAsDriver_debounce\", SharedSequenceOperatorTests.testAsDriver_debounce),\n    (\"testAsDriver_throttle\", SharedSequenceOperatorTests.testAsDriver_throttle),\n    (\"testAsDriver_throttle2\", SharedSequenceOperatorTests.testAsDriver_throttle2),\n    (\"testAsDriver_scan\", SharedSequenceOperatorTests.testAsDriver_scan),\n    (\"testAsDriver_concat_sequenceType\", SharedSequenceOperatorTests.testAsDriver_concat_sequenceType),\n    (\"testAsDriver_concat\", SharedSequenceOperatorTests.testAsDriver_concat),\n    (\"testAsDriver_combineLatest_array\", SharedSequenceOperatorTests.testAsDriver_combineLatest_array),\n    (\"testAsDriver_combineLatest\", SharedSequenceOperatorTests.testAsDriver_combineLatest),\n    (\"testAsDriver_zip_array\", SharedSequenceOperatorTests.testAsDriver_zip_array),\n    (\"testAsDriver_zip\", SharedSequenceOperatorTests.testAsDriver_zip),\n    (\"testAsDriver_withLatestFrom\", SharedSequenceOperatorTests.testAsDriver_withLatestFrom),\n    (\"testAsDriver_withLatestFromDefaultOverload\", SharedSequenceOperatorTests.testAsDriver_withLatestFromDefaultOverload),\n    (\"testAsDriver_skip\", SharedSequenceOperatorTests.testAsDriver_skip),\n    (\"testAsDriver_startWith\", SharedSequenceOperatorTests.testAsDriver_startWith),\n    (\"testAsDriver_delay\", SharedSequenceOperatorTests.testAsDriver_delay),\n    (\"testAsDriver_interval\", SharedSequenceOperatorTests.testAsDriver_interval),\n    (\"testAsDriver_timer\", SharedSequenceOperatorTests.testAsDriver_timer),\n    (\"testDriverFromOptional\", SharedSequenceOperatorTests.testDriverFromOptional),\n    (\"testDriverFromOptionalWhenNil\", SharedSequenceOperatorTests.testDriverFromOptionalWhenNil),\n    (\"testDriverFromSequence\", SharedSequenceOperatorTests.testDriverFromSequence),\n    (\"testDriverFromArray\", SharedSequenceOperatorTests.testDriverFromArray),\n    ] }\n}\n\nfinal class SharingSchedulerTest_ : SharingSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (SharingSchedulerTest_) -> () -> Void)] { return [\n    (\"testSharingSchedulerMockMake\", SharingSchedulerTest.testSharingSchedulerMockMake),\n    (\"testSharingSchedulerMockInstance\", SharingSchedulerTest.testSharingSchedulerMockInstance),\n    (\"testSharingSchedulerMockThrows\", SharingSchedulerTest.testSharingSchedulerMockThrows),\n    ] }\n}\n\nfinal class SignalTests_ : SignalTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (SignalTests_) -> () -> Void)] { return [\n    (\"testSignalSharing_WhenErroring\", SignalTests.testSignalSharing_WhenErroring),\n    (\"testSignalSharing_WhenCompleted\", SignalTests.testSignalSharing_WhenCompleted),\n    (\"testPublishRelayAsSignal\", SignalTests.testPublishRelayAsSignal),\n    (\"testControlEventAsSignal\", SignalTests.testControlEventAsSignal),\n    (\"testAsSignal_onErrorJustReturn\", SignalTests.testAsSignal_onErrorJustReturn),\n    (\"testAsSignal_onErrorDriveWith\", SignalTests.testAsSignal_onErrorDriveWith),\n    (\"testAsSignal_onErrorRecover\", SignalTests.testAsSignal_onErrorRecover),\n    (\"testEmitObserver\", SignalTests.testEmitObserver),\n    (\"testEmitObservers\", SignalTests.testEmitObservers),\n    (\"testEmitOptionalObserver\", SignalTests.testEmitOptionalObserver),\n    (\"testEmitOptionalObservers\", SignalTests.testEmitOptionalObservers),\n    (\"testEmitNoAmbiguity\", SignalTests.testEmitNoAmbiguity),\n    (\"testEmitBehaviorRelay\", SignalTests.testEmitBehaviorRelay),\n    (\"testEmitBehaviorRelays\", SignalTests.testEmitBehaviorRelays),\n    (\"testEmitBehaviorRelay1\", SignalTests.testEmitBehaviorRelay1),\n    (\"testEmitBehaviorRelays1\", SignalTests.testEmitBehaviorRelays1),\n    (\"testEmitBehaviorRelay2\", SignalTests.testEmitBehaviorRelay2),\n    (\"testEmitBehaviorRelays2\", SignalTests.testEmitBehaviorRelays2),\n    (\"testEmitBehaviorRelayNoAmbiguity\", SignalTests.testEmitBehaviorRelayNoAmbiguity),\n    (\"testEmitPublishRelay\", SignalTests.testEmitPublishRelay),\n    (\"testEmitPublishRelays\", SignalTests.testEmitPublishRelays),\n    (\"testEmitOptionalPublishRelay1\", SignalTests.testEmitOptionalPublishRelay1),\n    (\"testEmitOptionalPublishRelays\", SignalTests.testEmitOptionalPublishRelays),\n    (\"testEmitOptionalPublishRelay2\", SignalTests.testEmitOptionalPublishRelay2),\n    (\"testEmitPublishRelays2\", SignalTests.testEmitPublishRelays2),\n    (\"testEmitPublishRelayNoAmbiguity\", SignalTests.testEmitPublishRelayNoAmbiguity),\n    (\"testEmitReplayRelay\", SignalTests.testEmitReplayRelay),\n    (\"testEmitReplayRelays\", SignalTests.testEmitReplayRelays),\n    (\"testEmitOptionalReplayRelay1\", SignalTests.testEmitOptionalReplayRelay1),\n    (\"testEmitOptionalReplayRelays\", SignalTests.testEmitOptionalReplayRelays),\n    (\"testEmitOptionalReplayRelay2\", SignalTests.testEmitOptionalReplayRelay2),\n    (\"testEmitReplayRelays2\", SignalTests.testEmitReplayRelays2),\n    (\"testEmitReplayRelayNoAmbiguity\", SignalTests.testEmitReplayRelayNoAmbiguity),\n    (\"testEmitWithNext\", SignalTests.testEmitWithNext),\n    (\"testEmitWithError\", SignalTests.testEmitWithError),\n    (\"testEmitWithCompleted\", SignalTests.testEmitWithCompleted),\n    ] }\n}\n\nfinal class SingleTest_ : SingleTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (SingleTest_) -> () -> Void)] { return [\n    (\"testZip2_selector\", SingleTest.testZip2_selector),\n    (\"testZip2_tuple\", SingleTest.testZip2_tuple),\n    (\"testZip3_selector\", SingleTest.testZip3_selector),\n    (\"testZip3_tuple\", SingleTest.testZip3_tuple),\n    (\"testZip4_selector\", SingleTest.testZip4_selector),\n    (\"testZip4_tuple\", SingleTest.testZip4_tuple),\n    (\"testZip5_selector\", SingleTest.testZip5_selector),\n    (\"testZip5_tuple\", SingleTest.testZip5_tuple),\n    (\"testZip6_selector\", SingleTest.testZip6_selector),\n    (\"testZip6_tuple\", SingleTest.testZip6_tuple),\n    (\"testZip7_selector\", SingleTest.testZip7_selector),\n    (\"testZip7_tuple\", SingleTest.testZip7_tuple),\n    (\"testZip8_selector\", SingleTest.testZip8_selector),\n    (\"testZip8_tuple\", SingleTest.testZip8_tuple),\n    (\"testSingle_Subscription_success\", SingleTest.testSingle_Subscription_success),\n    (\"testSingle_Subscription_error\", SingleTest.testSingle_Subscription_error),\n    (\"testSingle_Subscription_onDisposed\", SingleTest.testSingle_Subscription_onDisposed),\n    (\"testSingle_Subscription_onDisposed_success\", SingleTest.testSingle_Subscription_onDisposed_success),\n    (\"testSingle_Subscription_onDisposed_error\", SingleTest.testSingle_Subscription_onDisposed_error),\n    (\"testSingle_create_success\", SingleTest.testSingle_create_success),\n    (\"testSingle_create_error\", SingleTest.testSingle_create_error),\n    (\"testSingle_create_disposing\", SingleTest.testSingle_create_disposing),\n    (\"test_just_producesElement\", SingleTest.test_just_producesElement),\n    (\"test_just2_producesElement\", SingleTest.test_just2_producesElement),\n    (\"test_error_fails\", SingleTest.test_error_fails),\n    (\"test_never_producesElement\", SingleTest.test_never_producesElement),\n    (\"test_deferred\", SingleTest.test_deferred),\n    (\"test_delay\", SingleTest.test_delay),\n    (\"test_delaySubscription\", SingleTest.test_delaySubscription),\n    (\"test_observeOn\", SingleTest.test_observeOn),\n    (\"test_subscribeOn\", SingleTest.test_subscribeOn),\n    (\"test_catchError\", SingleTest.test_catchError),\n    (\"test_catchAndReturn\", SingleTest.test_catchAndReturn),\n    (\"test_retry\", SingleTest.test_retry),\n    (\"test_retryWhen1\", SingleTest.test_retryWhen1),\n    (\"test_retryWhen2\", SingleTest.test_retryWhen2),\n    (\"test_debug\", SingleTest.test_debug),\n    (\"test_using\", SingleTest.test_using),\n    (\"test_timeout\", SingleTest.test_timeout),\n    (\"test_timeout_other\", SingleTest.test_timeout_other),\n    (\"test_timeout_succeeds\", SingleTest.test_timeout_succeeds),\n    (\"test_timeout_other_succeeds\", SingleTest.test_timeout_other_succeeds),\n    (\"test_timer\", SingleTest.test_timer),\n    (\"test_do\", SingleTest.test_do),\n    (\"test_filter\", SingleTest.test_filter),\n    (\"test_map\", SingleTest.test_map),\n    (\"test_compactMap\", SingleTest.test_compactMap),\n    (\"test_compactMapNil\", SingleTest.test_compactMapNil),\n    (\"test_flatMap\", SingleTest.test_flatMap),\n    (\"test_flatMapMaybe\", SingleTest.test_flatMapMaybe),\n    (\"test_flatMapCompletable\", SingleTest.test_flatMapCompletable),\n    (\"test_asMaybe\", SingleTest.test_asMaybe),\n    (\"test_asCompletable\", SingleTest.test_asCompletable),\n    (\"test_asCompletableError\", SingleTest.test_asCompletableError),\n    (\"test_zip_tuple\", SingleTest.test_zip_tuple),\n    (\"test_zip_resultSelector\", SingleTest.test_zip_resultSelector),\n    (\"testZipCollection_selector\", SingleTest.testZipCollection_selector),\n    (\"testZipCollection_selector_when_empty\", SingleTest.testZipCollection_selector_when_empty),\n    (\"testZipCollection_tuple\", SingleTest.testZipCollection_tuple),\n    (\"testZipCollection_tuple_when_empty\", SingleTest.testZipCollection_tuple_when_empty),\n    (\"testDefaultErrorHandler\", SingleTest.testDefaultErrorHandler),\n    ] }\n}\n\nfinal class VirtualSchedulerTest_ : VirtualSchedulerTest, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (VirtualSchedulerTest_) -> () -> Void)] { return [\n    (\"testVirtualScheduler_initialClock\", VirtualSchedulerTest.testVirtualScheduler_initialClock),\n    (\"testVirtualScheduler_start\", VirtualSchedulerTest.testVirtualScheduler_start),\n    (\"testVirtualScheduler_disposeStart\", VirtualSchedulerTest.testVirtualScheduler_disposeStart),\n    (\"testVirtualScheduler_advanceToAfter\", VirtualSchedulerTest.testVirtualScheduler_advanceToAfter),\n    (\"testVirtualScheduler_advanceToBefore\", VirtualSchedulerTest.testVirtualScheduler_advanceToBefore),\n    (\"testVirtualScheduler_disposeAdvanceTo\", VirtualSchedulerTest.testVirtualScheduler_disposeAdvanceTo),\n    (\"testVirtualScheduler_stop\", VirtualSchedulerTest.testVirtualScheduler_stop),\n    (\"testVirtualScheduler_sleep\", VirtualSchedulerTest.testVirtualScheduler_sleep),\n    (\"testVirtualScheduler_stress\", VirtualSchedulerTest.testVirtualScheduler_stress),\n    ] }\n}\n\nfinal class WithUnretainedTests_ : WithUnretainedTests, RxTestCase {\n    #if os(macOS)\n    required override init() {\n        super.init()\n    }\n    #endif\n\n    static var allTests: [(String, (WithUnretainedTests_) -> () -> Void)] { return [\n    (\"testObjectAttached\", WithUnretainedTests.testObjectAttached),\n    (\"testObjectDeallocates\", WithUnretainedTests.testObjectDeallocates),\n    (\"testObjectDeallocatesSequenceCompletes\", WithUnretainedTests.testObjectDeallocatesSequenceCompletes),\n    (\"testResultsSelector\", WithUnretainedTests.testResultsSelector),\n    ] }\n}\n#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)\n\nfunc testCase<T: RxTestCase>(_ tests: [(String, (T) -> () -> Void)]) -> () -> Void {\n    return {\n        for testCase in tests {\n            print(\"Test \\(testCase)\")\n            for test in T.allTests {\n                let testInstance = T()\n                testInstance.setUp()\n                print(\"   testing \\(test.0)\")\n                test.1(testInstance)()\n                testInstance.tearDown()\n            }\n        }\n    }\n}\n\nfunc XCTMain(_ tests: [() -> Void]) {\n    for testCase in tests {\n        testCase()\n    }\n}\n\n#endif\n\n    XCTMain([\n        testCase(AnomaliesTest_.allTests),\n        testCase(AsyncSubjectTests_.allTests),\n        testCase(AtomicTests_.allTests),\n        testCase(BehaviorSubjectTest_.allTests),\n        testCase(BinderTests_.allTests),\n        testCase(CompletableAndThenTest_.allTests),\n        testCase(CompletableTest_.allTests),\n        testCase(ConcurrentDispatchQueueSchedulerTests_.allTests),\n        testCase(CurrentThreadSchedulerTest_.allTests),\n        testCase(DisposableTest_.allTests),\n        testCase(DisposeBagTest_.allTests),\n        testCase(DriverTest_.allTests),\n        testCase(EventTests_.allTests),\n        testCase(HistoricalSchedulerTest_.allTests),\n        testCase(InfallibleCombineLatestTest_.allTests),\n        testCase(InfallibleTest_.allTests),\n        testCase(MainSchedulerTest_.allTests),\n        testCase(MaybeTest_.allTests),\n        testCase(NSNotificationCenterTests_.allTests),\n        testCase(ObservableAmbTest_.allTests),\n        testCase(ObservableBlockingTest_.allTests),\n        testCase(ObservableBufferTest_.allTests),\n        testCase(ObservableCatchTest_.allTests),\n        testCase(ObservableCombineLatestTest_.allTests),\n        testCase(ObservableCompactMapTest_.allTests),\n        testCase(ObservableConcatTest_.allTests),\n        testCase(ObservableDebugTest_.allTests),\n        testCase(ObservableDecodeTest_.allTests),\n        testCase(ObservableDefaultIfEmptyTest_.allTests),\n        testCase(ObservableDelaySubscriptionTest_.allTests),\n        testCase(ObservableDelayTest_.allTests),\n        testCase(ObservableDematerializeTest_.allTests),\n        testCase(ObservableDistinctUntilChangedTest_.allTests),\n        testCase(ObservableDoOnTest_.allTests),\n        testCase(ObservableElementAtTest_.allTests),\n        testCase(ObservableEnumeratedTest_.allTests),\n        testCase(ObservableFilterTest_.allTests),\n        testCase(ObservableGenerateTest_.allTests),\n        testCase(ObservableGroupByTest_.allTests),\n        testCase(ObservableJustTest_.allTests),\n        testCase(ObservableMapTest_.allTests),\n        testCase(ObservableMaterializeTest_.allTests),\n        testCase(ObservableMergeTest_.allTests),\n        testCase(ObservableMulticastTest_.allTests),\n        testCase(ObservableObserveOnTest_.allTests),\n        testCase(ObservableObserveOnTestConcurrentSchedulerTest_.allTests),\n        testCase(ObservableOptionalTest_.allTests),\n        testCase(ObservablePrimitiveSequenceTest_.allTests),\n        testCase(ObservableRangeTest_.allTests),\n        testCase(ObservableReduceTest_.allTests),\n        testCase(ObservableRelayBindTest_.allTests),\n        testCase(ObservableRepeatTest_.allTests),\n        testCase(ObservableRetryWhenTest_.allTests),\n        testCase(ObservableSampleTest_.allTests),\n        testCase(ObservableScanTest_.allTests),\n        testCase(ObservableSequenceTest_.allTests),\n        testCase(ObservableShareReplayScopeTests_.allTests),\n        testCase(ObservableSingleTest_.allTests),\n        testCase(ObservableSkipTest_.allTests),\n        testCase(ObservableSkipUntilTest_.allTests),\n        testCase(ObservableSkipWhileTest_.allTests),\n        testCase(ObservableSubscribeOnTest_.allTests),\n        testCase(ObservableSubscriptionTest_.allTests),\n        testCase(ObservableSubscriptionTests_.allTests),\n        testCase(ObservableSwitchIfEmptyTest_.allTests),\n        testCase(ObservableSwitchTest_.allTests),\n        testCase(ObservableTakeLastTest_.allTests),\n        testCase(ObservableTakeTest_.allTests),\n        testCase(ObservableTakeUntilTest_.allTests),\n        testCase(ObservableTakeWhileTest_.allTests),\n        testCase(ObservableTest_.allTests),\n        testCase(ObservableThrottleTest_.allTests),\n        testCase(ObservableTimeoutTest_.allTests),\n        testCase(ObservableTimerTest_.allTests),\n        testCase(ObservableToArrayTest_.allTests),\n        testCase(ObservableUsingTest_.allTests),\n        testCase(ObservableWindowTest_.allTests),\n        testCase(ObservableWithLatestFromTest_.allTests),\n        testCase(ObservableZipTest_.allTests),\n        testCase(ObserverTests_.allTests),\n        testCase(OperationQueueSchedulerTests_.allTests),\n        testCase(PublishSubjectTest_.allTests),\n        testCase(ReactiveTests_.allTests),\n        testCase(RecursiveLockTests_.allTests),\n        testCase(ReplayRelayTests_.allTests),\n        testCase(ReplaySubjectTest_.allTests),\n        testCase(SharedSequenceOperatorTests_.allTests),\n        testCase(SharingSchedulerTest_.allTests),\n        testCase(SignalTests_.allTests),\n        testCase(SingleTest_.allTests),\n        testCase(VirtualSchedulerTest_.allTests),\n        testCase(WithUnretainedTests_.allTests),\n    ])\n//}\n"
  },
  {
    "path": "Sources/RxCocoa/PrivacyInfo.xcprivacy",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSPrivacyTracking</key>\n\t<false/>\n\t<key>NSPrivacyAccessedAPITypes</key>\n\t<array/>\n\t<key>NSPrivacyCollectedDataTypes</key>\n\t<array/>\n\t<key>NSPrivacyTrackingDomains</key>\n\t<array/>\n</dict>\n</plist>"
  },
  {
    "path": "Sources/RxCocoaRuntime/PrivacyInfo.xcprivacy",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSPrivacyTracking</key>\n\t<false/>\n\t<key>NSPrivacyAccessedAPITypes</key>\n\t<array/>\n\t<key>NSPrivacyCollectedDataTypes</key>\n\t<array/>\n\t<key>NSPrivacyTrackingDomains</key>\n\t<array/>\n</dict>\n</plist>"
  },
  {
    "path": "Sources/RxCocoaRuntime/include/RxCocoaRuntime.h",
    "content": "//\n//  RxCocoaRuntime.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 2/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import \"_RX.h\"\n#import \"_RXDelegateProxy.h\"\n#import \"_RXKVOObserver.h\"\n#import \"_RXObjCRuntime.h\"\n\n//! Project version number for RxCocoa.\nFOUNDATION_EXPORT double RxCocoaVersionNumber;\n\n//! Project version string for RxCocoa.\nFOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];\n"
  },
  {
    "path": "Sources/RxCocoaRuntime/include/_RX.h",
    "content": "//\n//  _RX.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <objc/runtime.h>\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n#if        TRACE_RESOURCES >= 2\n#   define DLOG(...)         NSLog(__VA_ARGS__)\n#else\n#   define DLOG(...)\n#endif\n\n#if        DEBUG\n#   define ABORT_IN_DEBUG    abort();\n#else\n#   define ABORT_IN_DEBUG\n#endif\n\n\n#define SEL_VALUE(x)      [NSValue valueWithPointer:(x)]\n#define CLASS_VALUE(x)    [NSValue valueWithNonretainedObject:(x)]\n#define IMP_VALUE(x)      [NSValue valueWithPointer:(x)]\n\n/**\n Checks that the local `error` instance exists before assigning it's value by reference.\n This macro exists to work around static analysis warnings — `NSError` is always assumed to be `nullable`, even though we explicitly define the method parameter as `nonnull`. See http://www.openradar.me/21766176 for more details.\n */\n#define RX_THROW_ERROR(errorValue, returnValue) if (error != nil) { *error = (errorValue); } return (returnValue);\n\n#define RX_CAT2(_1, _2) _RX_CAT2(_1, _2)\n#define _RX_CAT2(_1, _2) _1 ## _2\n\n#define RX_ELEMENT_AT(n, ...) RX_CAT2(_RX_ELEMENT_AT_, n)(__VA_ARGS__)\n#define _RX_ELEMENT_AT_0(x, ...) x\n#define _RX_ELEMENT_AT_1(_0, x, ...) x\n#define _RX_ELEMENT_AT_2(_0, _1, x, ...) x\n#define _RX_ELEMENT_AT_3(_0, _1, _2, x, ...) x\n#define _RX_ELEMENT_AT_4(_0, _1, _2, _3, x, ...) x\n#define _RX_ELEMENT_AT_5(_0, _1, _2, _3, _4, x, ...) x\n#define _RX_ELEMENT_AT_6(_0, _1, _2, _3, _4, _5, x, ...) x\n\n#define RX_COUNT(...) RX_ELEMENT_AT(6, ## __VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)\n#define RX_EMPTY(...) RX_ELEMENT_AT(6, ## __VA_ARGS__, 0, 0, 0, 0, 0, 0, 1)\n\n/**\n #define SUM(context, index, head, tail) head + tail\n #define MAP(context, index, element) (context)[index] * (element)\n\n RX_FOR(numbers, SUM, MAP, b0, b1, b2);\n\n (numbers)[0] * (b0) + (numbers)[1] * (b1) + (numbers[2]) * (b2)\n */\n\n#define RX_FOREACH(context, concat, map, ...) RX_FOR_MAX(RX_COUNT(__VA_ARGS__), _RX_FOREACH_CONCAT, _RX_FOREACH_MAP, context, concat, map, __VA_ARGS__)\n#define _RX_FOREACH_CONCAT(index, head, tail, context, concat, map, ...) concat(context, index, head, tail)\n#define _RX_FOREACH_MAP(index, context, concat, map, ...) map(context, index, RX_ELEMENT_AT(index, __VA_ARGS__))\n\n/**\n #define MAP(context, index, item) (context)[index] * (item)\n\n RX_FOR_COMMA(numbers, MAP, b0, b1);\n\n ,(numbers)[0] * b0, (numbers)[1] * b1\n */\n#define RX_FOREACH_COMMA(context, map, ...) RX_CAT2(_RX_FOREACH_COMMA_EMPTY_, RX_EMPTY(__VA_ARGS__))(context, map, ## __VA_ARGS__)\n#define _RX_FOREACH_COMMA_EMPTY_1(context, map, ...)\n#define _RX_FOREACH_COMMA_EMPTY_0(context, map, ...) , RX_FOR_MAX(RX_COUNT(__VA_ARGS__), _RX_FOREACH_COMMA_CONCAT, _RX_FOREACH_COMMA_MAP, context, map, __VA_ARGS__)\n#define _RX_FOREACH_COMMA_CONCAT(index, head, tail, context, map, ...) head, tail\n#define _RX_FOREACH_COMMA_MAP(index, context, map, ...) map(context, index, RX_ELEMENT_AT(index, __VA_ARGS__))\n\n// rx for\n\n#define RX_FOR_MAX(max, concat, map, ...) RX_CAT2(RX_FOR_, max)(concat, map, ## __VA_ARGS__)\n\n#define RX_FOR_0(concat, map, ...)\n#define RX_FOR_1(concat, map, ...) map(0, __VA_ARGS__)\n#define RX_FOR_2(concat, map, ...) concat(1, RX_FOR_1(concat, map, ## __VA_ARGS__), map(1, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_3(concat, map, ...) concat(2, RX_FOR_2(concat, map, ## __VA_ARGS__), map(2, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_4(concat, map, ...) concat(3, RX_FOR_3(concat, map, ## __VA_ARGS__), map(3, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_5(concat, map, ...) concat(4, RX_FOR_4(concat, map, ## __VA_ARGS__), map(4, __VA_ARGS__), __VA_ARGS__)\n#define RX_FOR_6(concat, map, ...) concat(5, RX_FOR_5(concat, map, ## __VA_ARGS__), map(5, __VA_ARGS__), __VA_ARGS__)\n\n"
  },
  {
    "path": "Sources/RxCocoaRuntime/include/_RXDelegateProxy.h",
    "content": "//\n//  _RXDelegateProxy.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface _RXDelegateProxy : NSObject\n\n@property (nonatomic, weak, readonly) id _forwardToDelegate;\n\n-(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ;\n\n-(BOOL)hasWiredImplementationForSelector:(SEL)selector;\n-(BOOL)voidDelegateMethodsContain:(SEL)selector;\n\n-(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments;\n-(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "Sources/RxCocoaRuntime/include/_RXKVOObserver.h",
    "content": "//\n//  _RXKVOObserver.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n// Exists because if written in Swift, reading unowned is disabled during dealloc process\n@interface _RXKVOObserver : NSObject\n\n-(instancetype)initWithTarget:(id)target\n                 retainTarget:(BOOL)retainTarget\n                      keyPath:(NSString*)keyPath\n                      options:(NSKeyValueObservingOptions)options\n                     callback:(void (^)(id))callback;\n\n-(void)dispose;\n\n@end\n"
  },
  {
    "path": "Sources/RxCocoaRuntime/include/_RXObjCRuntime.h",
    "content": "//\n//  _RXObjCRuntime.h\n//  RxCocoa\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n#if !DISABLE_SWIZZLING\n\n/**\n ################################################################################\n This file is part of RX private API\n ################################################################################\n */\n\n/**\n This flag controls `RELEASE` configuration behavior in case race was detecting while modifying\n ObjC runtime.\n\n In case this value is set to `YES`, after runtime race is detected, `abort()` will be called.\n Otherwise, only error will be reported using normal error reporting mechanism.\n\n In `DEBUG` mode `abort` will be always called in case race is detected.\n \n Races can't happen in case this is the only library modifying ObjC runtime, but in case there are multiple libraries\n changing ObjC runtime, race conditions can occur because there is no way to synchronize multiple libraries unaware of\n each other.\n\n To help remedy this situation this library will use `synchronized` on target object and it's meta-class, but\n there aren't any guarantees of how other libraries will behave.\n\n Default value is `NO`.\n\n */\nextern BOOL RXAbortOnThreadingHazard;\n\n/// Error domain for RXObjCRuntime.\nextern NSString * __nonnull const RXObjCRuntimeErrorDomain;\n\n/// `userInfo` key with additional information is interceptor probably KVO.\nextern NSString * __nonnull const RXObjCRuntimeErrorIsKVOKey;\n\ntypedef NS_ENUM(NSInteger, RXObjCRuntimeError) {\n    RXObjCRuntimeErrorUnknown                                           = 1,\n    RXObjCRuntimeErrorObjectMessagesAlreadyBeingIntercepted             = 2,\n    RXObjCRuntimeErrorSelectorNotImplemented                            = 3,\n    RXObjCRuntimeErrorCantInterceptCoreFoundationTollFreeBridgedObjects = 4,\n    RXObjCRuntimeErrorThreadingCollisionWithOtherInterceptionMechanism  = 5,\n    RXObjCRuntimeErrorSavingOriginalForwardingMethodFailed              = 6,\n    RXObjCRuntimeErrorReplacingMethodWithForwardingImplementation       = 7,\n    RXObjCRuntimeErrorObservingPerformanceSensitiveMessages             = 8,\n    RXObjCRuntimeErrorObservingMessagesWithUnsupportedReturnType        = 9,\n};\n\n/// Transforms normal selector into a selector with RX prefix.\nSEL _Nonnull RX_selector(SEL _Nonnull selector);\n\n/// Transforms selector into a unique pointer (because of Swift conversion rules)\nvoid * __nonnull RX_reference_from_selector(SEL __nonnull selector);\n\n/// Protocol that interception observers must implement.\n@protocol RXMessageSentObserver\n\n/// In case the same selector is being intercepted for a pair of base/sub classes,\n/// this property will differentiate between interceptors that need to fire.\n@property (nonatomic, assign, readonly) IMP __nonnull targetImplementation;\n\n-(void)messageSentWithArguments:(NSArray* __nonnull)arguments;\n-(void)methodInvokedWithArguments:(NSArray* __nonnull)arguments;\n\n@end\n\n/// Protocol that deallocating observer must implement.\n@protocol RXDeallocatingObserver\n\n/// In case the same selector is being intercepted for a pair of base/sub classes,\n/// this property will differentiate between interceptors that need to fire.\n@property (nonatomic, assign, readonly) IMP __nonnull targetImplementation;\n\n-(void)deallocating;\n\n@end\n\n/// Ensures interceptor is installed on target object.\nIMP __nullable RX_ensure_observing(id __nonnull target, SEL __nonnull selector, NSError *__autoreleasing __nullable * __nullable error);\n\n#endif\n\n/// Extracts arguments for `invocation`.\nNSArray * __nonnull RX_extract_arguments(NSInvocation * __nonnull invocation);\n\n/// Returns `YES` in case method has `void` return type.\nBOOL RX_is_method_with_description_void(struct objc_method_description method);\n\n/// Returns `YES` in case methodSignature has `void` return type.\nBOOL RX_is_method_signature_void(NSMethodSignature * __nonnull methodSignature);\n\n/// Default value for `RXInterceptionObserver.targetImplementation`.\nIMP __nonnull RX_default_target_implementation(void);\n"
  },
  {
    "path": "Sources/RxRelay/PrivacyInfo.xcprivacy",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSPrivacyTracking</key>\n\t<false/>\n\t<key>NSPrivacyAccessedAPITypes</key>\n\t<array/>\n\t<key>NSPrivacyCollectedDataTypes</key>\n\t<array/>\n\t<key>NSPrivacyTrackingDomains</key>\n\t<array/>\n</dict>\n</plist>"
  },
  {
    "path": "Sources/RxSwift/PrivacyInfo.xcprivacy",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>NSPrivacyTracking</key>\n\t<false/>\n\t<key>NSPrivacyAccessedAPITypes</key>\n\t<array/>\n\t<key>NSPrivacyCollectedDataTypes</key>\n\t<array/>\n\t<key>NSPrivacyTrackingDomains</key>\n\t<array/>\n</dict>\n</plist>"
  },
  {
    "path": "Tests/Benchmarks/Benchmarks.swift",
    "content": "//\n//  Benchmarks.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/15/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nlet iterations = 10000\n\nclass Benchmarks: XCTestCase {\n    override func setUp() {}\n\n    override func tearDown() {}\n\n    func testPublishSubjectPumping() {\n        measure {\n            var sum = 0\n            let subject = PublishSubject<Int>()\n\n            let subscription = subject\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n            for _ in 0 ..< iterations * 100 {\n                subject.on(.next(1))\n            }\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 100)\n        }\n    }\n\n    func testPublishSubjectPumpingTwoSubscriptions() {\n        measure {\n            var sum = 0\n            let subject = PublishSubject<Int>()\n\n            let subscription1 = subject\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n            let subscription2 = subject\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n            for _ in 0 ..< iterations * 100 {\n                subject.on(.next(1))\n            }\n\n            subscription1.dispose()\n            subscription2.dispose()\n\n            XCTAssertEqual(sum, iterations * 100 * 2)\n        }\n    }\n\n    func testPublishSubjectCreating() {\n        measure {\n            var sum = 0\n\n            for _ in 0 ..< iterations * 10 {\n                let subject = PublishSubject<Int>()\n\n                let subscription = subject\n                    .subscribe(onNext: { x in\n                        sum += x\n                    })\n\n                for _ in 0 ..< 1 {\n                    subject.on(.next(1))\n                }\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testMapFilterPumping() {\n        measure {\n            var sum = 0\n            let subscription = Observable<Int>.create { observer in\n                for _ in 0 ..< iterations * 10 {\n                    observer.on(.next(1))\n                }\n                return Disposables.create()\n            }\n            .map(\\.self).filter { _ in true }\n            .map(\\.self).filter { _ in true }\n            .map(\\.self).filter { _ in true }\n            .map(\\.self).filter { _ in true }\n            .map(\\.self).filter { _ in true }\n            .map(\\.self).filter { _ in true }\n            .subscribe(onNext: { x in\n                sum += x\n            })\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testMapFilterCreating() {\n        measure {\n            var sum = 0\n\n            for _ in 0 ..< iterations {\n                let subscription = Observable<Int>.create { observer in\n                    for _ in 0 ..< 1 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations)\n        }\n    }\n\n    func testMapFilterDriverPumping() {\n        measure {\n            var sum = 0\n            let subscription = Observable<Int>.create { observer in\n                for _ in 0 ..< iterations * 10 {\n                    observer.on(.next(1))\n                }\n                return Disposables.create()\n            }.asDriver(onErrorJustReturn: -1)\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .map(\\.self).filter { _ in true }\n                .drive(onNext: { x in\n                    sum += x\n                })\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testMapFilterDriverCreating() {\n        measure {\n            var sum = 0\n\n            for _ in 0 ..< iterations {\n                let subscription = Observable<Int>.create { observer in\n                    for _ in 0 ..< 1 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }.asDriver(onErrorJustReturn: -1)\n                    .map(\\.self).filter { _ in true }\n                    .map(\\.self).filter { _ in true }\n                    .map(\\.self).filter { _ in true }\n                    .map(\\.self).filter { _ in true }\n                    .map(\\.self).filter { _ in true }\n                    .map(\\.self).filter { _ in true }\n                    .drive(onNext: { x in\n                        sum += x\n                    })\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations)\n        }\n    }\n\n    func testFlatMapsPumping() {\n        measure {\n            var sum = 0\n            let subscription = Observable<Int>.create { observer in\n                for _ in 0 ..< iterations * 10 {\n                    observer.on(.next(1))\n                }\n                return Disposables.create()\n            }\n            .flatMap { x in Observable.just(x) }\n            .flatMap { x in Observable.just(x) }\n            .flatMap { x in Observable.just(x) }\n            .flatMap { x in Observable.just(x) }\n            .flatMap { x in Observable.just(x) }\n            .subscribe(onNext: { x in\n                sum += x\n            })\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testFlatMapsCreating() {\n        measure {\n            var sum = 0\n            for _ in 0 ..< iterations {\n                let subscription = Observable<Int>.create { observer in\n                    for _ in 0 ..< 1 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }\n                .flatMap { x in Observable.just(x) }\n                .flatMap { x in Observable.just(x) }\n                .flatMap { x in Observable.just(x) }\n                .flatMap { x in Observable.just(x) }\n                .flatMap { x in Observable.just(x) }\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations)\n        }\n    }\n\n    func testFlatMapLatestPumping() {\n        measure {\n            var sum = 0\n            let subscription = Observable<Int>.create { observer in\n                for _ in 0 ..< iterations * 10 {\n                    observer.on(.next(1))\n                }\n                return Disposables.create()\n            }\n            .flatMapLatest { x in Observable.just(x) }\n            .flatMapLatest { x in Observable.just(x) }\n            .flatMapLatest { x in Observable.just(x) }\n            .flatMapLatest { x in Observable.just(x) }\n            .flatMapLatest { x in Observable.just(x) }\n            .subscribe(onNext: { x in\n                sum += x\n            })\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testFlatMapLatestCreating() {\n        measure {\n            var sum = 0\n            for _ in 0 ..< iterations {\n                let subscription = Observable<Int>.create { observer in\n                    for _ in 0 ..< 1 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }\n                .flatMapLatest { x in Observable.just(x) }\n                .flatMapLatest { x in Observable.just(x) }\n                .flatMapLatest { x in Observable.just(x) }\n                .flatMapLatest { x in Observable.just(x) }\n                .flatMapLatest { x in Observable.just(x) }\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations)\n        }\n    }\n\n    func testCombineLatestPumping() {\n        measure {\n            var sum = 0\n            var last = Observable.combineLatest(\n                Observable.just(1), Observable.just(1), Observable.just(1),\n                Observable<Int>.create { observer in\n                    for _ in 0 ..< iterations * 10 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }\n            ) { x, _, _, _ in x }\n\n            for _ in 0 ..< 6 {\n                last = Observable.combineLatest(Observable.just(1), Observable.just(1), Observable.just(1), last) { x, _, _, _ in x }\n            }\n\n            let subscription = last\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n            subscription.dispose()\n\n            XCTAssertEqual(sum, iterations * 10)\n        }\n    }\n\n    func testCombineLatestCreating() {\n        measure {\n            var sum = 0\n            for _ in 0 ..< iterations {\n                var last = Observable.combineLatest(\n                    Observable<Int>.create { observer in\n                        for _ in 0 ..< 1 {\n                            observer.on(.next(1))\n                        }\n                        return Disposables.create()\n                    }, Observable.just(1), Observable.just(1), Observable.just(1)\n                ) { x, _, _, _ in x }\n\n                for _ in 0 ..< 6 {\n                    last = Observable.combineLatest(last, Observable.just(1), Observable.just(1), Observable.just(1)) { x, _, _, _ in x }\n                }\n\n                let subscription = last\n                    .subscribe(onNext: { x in\n                        sum += x\n                    })\n\n                subscription.dispose()\n            }\n\n            XCTAssertEqual(sum, iterations)\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/Benchmarks/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/MessageProcessingStage.swift",
    "content": "//\n//  MessageProcessingStage.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/2/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nenum MessageProcessingStage: Int {\n    // message is first sent to an objet\n    case sentMessage = 0\n    // ... then it's being invoked\n    case invoking = 1\n    // ... and after method is invoked\n    case methodInvoked = 2\n}\n\ntypealias MethodParameters = [Any]\n\nstruct ObservedSequence {\n    let stage: MessageProcessingStage\n    let sequence: Observable<MethodParameters>\n\n    static func sentMessage(_ sequence: Observable<MethodParameters>) -> ObservedSequence {\n        ObservedSequence(stage: .sentMessage, sequence: sequence)\n    }\n\n    static func invoking(_ sequence: Observable<MethodParameters>) -> ObservedSequence {\n        ObservedSequence(stage: .invoking, sequence: sequence)\n    }\n\n    static func methodInvoked(_ sequence: Observable<MethodParameters>) -> ObservedSequence {\n        ObservedSequence(stage: .methodInvoked, sequence: sequence)\n    }\n}\n"
  },
  {
    "path": "Tests/Microoptimizations/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIconFile</key>\n\t<string></string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSMinimumSystemVersion</key>\n\t<string>$(MACOSX_DEPLOYMENT_TARGET)</string>\n\t<key>NSMainNibFile</key>\n\t<string>MainMenu</string>\n\t<key>NSPrincipalClass</key>\n\t<string>NSApplication</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Tests/Microoptimizations/PerformanceTools.swift",
    "content": "//\n//  PerformanceTools.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n#if os(Linux)\nimport Dispatch\n#endif\n\nprivate var mallocFunctions: [@convention(c) (UnsafeMutablePointer<_malloc_zone_t>?, Int) -> UnsafeMutableRawPointer?] = []\n\nprivate var allocCalls: Int64 = 0\nprivate var bytesAllocated: Int64 = 0\n\nfunc call0(_ p: UnsafeMutablePointer<_malloc_zone_t>?, size: Int) -> UnsafeMutableRawPointer? {\n    OSAtomicIncrement64Barrier(&allocCalls)\n    OSAtomicAdd64Barrier(Int64(size), &bytesAllocated)\n    #if ALLOC_HOOK\n    allocation()\n    #endif\n    return mallocFunctions[0](p, size)\n}\n\nfunc call1(_ p: UnsafeMutablePointer<_malloc_zone_t>?, size: Int) -> UnsafeMutableRawPointer? {\n    OSAtomicIncrement64Barrier(&allocCalls)\n    OSAtomicAdd64Barrier(Int64(size), &bytesAllocated)\n    #if ALLOC_HOOK\n    allocation()\n    #endif\n    return mallocFunctions[1](p, size)\n}\n\nfunc call2(_ p: UnsafeMutablePointer<_malloc_zone_t>?, size: Int) -> UnsafeMutableRawPointer? {\n    OSAtomicIncrement64Barrier(&allocCalls)\n    OSAtomicAdd64Barrier(Int64(size), &bytesAllocated)\n    #if ALLOC_HOOK\n    allocation()\n    #endif\n    return mallocFunctions[2](p, size)\n}\n\nvar proxies: [@convention(c) (UnsafeMutablePointer<_malloc_zone_t>?, Int) -> UnsafeMutableRawPointer?] = [call0, call1, call2]\n\nfunc getMemoryInfo() -> (bytes: Int64, allocations: Int64) {\n    (bytesAllocated, allocCalls)\n}\n\nprivate var registeredMallocHooks = false\n\nfunc registerMallocHooks() {\n    if registeredMallocHooks {\n        return\n    }\n\n    registeredMallocHooks = true\n\n    var _zones: UnsafeMutablePointer<vm_address_t>?\n    var count: UInt32 = 0\n\n    // malloc_zone_print(nil, 1)\n    let res = malloc_get_all_zones(mach_task_self_, nil, &_zones, &count)\n    assert(res == 0)\n\n    _zones?.withMemoryRebound(to: UnsafeMutablePointer<malloc_zone_t>.self, capacity: Int(count)) { zones in\n        assert(Int(count) <= proxies.count)\n\n        for i in 0 ..< Int(count) {\n            let zoneArray = zones.advanced(by: i)\n            let name = malloc_get_zone_name(zoneArray.pointee)\n            var zone = zoneArray.pointee.pointee\n\n            // print(String.fromCString(name))\n\n            assert(name != nil)\n            mallocFunctions.append(zone.malloc)\n            zone.malloc = proxies[i]\n\n            let protectSize = vm_size_t(MemoryLayout<malloc_zone_t>.size) * vm_size_t(count)\n\n            if true {\n                zoneArray.withMemoryRebound(to: vm_address_t.self, capacity: Int(protectSize)) { addressPointer in\n                    let res = vm_protect(mach_task_self_, addressPointer.pointee, protectSize, 0, PROT_READ | PROT_WRITE)\n                    assert(res == 0)\n                }\n            }\n\n            zoneArray.pointee.pointee = zone\n\n            if true {\n                let res = vm_protect(mach_task_self_, _zones!.pointee, protectSize, 0, PROT_READ)\n                assert(res == 0)\n            }\n        }\n    }\n}\n\n// MARK: Benchmark tools\n\nlet NumberOfIterations = 10000\n\nfinal class A {\n    let _0 = 0\n    let _1 = 0\n    let _2 = 0\n    let _3 = 0\n    let _4 = 0\n    let _5 = 0\n    let _6 = 0\n}\n\nfinal class B {\n    var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]\n}\n\nlet numberOfObjects = 1_000_000\nlet aliveAtTheEnd = numberOfObjects / 10\n\nprivate var objects: [AnyObject] = []\n\nfunc fragmentMemory() {\n    objects = [AnyObject](repeating: A(), count: aliveAtTheEnd)\n    for _ in 0 ..< numberOfObjects {\n        objects[Int(arc4random_uniform(UInt32(aliveAtTheEnd)))] = arc4random_uniform(2) == 0 ? A() : B()\n    }\n}\n\nfunc approxValuePerIteration(_ total: Int64) -> UInt64 {\n    UInt64(round(Double(total) / Double(NumberOfIterations)))\n}\n\nfunc approxValuePerIteration(_ total: UInt64) -> UInt64 {\n    UInt64(round(Double(total) / Double(NumberOfIterations)))\n}\n\nfunc measureTime(_ work: () -> Void) -> UInt64 {\n    var timebaseInfo = mach_timebase_info()\n    let res = mach_timebase_info(&timebaseInfo)\n\n    assert(res == 0)\n\n    let start = mach_absolute_time()\n    for _ in 0 ..< NumberOfIterations {\n        work()\n    }\n    let timeInNano = (mach_absolute_time() - start) * UInt64(timebaseInfo.numer) / UInt64(timebaseInfo.denom)\n\n    return approxValuePerIteration(timeInNano) / 1000\n}\n\nfunc measureMemoryUsage(work: () -> Void) -> (bytesAllocated: UInt64, allocations: UInt64) {\n    let (bytes, allocations) = getMemoryInfo()\n    for _ in 0 ..< NumberOfIterations {\n        work()\n    }\n    let (bytesAfter, allocationsAfter) = getMemoryInfo()\n\n    return (approxValuePerIteration(bytesAfter - bytes), approxValuePerIteration(allocationsAfter - allocations))\n}\n\nprivate var fragmentedMemory = false\n\nfunc compareTwoImplementations(benchmarkTime: Bool, benchmarkMemory: Bool, first: () -> Void, second: () -> Void) {\n    if !fragmentedMemory {\n        print(\"Fragmenting memory ...\")\n        fragmentMemory()\n        print(\"Benchmarking ...\")\n        fragmentedMemory = true\n    }\n\n    // first warm up to keep it fair\n\n    let time1: UInt64\n    let time2: UInt64\n\n    if benchmarkTime {\n        first()\n        second()\n\n        time1 = measureTime(first)\n        time2 = measureTime(second)\n    } else {\n        time1 = 0\n        time2 = 0\n    }\n\n    let memory1: (bytesAllocated: UInt64, allocations: UInt64)\n    let memory2: (bytesAllocated: UInt64, allocations: UInt64)\n    if benchmarkMemory {\n        registerMallocHooks()\n\n        first()\n        second()\n\n        memory1 = measureMemoryUsage(work: first)\n        memory2 = measureMemoryUsage(work: second)\n    } else {\n        memory1 = (0, 0)\n        memory2 = (0, 0)\n    }\n    // this is good enough\n    print(String(format: \"#1 implementation %8d bytes %4d allocations %5d useconds\", arguments: [\n        memory1.bytesAllocated,\n        memory1.allocations,\n        time1\n    ]))\n    print(String(format: \"#2 implementation %8d bytes %4d allocations %5d useconds\", arguments: [\n        memory2.bytesAllocated,\n        memory2.allocations,\n        time2\n    ]))\n}\n"
  },
  {
    "path": "Tests/Microoptimizations/main.swift",
    "content": "//\n//  main.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/26/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n#if !SWIFT_PACKAGE\nimport RxCocoa\n#endif\nimport AppKit\nimport CoreLocation\n\nlet bechmarkTime = true\n\nfunc allocation() {}\n\nlet iterations = 100_000\n\nrepeat {\n    compareTwoImplementations(benchmarkTime: true, benchmarkMemory: false, first: {\n        var sum = 0\n        for _ in 0 ..< iterations {\n            var last = Observable.combineLatest(\n                Observable<Int>.create { observer in\n                    for _ in 0 ..< 1 {\n                        observer.on(.next(1))\n                    }\n                    return Disposables.create()\n                }, Observable.just(1), Observable.just(1), Observable.just(1)\n            ) { x, _, _, _ in x }\n\n            for _ in 0 ..< 2 {\n                last = Observable.combineLatest(last, Observable.just(1), Observable.just(1), Observable.just(1)) { x, _, _, _ in x }\n            }\n\n            let subscription = last\n                .subscribe(onNext: { x in\n                    sum += x\n                })\n\n            subscription.dispose()\n        }\n\n    }, second: {})\n} while true\n"
  },
  {
    "path": "Tests/Recorded+Timeless.swift",
    "content": "//\n//  Recorded+Timeless.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\n\nextension Recorded {\n    static func next<T>(_ element: T) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: 0, value: .next(element))\n    }\n\n    static func completed<T>(_: T.Type = T.self) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: 0, value: .completed)\n    }\n\n    static func error<T>(_ error: Swift.Error, _: T.Type = T.self) -> Recorded<Event<T>> where Value == Event<T> {\n        Recorded(time: 0, value: .error(error))\n    }\n}\n"
  },
  {
    "path": "Tests/Resources.swift",
    "content": "//\n//  Resources.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/21/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\n#if TRACE_RESOURCES\nenum Resources {\n    static func incrementTotal() -> Int32 {\n        RxSwift.Resources.incrementTotal()\n    }\n\n    static func decrementTotal() -> Int32 {\n        RxSwift.Resources.decrementTotal()\n    }\n\n    static var numberOfSerialDispatchQueueObservables: Int32 {\n        RxSwift.Resources.numberOfSerialDispatchQueueObservables\n    }\n\n    static var total: Int32 {\n        RxSwift.Resources.total\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxBlockingTests/Observable+BlockingTest.swift",
    "content": "//\n//  Observable+BlockingTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxBlocking\nimport RxSwift\nimport XCTest\n\nclass ObservableBlockingTest: RxTest {}\n\n// toArray\n\nextension ObservableBlockingTest {\n    func testToArray_empty() {\n        XCTAssertEqual(try Observable<Int>.empty().toBlocking().toArray(), [])\n    }\n\n    func testToArray_return() {\n        XCTAssertEqual(try Observable.just(42).toBlocking().toArray(), [42])\n    }\n\n    func testToArray_fail() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.error(testError).toBlocking().toArray(), testError)\n    }\n\n    func testToArray_someData() {\n        XCTAssertEqual(try Observable.of(42, 43, 44, 45).toBlocking().toArray(), [42, 43, 44, 45])\n    }\n\n    func testToArray_withRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let array = try! Observable<Int64>.interval(.milliseconds(1), scheduler: scheduler)\n            .take(10)\n            .toBlocking()\n            .toArray()\n\n        XCTAssertEqual(array, Array(0 ..< 10))\n    }\n\n    func testToArray_independent() {\n        for _ in 0 ..< 10 {\n            let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n            func operation1() -> Observable<Int> {\n                Observable.of(1, 2).subscribe(on: scheduler)\n            }\n\n            let a = try! operation1().toBlocking().toArray()\n            let b = try! operation1().toBlocking().toArray()\n            let c = try! operation1().toBlocking().toArray()\n            let d = try! operation1().toBlocking().toArray()\n\n            XCTAssertEqual(a, [1, 2])\n            XCTAssertEqual(b, [1, 2])\n            XCTAssertEqual(c, [1, 2])\n            XCTAssertEqual(d, [1, 2])\n        }\n    }\n\n    func testToArray_timeout() {\n        XCTAssertThrowsError(try Observable<Int>.never().toBlocking(timeout: 0.01).toArray()) { error in\n            XCTAssertErrorEqual(error, RxError.timeout)\n        }\n    }\n}\n\n// first\n\nextension ObservableBlockingTest {\n    func testFirst_empty() {\n        XCTAssertNil(try Observable<Int>.empty().toBlocking().first())\n    }\n\n    func testFirst_return() {\n        XCTAssertEqual(try Observable.just(42).toBlocking().first(), 42)\n    }\n\n    func testFirst_fail() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.error(testError).toBlocking().first(), testError)\n    }\n\n    func testFirst_someData() {\n        XCTAssertEqual(try Observable.of(42, 43, 44, 45).toBlocking().first(), 42)\n    }\n\n    func testFirst_withRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let element = try! Observable<Int64>.interval(.milliseconds(1), scheduler: scheduler)\n            .take(10)\n            .toBlocking()\n            .first()\n\n        XCTAssertEqual(element, 0)\n    }\n\n    func testFirst_independent() {\n        for _ in 0 ..< 10 {\n            let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n            func operation1() -> Observable<Int> {\n                Observable.just(1).subscribe(on: scheduler)\n            }\n\n            let a = try! operation1().toBlocking().first()\n            let b = try! operation1().toBlocking().first()\n            let c = try! operation1().toBlocking().first()\n            let d = try! operation1().toBlocking().first()\n\n            XCTAssertEqual(a, 1)\n            XCTAssertEqual(b, 1)\n            XCTAssertEqual(c, 1)\n            XCTAssertEqual(d, 1)\n        }\n    }\n\n    func testFirst_timeout() {\n        XCTAssertThrowsError(try Observable<Int>.never().toBlocking(timeout: 0.01).first()) { error in\n            XCTAssertErrorEqual(error, RxError.timeout)\n        }\n    }\n}\n\n// last\n\nextension ObservableBlockingTest {\n    func testLast_empty() {\n        XCTAssertNil(try Observable<Int>.empty().toBlocking().last())\n    }\n\n    func testLast_return() {\n        XCTAssertEqual(try Observable.just(42).toBlocking().last(), 42)\n    }\n\n    func testLast_fail() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.error(testError).toBlocking().last(), testError)\n    }\n\n    func testLast_someData() {\n        XCTAssertEqual(try Observable.of(42, 43, 44, 45).toBlocking().last(), 45)\n    }\n\n    func testLast_withRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let element = try! Observable<Int64>.interval(.milliseconds(1), scheduler: scheduler)\n            .take(10)\n            .toBlocking()\n            .last()\n\n        XCTAssertEqual(element, 9)\n    }\n\n    func testLast_independent() {\n        for _ in 0 ..< 10 {\n            let scheduler = ConcurrentDispatchQueueScheduler(qos: .background)\n\n            func operation1() -> Observable<Int> {\n                Observable.just(1).subscribe(on: scheduler)\n            }\n\n            let a = try! operation1().toBlocking().last()\n            let b = try! operation1().toBlocking().last()\n            let c = try! operation1().toBlocking().last()\n            let d = try! operation1().toBlocking().last()\n\n            XCTAssertEqual(a, 1)\n            XCTAssertEqual(b, 1)\n            XCTAssertEqual(c, 1)\n            XCTAssertEqual(d, 1)\n        }\n    }\n\n    func testLast_timeout() {\n        XCTAssertThrowsError(try Observable<Int>.never().toBlocking(timeout: 0.01).last()) { error in\n            XCTAssertErrorEqual(error, RxError.timeout)\n        }\n    }\n}\n\n// single\n\nextension ObservableBlockingTest {\n    func testSingle_empty() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.empty().toBlocking().single(), RxError.noElements)\n    }\n\n    func testSingle_return() {\n        XCTAssertEqual(try Observable.just(42).toBlocking().single(), 42)\n    }\n\n    func testSingle_two() {\n        XCTAssertThrowsErrorEqual(try Observable.of(42, 43).toBlocking().single(), RxError.moreThanOneElement)\n    }\n\n    func testSingle_someData() {\n        XCTAssertThrowsErrorEqual(try Observable.of(42, 43, 44, 45).toBlocking().single(), RxError.moreThanOneElement)\n    }\n\n    func testSingle_fail() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.error(testError).toBlocking().single(), testError)\n    }\n\n    func testSingle_withRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let element = try! Observable<Int64>.interval(.milliseconds(1), scheduler: scheduler)\n            .take(1)\n            .toBlocking()\n            .single()\n\n        XCTAssertEqual(element, 0)\n    }\n\n    func testSingle_predicate_empty() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.empty().toBlocking().single { _ in true }, RxError.noElements)\n    }\n\n    func testSingle_predicate_return() {\n        XCTAssertEqual(try Observable.just(42).toBlocking().single { _ in true }, 42)\n    }\n\n    func testSingle_predicate_someData_one_match() {\n        var predicateVals = [Int]()\n        do {\n            let element = try Observable.of(42, 43, 44, 45).toBlocking().single { e in\n                predicateVals.append(e)\n                return e == 44\n            }\n            XCTAssertEqual(element, 44)\n        } catch _ {\n            XCTFail()\n        }\n        XCTAssertEqual(predicateVals, [42, 43, 44, 45])\n    }\n\n    func testSingle_predicate_someData_two_match() {\n        var predicateVals = [Int]()\n        do {\n            _ = try Observable.of(42, 43, 44, 45).toBlocking().single { e in\n                predicateVals.append(e)\n                return e >= 43\n            }\n            XCTFail()\n        } catch let e {\n            XCTAssertErrorEqual(e, RxError.moreThanOneElement)\n        }\n        XCTAssertEqual(predicateVals, [42, 43, 44])\n    }\n\n    func testSingle_predicate_none() {\n        var predicateVals = [Int]()\n        do {\n            _ = try Observable.of(42, 43, 44, 45).toBlocking().single { e in\n                predicateVals.append(e)\n                return e > 50\n            }\n            XCTFail()\n        } catch let e {\n            XCTAssertErrorEqual(e, RxError.noElements)\n        }\n        XCTAssertEqual(predicateVals, [42, 43, 44, 45])\n    }\n\n    func testSingle_predicate_throws() {\n        var predicateVals = [Int]()\n        do {\n            _ = try Observable.of(42, 43, 44, 45, scheduler: CurrentThreadScheduler.instance).toBlocking().single { e in\n                predicateVals.append(e)\n                if e < 43 { return false }\n                throw testError\n            }\n            XCTFail()\n        } catch let e {\n            XCTAssertErrorEqual(e, testError)\n        }\n        XCTAssertEqual(predicateVals, [42, 43])\n    }\n\n    func testSingle_predicate_fail() {\n        XCTAssertThrowsErrorEqual(try Observable<Int>.error(testError).toBlocking().single { _ in true }, testError)\n    }\n\n    func testSingle_predicate_withRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let element = try! Observable<Int64>.interval(.milliseconds(1), scheduler: scheduler)\n            .take(4)\n            .toBlocking()\n            .single { $0 == 3 }\n\n        XCTAssertEqual(element, 3)\n    }\n\n    func testSingle_independent() {\n        for _ in 0 ..< 10 {\n            let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n            func operation1() -> Observable<Int> {\n                Observable.just(1).subscribe(on: scheduler)\n            }\n\n            let a = try! operation1().toBlocking().single()\n            let b = try! operation1().toBlocking().single()\n            let c = try! operation1().toBlocking().single()\n            let d = try! operation1().toBlocking().single()\n\n            XCTAssertEqual(a, 1)\n            XCTAssertEqual(b, 1)\n            XCTAssertEqual(c, 1)\n            XCTAssertEqual(d, 1)\n        }\n    }\n\n    func testSingle_timeout() {\n        XCTAssertThrowsError(try Observable<Int>.never().toBlocking(timeout: 0.01).single()) { error in\n            XCTAssertErrorEqual(error, RxError.timeout)\n        }\n    }\n\n    func testSinglePredicate_timeout() {\n        XCTAssertThrowsError(try Observable<Int>.never().toBlocking(timeout: 0.01).single { _ in true }) { error in\n            XCTAssertErrorEqual(error, RxError.timeout)\n        }\n    }\n}\n\n// materialize\n\nextension ObservableBlockingTest {\n    func testMaterialize_empty() {\n        let result = Observable<Int>.empty().toBlocking().materialize()\n\n        switch result {\n        case let .completed(elements):\n            XCTAssertEqual(elements, [])\n        case .failed:\n            XCTFail(\"Expected result to be complete successfully, but result was failed.\")\n        }\n    }\n\n    func testMaterialize_empty_fail() {\n        let result = Observable<Int>.error(testError).toBlocking().materialize()\n\n        switch result {\n        case .completed:\n            XCTFail(\"Expected result to be complete with error, but result was successful.\")\n        case let .failed(elements, error):\n            XCTAssertEqual(elements, [])\n            XCTAssertErrorEqual(error, testError)\n        }\n    }\n\n    func testMaterialize_someData() {\n        let result = Observable.of(42, 43, 44, 45).toBlocking().materialize()\n\n        switch result {\n        case let .completed(elements):\n            XCTAssertEqual(elements, [42, 43, 44, 45])\n        case .failed:\n            XCTFail(\"Expected result to be complete successfully, but result was failed.\")\n        }\n    }\n\n    func testMaterialize_someData_fail() {\n        let sequence = Observable.concat(Observable.of(42, 43, 44, 45), Observable<Int>.error(testError))\n        let result = sequence.toBlocking().materialize()\n\n        switch result {\n        case .completed:\n            XCTFail(\"Expected result to be complete with error, but result was successful.\")\n        case let .failed(elements, error):\n            XCTAssertEqual(elements, [42, 43, 44, 45])\n            XCTAssertErrorEqual(error, testError)\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/ControlEventTests.swift",
    "content": "//\n//  ControlEventTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class ControlEventTests: RxTest {\n    func testObservingIsAlwaysHappeningOnMainQueue() {\n        let hotObservable = MainThreadPrimitiveHotObservable<Int>()\n\n        var observedOnMainQueue = false\n\n        let expectSubscribeOffMainQueue = expectation(description: \"Did subscribe off main thread\")\n\n        let controlProperty = ControlEvent(events: Observable.deferred { () -> Observable<Int> in\n            XCTAssertTrue(DispatchQueue.isMain)\n            observedOnMainQueue = true\n            return hotObservable.asObservable()\n        })\n\n        doOnBackgroundQueue {\n            let d = controlProperty.asObservable().subscribe { _ in\n            }\n            let d2 = controlProperty.subscribe { _ in\n            }\n            doOnMainQueue {\n                d.dispose()\n                d2.dispose()\n                expectSubscribeOffMainQueue.fulfill()\n            }\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertTrue(observedOnMainQueue)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/ControlPropertyTests.swift",
    "content": "//\n//  ControlPropertyTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class ControlPropertyTests: RxTest {}\n\nextension ControlPropertyTests {\n    func testObservingIsAlwaysHappeningOnMainQueue() {\n        let hotObservable = MainThreadPrimitiveHotObservable<Int>()\n\n        var observedOnMainQueue = false\n\n        let expectSubscribeOffMainQueue = expectation(description: \"Did subscribe off main thread\")\n\n        let controlProperty = ControlProperty(values: Observable.deferred { () -> Observable<Int> in\n            XCTAssertTrue(DispatchQueue.isMain)\n            observedOnMainQueue = true\n            return hotObservable.asObservable()\n        }, valueSink: AnyObserver { _ in\n        })\n\n        doOnBackgroundQueue {\n            let d = controlProperty.asObservable().subscribe { _ in\n            }\n            let d2 = controlProperty.subscribe { _ in\n            }\n            doOnMainQueue {\n                d.dispose()\n                d2.dispose()\n                expectSubscribeOffMainQueue.fulfill()\n            }\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertTrue(observedOnMainQueue)\n    }\n}\n\nextension ControlPropertyTests {\n    func testOrEmpty() {\n        let bindingObserver = PrimitiveMockObserver<String?>()\n        let controlProperty = ControlProperty<String?>(values: Observable.just(nil), valueSink: bindingObserver.asObserver())\n\n        let orEmpty = controlProperty.orEmpty\n\n        let finalObserver = PrimitiveMockObserver<String>()\n        _ = orEmpty.subscribe(finalObserver)\n        orEmpty.on(.next(\"a\"))\n\n        let bindingEvents: [Event<String>] = bindingObserver.events.map { $0.value.map { $0 ?? \"\" } }\n        let observingEvents: [Event<String>] = finalObserver.events.map { $0.value.map(\\.self) }\n        XCTAssertArraysEqual(bindingEvents, [Event<String>.next(\"a\")], ==)\n        XCTAssertArraysEqual(observingEvents, [Event<String>.next(\"\"), Event<String>.completed], ==)\n    }\n\n    func testChanged() {\n        let behaviorSubject = BehaviorSubject(value: 0)\n\n        let controlProperty = ControlProperty(values: behaviorSubject.asObserver(), valueSink: AnyObserver { _ in })\n\n        let controlEvent = controlProperty.changed\n        let changedObserver = PrimitiveMockObserver<Int>()\n        let subscription = controlEvent.subscribe(changedObserver)\n\n        XCTAssertEqual(changedObserver.events, [])\n\n        behaviorSubject.on(.next(1))\n\n        XCTAssertEqual(changedObserver.events, [.next(1)])\n\n        subscription.dispose()\n\n        behaviorSubject.on(.next(2))\n\n        XCTAssertEqual(changedObserver.events, [.next(1)])\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/DelegateProxyTest+Cocoa.swift",
    "content": "//\n//  DelegateProxyTest+Cocoa.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Cocoa\n@testable import RxCocoa\n@testable import RxSwift\nimport XCTest\n\n// MARK: Tests\n\nextension DelegateProxyTest {\n    func test_NSTextFieldDelegateExtension() {\n        performDelegateTest(NSTextFieldSubclass(frame: CGRect.zero)) { ExtendNSTextFieldDelegateProxy(textFieldSubclass: $0) }\n    }\n}\n\n// MARK: Mocks\n\nclass ExtendNSTextFieldDelegateProxy:\n    RxTextFieldDelegateProxy,\n    TestDelegateProtocol\n{\n    init(textFieldSubclass: NSTextFieldSubclass) {\n        super.init(textField: textFieldSubclass)\n    }\n}\n\nfinal class NSTextFieldSubclass:\n    NSTextField,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<NSTextField, NSTextFieldDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: NSTextFieldDelegate) -> Disposable {\n        RxTextFieldDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/DelegateProxyTest+UIKit.swift",
    "content": "//\n//  DelegateProxyTest+UIKit.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n@testable import RxCocoa\n@testable import RxSwift\nimport UIKit\nimport XCTest\n\n// MARK: Tests\n\nextension DelegateProxyTest {\n    func test_UITableViewDelegateExtension() {\n        performDelegateTest(UITableViewSubclass1(frame: CGRect.zero)) { ExtendTableViewDelegateProxy(tableViewSubclass: $0) }\n    }\n\n    func test_UITableViewDataSourceExtension() {\n        performDelegateTest(UITableViewSubclass2(frame: CGRect.zero)) { ExtendTableViewDataSourceProxy(tableViewSubclass: $0) }\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_UITableViewDataSourcePrefetchingExtension() {\n        performDelegateTest(UITableViewSubclass3(frame: CGRect.zero)) { ExtendTableViewDataSourcePrefetchingProxy(parentObject: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    func test_UICollectionViewDelegateExtension() {\n        let layout = UICollectionViewFlowLayout()\n        performDelegateTest(UICollectionViewSubclass1(frame: CGRect.zero, collectionViewLayout: layout)) { ExtendCollectionViewDelegateProxy(parentObject: $0) }\n    }\n\n    func test_UICollectionViewDataSourceExtension() {\n        let layout = UICollectionViewFlowLayout()\n        performDelegateTest(UICollectionViewSubclass2(frame: CGRect.zero, collectionViewLayout: layout)) { ExtendCollectionViewDataSourceProxy(parentObject: $0) }\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_UICollectionViewDataSourcePrefetchingExtension() {\n        let layout = UICollectionViewFlowLayout()\n        performDelegateTest(UICollectionViewSubclass3(frame: CGRect.zero, collectionViewLayout: layout)) { ExtendCollectionViewDataSourcePrefetchingProxy(parentObject: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    func test_UINavigationControllerDelegateExtension() {\n        performDelegateTest(UINavigationControllerSubclass()) { ExtendNavigationControllerDelegateProxy(navigationControllerSubclass: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    func test_UIScrollViewDelegateExtension() {\n        performDelegateTest(UIScrollViewSubclass(frame: CGRect.zero)) { ExtendScrollViewDelegateProxy(scrollViewSubclass: $0) }\n    }\n}\n\n#if os(iOS)\nextension DelegateProxyTest {\n    func test_UISearchBarDelegateExtension() {\n        performDelegateTest(UISearchBarSubclass(frame: CGRect.zero)) { ExtendSearchBarDelegateProxy(searchBarSubclass: $0) }\n    }\n}\n#endif\n\nextension DelegateProxyTest {\n    func test_UITextViewDelegateExtension() {\n        performDelegateTest(UITextViewSubclass(frame: CGRect.zero)) { ExtendTextViewDelegateProxy(textViewSubclass: $0) }\n    }\n}\n\n#if os(iOS)\nextension DelegateProxyTest {\n    func test_UISearchController() {\n        performDelegateTest(UISearchControllerSubclass()) { ExtendSearchControllerDelegateProxy(searchControllerSubclass: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    func test_UIPickerViewExtension() {\n        performDelegateTest(UIPickerViewSubclass(frame: CGRect.zero)) { ExtendPickerViewDelegateProxy(pickerViewSubclass: $0) }\n    }\n\n    func test_UIPickerViewDataSourceExtension() {\n        performDelegateTest(UIPickerViewSubclass2(frame: CGRect.zero)) { ExtendPickerViewDataSourceProxy(pickerViewSubclass: $0) }\n    }\n}\n#endif\n\nextension DelegateProxyTest {\n    func test_UITabBarControllerDelegateExtension() {\n        performDelegateTest(UITabBarControllerSubclass()) { ExtendTabBarControllerDelegateProxy(tabBarControllerSubclass: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    func test_UITabBarDelegateExtension() {\n        performDelegateTest(UITabBarSubclass()) { ExtendTabBarDelegateProxy(tabBarSubclass: $0) }\n    }\n}\n\nextension DelegateProxyTest {\n    /* something is wrong with subclassing mechanism.\n     func test_NSTextStorageDelegateExtension() {\n         performDelegateTest(NSTextStorageSubclass(attributedString: NSAttributedString()))\n     }*/\n}\n\n// MARK: Mocks\n\nfinal class ExtendTableViewDelegateProxy:\n    RxTableViewDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UITableViewSubclass1?\n\n    init(tableViewSubclass: UITableViewSubclass1) {\n        control = tableViewSubclass\n        super.init(tableView: tableViewSubclass)\n    }\n}\n\nfinal class UITableViewSubclass1:\n    UITableView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UIScrollView, UIScrollViewDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIScrollViewDelegate) -> Disposable {\n        RxScrollViewDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendTableViewDataSourceProxy:\n    RxTableViewDataSourceProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UITableViewSubclass2?\n\n    init(tableViewSubclass: UITableViewSubclass2) {\n        control = tableViewSubclass\n        super.init(tableView: tableViewSubclass)\n    }\n}\n\nfinal class UITableViewSubclass2:\n    UITableView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        if dataSource != nil {\n            (dataSource as! TestDelegateProtocol).testEventHappened?(value)\n        }\n    }\n\n    var delegateProxy: DelegateProxy<UITableView, UITableViewDataSource> {\n        rx.dataSource\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UITableViewDataSource) -> Disposable {\n        RxTableViewDataSourceProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nfinal class ExtendTableViewDataSourcePrefetchingProxy:\n    RxTableViewDataSourcePrefetchingProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UITableViewSubclass3?\n\n    init(parentObject: UITableViewSubclass3) {\n        control = parentObject\n        super.init(tableView: parentObject)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nfinal class UITableViewSubclass3:\n    UITableView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        if prefetchDataSource != nil {\n            (prefetchDataSource as! TestDelegateProtocol).testEventHappened?(value)\n        }\n    }\n\n    var delegateProxy: DelegateProxy<UITableView, UITableViewDataSourcePrefetching> {\n        rx.prefetchDataSource\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UITableViewDataSourcePrefetching) -> Disposable {\n        RxTableViewDataSourcePrefetchingProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendCollectionViewDelegateProxy:\n    RxCollectionViewDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UICollectionViewSubclass1?\n\n    init(parentObject: UICollectionViewSubclass1) {\n        control = parentObject\n        super.init(collectionView: parentObject)\n    }\n}\n\nfinal class UICollectionViewSubclass1:\n    UICollectionView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UIScrollView, UIScrollViewDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIScrollViewDelegate) -> Disposable {\n        RxScrollViewDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendCollectionViewDataSourceProxy:\n    RxCollectionViewDataSourceProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UICollectionViewSubclass2?\n\n    init(parentObject: UICollectionViewSubclass2) {\n        control = parentObject\n        super.init(collectionView: parentObject)\n    }\n}\n\nfinal class UICollectionViewSubclass2:\n    UICollectionView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        if dataSource != nil {\n            (dataSource as! TestDelegateProtocol).testEventHappened?(value)\n        }\n    }\n\n    var delegateProxy: DelegateProxy<UICollectionView, UICollectionViewDataSource> {\n        rx.dataSource\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UICollectionViewDataSource) -> Disposable {\n        RxCollectionViewDataSourceProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nfinal class ExtendCollectionViewDataSourcePrefetchingProxy:\n    RxCollectionViewDataSourcePrefetchingProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UICollectionViewSubclass3?\n\n    init(parentObject: UICollectionViewSubclass3) {\n        control = parentObject\n        super.init(collectionView: parentObject)\n    }\n}\n\n@available(iOS 10.0, tvOS 10.0, *)\nfinal class UICollectionViewSubclass3:\n    UICollectionView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        if prefetchDataSource != nil {\n            (prefetchDataSource as! TestDelegateProtocol).testEventHappened?(value)\n        }\n    }\n\n    var delegateProxy: DelegateProxy<UICollectionView, UICollectionViewDataSourcePrefetching> {\n        rx.prefetchDataSource\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UICollectionViewDataSourcePrefetching) -> Disposable {\n        RxCollectionViewDataSourcePrefetchingProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendScrollViewDelegateProxy:\n    RxScrollViewDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UIScrollViewSubclass?\n\n    init(scrollViewSubclass: UIScrollViewSubclass) {\n        control = scrollViewSubclass\n        super.init(scrollView: scrollViewSubclass)\n    }\n}\n\nfinal class UIScrollViewSubclass:\n    UIScrollView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UIScrollView, UIScrollViewDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIScrollViewDelegate) -> Disposable {\n        RxScrollViewDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\n#if os(iOS)\nfinal class ExtendSearchBarDelegateProxy:\n    RxSearchBarDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UISearchBarSubclass?\n\n    init(searchBarSubclass: UISearchBarSubclass) {\n        control = searchBarSubclass\n        super.init(searchBar: searchBarSubclass)\n    }\n}\n\nfinal class UISearchBarSubclass:\n    UISearchBar,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UISearchBar, UISearchBarDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UISearchBarDelegate) -> Disposable {\n        RxSearchBarDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n#endif\n\nfinal class ExtendTextViewDelegateProxy:\n    RxTextViewDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UITextViewSubclass?\n\n    init(textViewSubclass: UITextViewSubclass) {\n        control = textViewSubclass\n        super.init(textView: textViewSubclass)\n    }\n}\n\nfinal class UITextViewSubclass:\n    UITextView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UIScrollView, UIScrollViewDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIScrollViewDelegate) -> Disposable {\n        RxScrollViewDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\n#if os(iOS)\nfinal class ExtendSearchControllerDelegateProxy:\n    RxSearchControllerDelegateProxy,\n    TestDelegateProtocol\n{\n    init(searchControllerSubclass: UISearchControllerSubclass) {\n        super.init(searchController: searchControllerSubclass)\n    }\n}\n\nfinal class UISearchControllerSubclass:\n    UISearchController,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UISearchController, UISearchControllerDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UISearchControllerDelegate) -> Disposable {\n        RxSearchControllerDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendPickerViewDelegateProxy:\n    RxPickerViewDelegateProxy,\n    TestDelegateProtocol\n{\n    init(pickerViewSubclass: UIPickerViewSubclass) {\n        super.init(pickerView: pickerViewSubclass)\n    }\n}\n\nfinal class UIPickerViewSubclass:\n    UIPickerView,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UIPickerView, UIPickerViewDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIPickerViewDelegate) -> Disposable {\n        RxPickerViewDelegateProxy.installForwardDelegate(\n            testDelegate,\n            retainDelegate: false,\n            onProxyForObject: self\n        )\n    }\n}\n\nfinal class ExtendPickerViewDataSourceProxy:\n    RxPickerViewDataSourceProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UIPickerViewSubclass2?\n\n    init(pickerViewSubclass: UIPickerViewSubclass2) {\n        control = pickerViewSubclass\n        super.init(pickerView: pickerViewSubclass)\n    }\n}\n\nfinal class UIPickerViewSubclass2: UIPickerView, TestDelegateControl {\n    func doThatTest(_ value: Int) {\n        if dataSource != nil {\n            (dataSource as! TestDelegateProtocol).testEventHappened?(value)\n        }\n    }\n\n    var delegateProxy: DelegateProxy<UIPickerView, UIPickerViewDataSource> {\n        rx.dataSource\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UIPickerViewDataSource) -> Disposable {\n        RxPickerViewDataSourceProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n#endif\n\nfinal class ExtendTextStorageDelegateProxy:\n    RxTextStorageDelegateProxy,\n    TestDelegateProtocol\n{\n    init(textStorageSubclass: NSTextStorageSubclass) {\n        super.init(textStorage: textStorageSubclass)\n    }\n}\n\nfinal class NSTextStorageSubclass:\n    NSTextStorage,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<NSTextStorage, NSTextStorageDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: NSTextStorageDelegate) -> Disposable {\n        RxTextStorageDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class ExtendNavigationControllerDelegateProxy:\n    RxNavigationControllerDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UINavigationControllerSubclass?\n\n    init(navigationControllerSubclass: UINavigationControllerSubclass) {\n        control = navigationControllerSubclass\n        super.init(navigationController: navigationControllerSubclass)\n    }\n}\n\nfinal class ExtendTabBarControllerDelegateProxy:\n    RxTabBarControllerDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var tabBarControllerSubclass: UITabBarControllerSubclass?\n\n    init(tabBarControllerSubclass: UITabBarControllerSubclass) {\n        self.tabBarControllerSubclass = tabBarControllerSubclass\n        super.init(tabBar: tabBarControllerSubclass)\n    }\n}\n\nfinal class ExtendTabBarDelegateProxy:\n    RxTabBarDelegateProxy,\n    TestDelegateProtocol\n{\n    private(set) weak var control: UITabBarSubclass?\n\n    init(tabBarSubclass: UITabBarSubclass) {\n        control = tabBarSubclass\n        super.init(tabBar: tabBarSubclass)\n    }\n}\n\nfinal class UINavigationControllerSubclass: UINavigationController, TestDelegateControl {\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UINavigationController, UINavigationControllerDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UINavigationControllerDelegate) -> Disposable {\n        RxNavigationControllerDelegateProxy.installForwardDelegate(\n            testDelegate,\n            retainDelegate: false,\n            onProxyForObject: self\n        )\n    }\n}\n\nfinal class UITabBarControllerSubclass:\n    UITabBarController,\n    TestDelegateControl\n{\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UITabBarController, UITabBarControllerDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UITabBarControllerDelegate) -> Disposable {\n        RxTabBarControllerDelegateProxy.installForwardDelegate(testDelegate, retainDelegate: false, onProxyForObject: self)\n    }\n}\n\nfinal class UITabBarSubclass: UITabBar, TestDelegateControl {\n    func doThatTest(_ value: Int) {\n        (delegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<UITabBar, UITabBarDelegate> {\n        rx.delegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: UITabBarDelegate) -> Disposable {\n        RxTabBarDelegateProxy.installForwardDelegate(\n            testDelegate,\n            retainDelegate: false,\n            onProxyForObject: self\n        )\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/DelegateProxyTest+WebKit.swift",
    "content": "//\n//  DelegateProxyTest+WebKit.swift\n//  Tests\n//\n//  Created by Giuseppe Lanza on 14/02/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(macOS)\n\n@testable import RxCocoa\n@testable import RxSwift\nimport WebKit\nimport XCTest\n\n@available(iOS 10.0, macOSApplicationExtension 10.10, *)\nextension DelegateProxyTest {\n    func test_WKNavigaionDelegateExtension() {\n        performDelegateTest(WKNavigationWebViewSubclass(frame: CGRect.zero)) { ExtendWKNavigationDelegateProxy(webViewSubclass: $0) }\n    }\n}\n\n@available(iOS 10.0, macOSApplicationExtension 10.10, *)\nfinal class ExtendWKNavigationDelegateProxy:\n    RxWKNavigationDelegateProxy,\n    TestDelegateProtocol\n{\n    init(webViewSubclass: WKNavigationWebViewSubclass) {\n        super.init(webView: webViewSubclass)\n    }\n}\n\n@available(iOS 8.0, macOS 10.10, macOSApplicationExtension 10.10, *)\nfinal class WKNavigationWebViewSubclass: WKWebView, TestDelegateControl {\n    func doThatTest(_ value: Int) {\n        (navigationDelegate as! TestDelegateProtocol).testEventHappened?(value)\n    }\n\n    var delegateProxy: DelegateProxy<WKWebView, WKNavigationDelegate> {\n        rx.navigationDelegate\n    }\n\n    func setMineForwardDelegate(_ testDelegate: WKNavigationDelegate) -> Disposable {\n        RxWKNavigationDelegateProxy.installForwardDelegate(\n            testDelegate,\n            retainDelegate: false,\n            onProxyForObject: self\n        )\n    }\n}\n\n// MARK: Mocks\n\n@available(iOS 10.0, macOSApplicationExtension 10.10, *)\nextension MockTestDelegateProtocol:\n    WKNavigationDelegate\n{}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/DelegateProxyTest.swift",
    "content": "//\n//  DelegateProxyTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/5/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n#if os(iOS)\nimport UIKit\n#endif\n\n// MARK: Protocols\n\n@objc protocol TestDelegateProtocol {\n    @objc optional func testEventHappened(_ value: Int)\n}\n\n@objc class MockTestDelegateProtocol:\n    NSObject,\n    TestDelegateProtocol\n{\n    var numbers = [Int]()\n\n    func testEventHappened(_ value: Int) {\n        numbers.append(value)\n    }\n}\n\nprotocol TestDelegateControl: NSObjectProtocol {\n    associatedtype TestParentObject: AnyObject\n    associatedtype TestDelegate\n    func doThatTest(_ value: Int)\n\n    var delegateProxy: DelegateProxy<TestParentObject, TestDelegate> { get }\n\n    func setMineForwardDelegate(_ testDelegate: TestDelegate) -> Disposable\n}\n\nextension TestDelegateControl {\n    var testSentMessage: Observable<Int> {\n        delegateProxy\n            .sentMessage(#selector(TestDelegateProtocol.testEventHappened(_:)))\n            .map { a in (a[0] as! NSNumber).intValue }\n    }\n\n    var testMethodInvoked: Observable<Int> {\n        delegateProxy\n            .methodInvoked(#selector(TestDelegateProtocol.testEventHappened(_:)))\n            .map { a in (a[0] as! NSNumber).intValue }\n    }\n}\n\n// MARK: Tests\n\nfinal class DelegateProxyTest: RxTest {\n    func test_OnInstallDelegateIsRetained() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        _ = view.rx.proxy\n\n        XCTAssertEqual(mock.messages, [])\n        XCTAssertTrue(view.rx.proxy.forwardToDelegate() === mock)\n    }\n\n    func test_forwardsUnobservedMethods() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        _ = view.rx.proxy\n\n        var invoked = false\n\n        mock.invoked = {\n            invoked = true\n        }\n\n        XCTAssertFalse(invoked)\n        view.delegate?.threeDView?(view, didLearnSomething: \"Psssst ...\")\n        XCTAssertTrue(invoked)\n\n        XCTAssertEqual(mock.messages, [\"didLearnSomething\"])\n    }\n\n    func test_forwardsObservedMethods() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        var observedFeedRequestSentMessage = false\n        var observedMessageInvoked = false\n        var events: [MessageProcessingStage] = []\n\n        var delegates: [NSObject?] = []\n        var responds: [Bool] = []\n\n        _ = view.rx.observeWeakly(NSObject.self, \"delegate\").skip(1).subscribe(onNext: { delegate in\n            delegates.append(delegate)\n            if let delegate {\n                responds.append(delegate.responds(to: #selector(ThreeDSectionedViewProtocol.threeDView(_:didLearnSomething:))))\n            }\n        })\n\n        let sentMessage = view.rx.proxy.sentMessage(#selector(ThreeDSectionedViewProtocol.threeDView(_:didLearnSomething:)))\n        let methodInvoked = view.rx.proxy.methodInvoked(#selector(ThreeDSectionedViewProtocol.threeDView(_:didLearnSomething:)))\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [true])\n\n        _ = methodInvoked\n            .subscribe(onNext: { _ in\n                observedMessageInvoked = true\n                events.append(.methodInvoked)\n            })\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [true, true])\n\n        mock.invoked = {\n            events.append(.invoking)\n        }\n\n        _ = sentMessage\n            .subscribe(onNext: { _ in\n                observedFeedRequestSentMessage = true\n                events.append(.sentMessage)\n            })\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [true, true, true])\n\n        XCTAssertTrue(!observedFeedRequestSentMessage)\n        XCTAssertTrue(!observedMessageInvoked)\n        view.delegate?.threeDView?(view, didLearnSomething: \"Psssst ...\")\n        XCTAssertTrue(observedFeedRequestSentMessage)\n        XCTAssertTrue(observedMessageInvoked)\n\n        XCTAssertEqual(mock.messages, [\"didLearnSomething\"])\n        XCTAssertEqual(events, [.sentMessage, .invoking, .methodInvoked])\n    }\n\n    func test_forwardsObserverDispose() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        var nMessages = 0\n        var invoked = false\n\n        let d = view.rx.proxy.sentMessage(#selector(ThreeDSectionedViewProtocol.threeDView(_:didLearnSomething:)))\n            .subscribe(onNext: { _ in\n                nMessages += 1\n            })\n\n        let d2 = view.rx.proxy.methodInvoked(#selector(ThreeDSectionedViewProtocol.threeDView(_:didLearnSomething:)))\n            .subscribe(onNext: { _ in\n                nMessages += 1\n            })\n\n        mock.invoked = { invoked = true }\n\n        XCTAssertTrue(nMessages == 0)\n        XCTAssertFalse(invoked)\n        view.delegate?.threeDView?(view, didLearnSomething: \"Psssst ...\")\n        XCTAssertTrue(invoked)\n        XCTAssertTrue(nMessages == 2)\n\n        d.dispose()\n        d2.dispose()\n\n        view.delegate?.threeDView?(view, didLearnSomething: \"Psssst ...\")\n        XCTAssertTrue(nMessages == 2)\n    }\n\n    func test_forwardsUnobservableMethods() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        var invoked = false\n        mock.invoked = { invoked = true }\n\n        XCTAssertFalse(invoked)\n        view.delegate?.threeDView?(view, didLearnSomething: \"Psssst ...\")\n        XCTAssertTrue(invoked)\n\n        XCTAssertEqual(mock.messages, [\"didLearnSomething\"])\n    }\n\n    func test_observesUnimplementedOptionalMethods() {\n        let view = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        XCTAssertTrue(!mock.responds(to: NSSelectorFromString(\"threeDView(threeDView:didGetXXX:\")))\n\n        let sentArgument = IndexPath(index: 0)\n\n        var receivedArgumentSentMessage: IndexPath? = nil\n        var receivedArgumentMethodInvoked: IndexPath? = nil\n\n        var events: [MessageProcessingStage] = []\n\n        var delegates: [NSObject?] = []\n        var responds: [Bool] = []\n\n        _ = view.rx.observeWeakly(NSObject.self, \"delegate\").skip(1).subscribe(onNext: { delegate in\n            delegates.append(delegate)\n            if let delegate {\n                responds.append(delegate.responds(to: #selector(ThreeDSectionedViewProtocol.threeDView(_:didGetXXX:))))\n            }\n        })\n\n        let sentMessage = view.rx.proxy.sentMessage(#selector(ThreeDSectionedViewProtocol.threeDView(_:didGetXXX:)))\n        let methodInvoked = view.rx.proxy.methodInvoked(#selector(ThreeDSectionedViewProtocol.threeDView(_:didGetXXX:)))\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy]) { $0 == $1 }\n        XCTAssertEqual(responds, [false])\n\n        let d1 = sentMessage\n            .subscribe(onNext: { n in\n                let ip = n[1] as! IndexPath\n                receivedArgumentSentMessage = ip\n                events.append(.sentMessage)\n            })\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy]) { $0 == $1 }\n        XCTAssertEqual(responds, [false, true])\n\n        let d2 = methodInvoked\n            .subscribe(onNext: { n in\n                let ip = n[1] as! IndexPath\n                receivedArgumentMethodInvoked = ip\n                events.append(.methodInvoked)\n            })\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [false, true, true])\n\n        mock.invoked = {\n            events.append(.invoking)\n        }\n\n        view.delegate?.threeDView?(view, didGetXXX: sentArgument)\n        XCTAssertTrue(receivedArgumentSentMessage == sentArgument)\n        XCTAssertTrue(receivedArgumentMethodInvoked == sentArgument)\n\n        XCTAssertEqual(mock.messages, [])\n        XCTAssertEqual(events, [.sentMessage, .methodInvoked])\n\n        d1.dispose()\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [false, true, true, true])\n\n        d2.dispose()\n\n        XCTAssertArraysEqual(delegates, [view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy, nil, view.rx.proxy]) { $0 === $1 }\n        XCTAssertEqual(responds, [false, true, true, true, false])\n    }\n\n    func test_delegateProxyCompletesOnDealloc() {\n        var view: ThreeDSectionedView! = ThreeDSectionedView()\n        let mock = MockThreeDSectionedViewProtocol()\n\n        view.delegate = mock\n\n        var completedSentMessage = false\n        var completedMethodInvoked = false\n\n        autoreleasepool {\n            XCTAssertTrue(!mock.responds(to: NSSelectorFromString(\"threeDView:threeDView:didGetXXX:\")))\n\n            let sentArgument = IndexPath(index: 0)\n\n            _ = view\n                .rx.proxy\n                .sentMessage(#selector(ThreeDSectionedViewProtocol.threeDView(_:didGetXXX:)))\n                .subscribe(onCompleted: {\n                    completedSentMessage = true\n                })\n            _ = view\n                .rx.proxy\n                .methodInvoked(#selector(ThreeDSectionedViewProtocol.threeDView(_:didGetXXX:)))\n                .subscribe(onCompleted: {\n                    completedMethodInvoked = true\n                })\n\n            mock.invoked = {}\n\n            view.delegate?.threeDView?(view, didGetXXX: sentArgument)\n        }\n        XCTAssertTrue(!completedSentMessage)\n        XCTAssertTrue(!completedMethodInvoked)\n        view = nil\n        XCTAssertTrue(completedSentMessage)\n        XCTAssertTrue(completedMethodInvoked)\n    }\n}\n\nextension DelegateProxyTest {\n    func test_delegateProxyType() {\n        let view = InitialClassView()\n        let subclassView = InitialClassViewSubclass()\n        _ = InitialClassViewDelegateProxy.createProxy(for: view)\n        let proxy2 = InitialClassViewDelegateProxy.createProxy(for: subclassView)\n        XCTAssert(proxy2 is InitialClassViewDelegateProxySubclass)\n    }\n\n    func test_delegateProxyTypeExtend_a() {\n        let extendView1 = InitialClassViewSometimeExtended1_a()\n        let extendView2 = InitialClassViewSometimeExtended2_a()\n        _ = InitialClassViewDelegateProxy.createProxy(for: extendView1)\n        _ = InitialClassViewDelegateProxy.createProxy(for: extendView2)\n\n        ExtendClassViewDelegateProxy_a.register { ExtendClassViewDelegateProxy_a(parentObject1: $0) }\n\n        let extendedProxy1 = InitialClassViewDelegateProxy.createProxy(for: extendView1)\n        let extendedProxy2 = InitialClassViewDelegateProxy.createProxy(for: extendView2)\n        XCTAssert(extendedProxy1 is ExtendClassViewDelegateProxy_a)\n        XCTAssert(extendedProxy2 is ExtendClassViewDelegateProxy_a)\n    }\n\n    func test_delegateProxyTypeExtend_b() {\n        let extendView1 = InitialClassViewSometimeExtended1_b()\n        let extendView2 = InitialClassViewSometimeExtended2_b()\n        _ = InitialClassViewDelegateProxy.createProxy(for: extendView1)\n        _ = InitialClassViewDelegateProxy.createProxy(for: extendView2)\n\n        ExtendClassViewDelegateProxy_b.register { ExtendClassViewDelegateProxy_b(parentObject2: $0) }\n\n        _ = InitialClassViewDelegateProxy.createProxy(for: extendView1)\n        let extendedProxy2 = InitialClassViewDelegateProxy.createProxy(for: extendView2)\n        XCTAssert(extendedProxy2 is ExtendClassViewDelegateProxy_b)\n    }\n}\n\nextension DelegateProxyTest {\n    func test_InstallPureSwiftDelegateProxy() {\n        let view = PureSwiftView()\n        let mock = MockPureSwiftDelegate()\n\n        view.delegate = mock\n\n        let proxy = view.rx.proxy\n        XCTAssertTrue(view.delegate === proxy)\n        XCTAssertTrue(view.rx.proxy.forwardToDelegate() === mock)\n\n        var latestValue: Int? = nil\n        _ = view.rx.testIt.subscribe(onNext: {\n            latestValue = $0\n        })\n\n        XCTAssertEqual(latestValue, nil)\n        view.testIt(with: 3)\n        XCTAssertEqual(latestValue, 3)\n    }\n}\n\n#if os(iOS)\nextension DelegateProxyTest {\n    func test_DelegateProxyHierarchyWorks() {\n        let tableView = UITableView()\n        _ = tableView.rx.delegate.sentMessage(#selector(UIScrollViewDelegate.scrollViewWillBeginDragging(_:)))\n        _ = tableView.rx.delegate.methodInvoked(#selector(UIScrollViewDelegate.scrollViewWillBeginDragging(_:)))\n    }\n}\n#endif\n\n// MARK: Testing extensions\n\nextension DelegateProxyTest {\n    func performDelegateTest<Control: TestDelegateControl, ExtendedProxy: DelegateProxyType>(_ createControl: @autoclosure () -> Control, make: @escaping (Control) -> ExtendedProxy) {\n        ExtendedProxy.register(make: make)\n        var control: Control!\n\n        autoreleasepool {\n            control = createControl()\n        }\n\n        var receivedValueSentMessage: Int!\n        var receivedValueMethodInvoked: Int!\n        var completedSentMessage = false\n        var completedMethodInvoked = false\n        var deallocated = false\n        var stages: [MessageProcessingStage] = []\n        let expectation = expectation(description: \"dealloc\")\n        autoreleasepool {\n            _ = control.testSentMessage.subscribe(onNext: { value in\n                receivedValueSentMessage = value\n                stages.append(.sentMessage)\n            }, onCompleted: {\n                completedSentMessage = true\n            })\n\n            _ = control.testMethodInvoked.subscribe(onNext: { value in\n                receivedValueMethodInvoked = value\n                stages.append(.methodInvoked)\n            }, onCompleted: {\n                completedMethodInvoked = true\n            })\n\n            _ = (control as! NSObject).rx.deallocated.subscribe(onNext: { _ in\n                deallocated = true\n                expectation.fulfill()\n            })\n        }\n\n        XCTAssertTrue(receivedValueSentMessage == nil)\n        XCTAssertTrue(receivedValueMethodInvoked == nil)\n        XCTAssertEqual(stages, [])\n        autoreleasepool {\n            control.doThatTest(382_763)\n        }\n        XCTAssertEqual(stages, [.sentMessage, .methodInvoked])\n        XCTAssertEqual(receivedValueSentMessage, 382_763)\n        XCTAssertEqual(receivedValueMethodInvoked, 382_763)\n\n        autoreleasepool {\n            let mine = MockTestDelegateProtocol()\n            let disposable = control.setMineForwardDelegate(mine as! Control.TestDelegate)\n\n            XCTAssertEqual(mine.numbers, [])\n            control.doThatTest(2)\n            XCTAssertEqual(mine.numbers, [2])\n            disposable.dispose()\n            control.doThatTest(3)\n            XCTAssertEqual(mine.numbers, [2])\n        }\n\n        XCTAssertFalse(deallocated)\n        XCTAssertFalse(completedSentMessage)\n        XCTAssertFalse(completedMethodInvoked)\n        autoreleasepool {\n            control = nil\n        }\n\n        wait(for: [expectation], timeout: 1)\n\n        XCTAssertTrue(deallocated)\n        XCTAssertTrue(completedSentMessage)\n        XCTAssertTrue(completedMethodInvoked)\n    }\n}\n\n// MARK: Mocks\n\n// test case {\n\nfinal class Food: NSObject {}\n\n@objc protocol ThreeDSectionedViewProtocol: NSObjectProtocol {\n    func threeDView(_ threeDView: ThreeDSectionedView, listenToMeee: IndexPath)\n    func threeDView(_ threeDView: ThreeDSectionedView, feedMe: IndexPath)\n    func threeDView(_ threeDView: ThreeDSectionedView, howTallAmI: IndexPath) -> CGFloat\n\n    @objc optional func threeDView(_ threeDView: ThreeDSectionedView, didGetXXX: IndexPath)\n    @objc optional func threeDView(_ threeDView: ThreeDSectionedView, didLearnSomething: String)\n    @objc optional func threeDView(_ threeDView: ThreeDSectionedView, didFallAsleep: IndexPath)\n    @objc optional func threeDView(_ threeDView: ThreeDSectionedView, getMeSomeFood: IndexPath) -> Food\n}\n\nfinal class ThreeDSectionedView: NSObject {\n    @objc dynamic var delegate: ThreeDSectionedViewProtocol?\n}\n\nextension ThreeDSectionedView: HasDelegate {\n    typealias Delegate = ThreeDSectionedViewProtocol\n}\n\n// }\n\n// integration {\n\nfinal class ThreeDSectionedViewDelegateProxy: DelegateProxy<ThreeDSectionedView, ThreeDSectionedViewProtocol>,\n    ThreeDSectionedViewProtocol,\n    DelegateProxyType\n{\n    // Register known implementations\n    static func registerKnownImplementations() {\n        register { ThreeDSectionedViewDelegateProxy(parentObject: $0) }\n    }\n\n    init(parentObject: ThreeDSectionedView) {\n        super.init(parentObject: parentObject, delegateProxy: ThreeDSectionedViewDelegateProxy.self)\n    }\n\n    // delegate\n\n    func threeDView(_: ThreeDSectionedView, listenToMeee _: IndexPath) {}\n\n    func threeDView(_: ThreeDSectionedView, feedMe _: IndexPath) {}\n\n    func threeDView(_: ThreeDSectionedView, howTallAmI _: IndexPath) -> CGFloat {\n        1.1\n    }\n}\n\nextension Reactive where Base: ThreeDSectionedView {\n    var proxy: DelegateProxy<ThreeDSectionedView, ThreeDSectionedViewProtocol> {\n        ThreeDSectionedViewDelegateProxy.proxy(for: base)\n    }\n}\n\n// }\n\nfinal class MockThreeDSectionedViewProtocol: NSObject, ThreeDSectionedViewProtocol {\n    var messages: [String] = []\n    var invoked: (() -> Void)!\n\n    func threeDView(_: ThreeDSectionedView, listenToMeee _: IndexPath) {\n        messages.append(\"listenToMeee\")\n        invoked()\n    }\n\n    func threeDView(_: ThreeDSectionedView, feedMe _: IndexPath) {\n        messages.append(\"feedMe\")\n        invoked()\n    }\n\n    func threeDView(_: ThreeDSectionedView, howTallAmI _: IndexPath) -> CGFloat {\n        messages.append(\"howTallAmI\")\n        invoked()\n        return 3\n    }\n\n    /* func threeDView(threeDView: ThreeDSectionedView, didGetXXX: IndexPath) {\n         messages.append(\"didGetXXX\")\n     } */\n\n    func threeDView(_: ThreeDSectionedView, didLearnSomething _: String) {\n        messages.append(\"didLearnSomething\")\n        invoked()\n    }\n\n    // optional func threeDView(threeDView: ThreeDSectionedView, didFallAsleep: IndexPath)\n    func threeDView(_: ThreeDSectionedView, getMeSomeFood _: IndexPath) -> Food {\n        messages.append(\"getMeSomeFood\")\n        invoked()\n        return Food()\n    }\n}\n\n// test case {\n\n@objc protocol InitialClassViewDelegate: NSObjectProtocol {}\n\nclass InitialClassView: NSObject {\n    weak var delegate: InitialClassViewDelegate?\n}\n\nclass InitialClassViewSubclass: InitialClassView {}\n\nclass InitialClassViewDelegateProxy:\n    DelegateProxy<InitialClassView, InitialClassViewDelegate>,\n    DelegateProxyType,\n    InitialClassViewDelegate\n{\n    init(parentObject: InitialClassView) {\n        super.init(parentObject: parentObject, delegateProxy: InitialClassViewDelegateProxy.self)\n    }\n\n    // Register known implementations\n    static func registerKnownImplementations() {\n        register { InitialClassViewDelegateProxy(parentObject: $0) }\n        register { InitialClassViewDelegateProxySubclass(parentObject: $0) }\n    }\n\n    static func currentDelegate(for object: ParentObject) -> InitialClassViewDelegate? {\n        object.delegate\n    }\n\n    static func setCurrentDelegate(_ delegate: InitialClassViewDelegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n}\n\nclass InitialClassViewDelegateProxySubclass: InitialClassViewDelegateProxy {\n    init(parentObject: InitialClassViewSubclass) {\n        super.init(parentObject: parentObject)\n    }\n}\n\nclass InitialClassViewSometimeExtended1_a: InitialClassView {}\n\nclass InitialClassViewSometimeExtended2_a: InitialClassViewSometimeExtended1_a {}\n\nclass InitialClassViewSometimeExtended1_b: InitialClassView {}\n\nclass InitialClassViewSometimeExtended2_b: InitialClassViewSometimeExtended1_b {}\n\nclass ExtendClassViewDelegateProxy_a: InitialClassViewDelegateProxy {\n    init(parentObject1: InitialClassViewSometimeExtended1_a) {\n        super.init(parentObject: parentObject1)\n    }\n\n    init(parentObject2: InitialClassViewSometimeExtended2_a) {\n        super.init(parentObject: parentObject2)\n    }\n}\n\nclass ExtendClassViewDelegateProxy_b: InitialClassViewDelegateProxy {\n    init(parentObject1: InitialClassViewSometimeExtended1_b) {\n        super.init(parentObject: parentObject1)\n    }\n\n    init(parentObject2: InitialClassViewSometimeExtended2_b) {\n        super.init(parentObject: parentObject2)\n    }\n}\n\nprotocol PureSwiftDelegate: AnyObject {\n    func delegateTestIt(with: Int)\n}\n\nclass PureSwiftView: ReactiveCompatible {\n    weak var delegate: PureSwiftDelegate?\n\n    func testIt(with: Int) {\n        delegate?.delegateTestIt(with: with)\n    }\n}\n\nextension Reactive where Base: PureSwiftView {\n    var proxy: DelegateProxy<PureSwiftView, PureSwiftDelegate> {\n        PureSwiftDelegateProxy.proxy(for: base)\n    }\n}\n\nextension Reactive where Base: PureSwiftView {\n    var testIt: ControlEvent<Int> {\n        ControlEvent(events: PureSwiftDelegateProxy.proxy(for: base).testItObserver)\n    }\n}\n\nclass PureSwiftDelegateProxy:\n    DelegateProxy<PureSwiftView, PureSwiftDelegate>,\n    DelegateProxyType,\n    PureSwiftDelegate\n{\n    fileprivate let testItObserver = PublishSubject<Int>()\n\n    init(parentObject: PureSwiftView) {\n        super.init(parentObject: parentObject, delegateProxy: PureSwiftDelegateProxy.self)\n    }\n\n    static func registerKnownImplementations() {\n        register { PureSwiftDelegateProxy(parentObject: $0) }\n    }\n\n    static func currentDelegate(for object: ParentObject) -> PureSwiftDelegate? {\n        object.delegate\n    }\n\n    static func setCurrentDelegate(_ delegate: PureSwiftDelegate?, to object: ParentObject) {\n        object.delegate = delegate\n    }\n\n    func delegateTestIt(with: Int) {\n        testItObserver.on(.next(with))\n        forwardToDelegate()?.delegateTestIt(with: with)\n    }\n\n    deinit {\n        self.testItObserver.on(.completed)\n    }\n}\n\nfinal class MockPureSwiftDelegate: PureSwiftDelegate {\n    var latestValue: Int?\n\n    func delegateTestIt(with: Int) {\n        latestValue = with\n    }\n}\n\n// }\n\n#if os(macOS)\nextension MockTestDelegateProtocol:\n    NSTextFieldDelegate {}\n#endif\n\n#if os(iOS)\nextension MockTestDelegateProtocol: UIPickerViewDataSource {\n    func numberOfComponents(in _: UIPickerView) -> Int {\n        fatalError()\n    }\n\n    func pickerView(_: UIPickerView, numberOfRowsInComponent _: Int) -> Int {\n        fatalError()\n    }\n}\n#endif\n\n#if os(iOS) || os(tvOS)\nextension MockTestDelegateProtocol:\n    UICollectionViewDataSource,\n    UICollectionViewDataSourcePrefetching,\n    UIScrollViewDelegate,\n    UITableViewDataSource,\n    UITableViewDataSourcePrefetching,\n    UITableViewDelegate,\n    UISearchBarDelegate,\n    UISearchControllerDelegate,\n    UINavigationControllerDelegate,\n    UITabBarControllerDelegate,\n    UITabBarDelegate\n{\n    func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {\n        fatalError()\n    }\n\n    func collectionView(_: UICollectionView, cellForItemAt _: IndexPath) -> UICollectionViewCell {\n        fatalError()\n    }\n\n    func collectionView(_: UICollectionView, prefetchItemsAt _: [IndexPath]) {\n        fatalError()\n    }\n\n    func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        fatalError()\n    }\n\n    func tableView(_: UITableView, cellForRowAt _: IndexPath) -> UITableViewCell {\n        fatalError()\n    }\n\n    func tableView(_: UITableView, prefetchRowsAt _: [IndexPath]) {\n        fatalError()\n    }\n}\n#endif\n\n#if os(iOS)\nextension MockTestDelegateProtocol:\n    UIPickerViewDelegate\n{}\n\n@objc class MockDelegate: NSObject, UICollectionViewDelegate {\n    @objc var demoText: String {\n        \"\"\n    }\n}\n\nextension DelegateProxyTest {\n    /// Test for verifying the fix for the crash reported in https://github.com/ReactiveX/RxSwift/issues/2428\n    func testDelegateProxyNotCrashing() {\n        let collection = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())\n        let mockDelegate = MockDelegate()\n        collection.delegate = mockDelegate\n        collection.rx.contentOffset.subscribe().disposed(by: DisposeBag())\n\n        let selector = #selector(getter: MockDelegate.demoText)\n        if (collection.delegate?.responds(to: selector)) != nil {\n            let performResult = collection.delegate?.perform(selector)?.takeRetainedValue()\n            let text = performResult as? String ?? \"unknown-result\"\n            XCTAssertEqual(text, \"\")\n        } else {\n            XCTFail(\"RxDelegateProxyCrashFix does not work\")\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/Driver+Test.swift",
    "content": "//\n//  Driver+Test.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass DriverTest: SharedSequenceTest {}\n\n// MARK: properties\n\nextension DriverTest {\n    func testDriverSharing_WhenErroring() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let observer1 = scheduler.createObserver(Int.self)\n        let observer2 = scheduler.createObserver(Int.self)\n        let observer3 = scheduler.createObserver(Int.self)\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n        var disposable3: Disposable!\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .error(50, testError)\n        ])\n        let driver = coldObservable.asDriver(onErrorJustReturn: -1)\n\n        scheduler.scheduleAt(200) {\n            disposable1 = driver.asObservable().subscribe(observer1)\n        }\n\n        scheduler.scheduleAt(225) {\n            disposable2 = driver.asObservable().subscribe(observer2)\n        }\n\n        scheduler.scheduleAt(235) {\n            disposable1.dispose()\n        }\n\n        scheduler.scheduleAt(260) {\n            disposable2.dispose()\n        }\n\n        // resubscription\n\n        scheduler.scheduleAt(260) {\n            disposable3 = driver.asObservable().subscribe(observer3)\n        }\n\n        scheduler.scheduleAt(285) {\n            disposable3.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(observer1.events, [\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(observer2.events, [\n            .next(225, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, -1),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(observer3.events, [\n            .next(270, 0),\n            .next(280, 1)\n        ])\n\n        XCTAssertEqual(coldObservable.subscriptions, [\n            Subscription(200, 250),\n            Subscription(260, 285)\n        ])\n    }\n\n    func testDriverSharing_WhenCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let observer1 = scheduler.createObserver(Int.self)\n        let observer2 = scheduler.createObserver(Int.self)\n        let observer3 = scheduler.createObserver(Int.self)\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n        var disposable3: Disposable!\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n        let driver = coldObservable.asDriver(onErrorJustReturn: -1)\n\n        scheduler.scheduleAt(200) {\n            disposable1 = driver.asObservable().subscribe(observer1)\n        }\n\n        scheduler.scheduleAt(225) {\n            disposable2 = driver.asObservable().subscribe(observer2)\n        }\n\n        scheduler.scheduleAt(235) {\n            disposable1.dispose()\n        }\n\n        scheduler.scheduleAt(260) {\n            disposable2.dispose()\n        }\n\n        // resubscription\n\n        scheduler.scheduleAt(260) {\n            disposable3 = driver.asObservable().subscribe(observer3)\n        }\n\n        scheduler.scheduleAt(285) {\n            disposable3.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(observer1.events, [\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(observer2.events, [\n            .next(225, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(observer3.events, [\n            .next(270, 0),\n            .next(280, 1)\n        ])\n\n        XCTAssertEqual(coldObservable.subscriptions, [\n            Subscription(200, 250),\n            Subscription(260, 285)\n        ])\n    }\n}\n\n// MARK: conversions\n\nextension DriverTest {\n    func testBehaviorRelayAsDriver() {\n        let hotObservable: BehaviorRelay<Int> = BehaviorRelay(value: 0)\n        let xs = Driver.zip(hotObservable.asDriver(), Driver.of(0, 0, 0)) { x, _ in\n            x\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs, expectationFulfilled: { $0 == 2 }) {\n            hotObservable.accept(1)\n            hotObservable.accept(2)\n        }\n\n        XCTAssertEqual(results, [0, 1, 2])\n    }\n\n    func testInfallibleAsDriver() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asInfallible(onErrorJustReturn: -1).asDriver()\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_onErrorJustReturn() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asDriver(onErrorJustReturn: -1)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_onErrorDriveWith() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asDriver(onErrorDriveWith: Driver.just(-1))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_onErrorRecover() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asDriver { _ in\n            Driver.empty()\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2])\n    }\n}\n\n// MARK: correct order of sync subscriptions\n\nextension DriverTest {\n    func testDrivingOrderOfSynchronousSubscriptions1() {\n        func prepareSampleDriver(with item: String) -> Driver<String> {\n            Observable.create { observer in\n                observer.onNext(item)\n                observer.onCompleted()\n                return Disposables.create()\n            }\n            .asDriver(onErrorJustReturn: \"\")\n        }\n\n        var disposeBag = DisposeBag()\n        let scheduler = TestScheduler(initialClock: 0)\n        let observer = scheduler.createObserver(String.self)\n        let relay = BehaviorRelay(value: \"initial\")\n\n        relay.asDriver()\n            .drive(observer)\n            .disposed(by: disposeBag)\n\n        prepareSampleDriver(with: \"first\")\n            .drive(relay)\n            .disposed(by: disposeBag)\n\n        prepareSampleDriver(with: \"second\")\n            .drive(relay)\n            .disposed(by: disposeBag)\n\n        Observable.just(\"third\")\n            .bind(to: relay)\n            .disposed(by: disposeBag)\n\n        disposeBag = DisposeBag()\n\n        XCTAssertEqual(observer.events, [\n            .next(0, \"initial\"),\n            .next(0, \"first\"),\n            .next(0, \"second\"),\n            .next(0, \"third\")\n        ])\n    }\n\n    func testDrivingOrderOfSynchronousSubscriptions2() {\n        var latestValue: Int?\n        let state = BehaviorSubject(value: 1)\n        let subscription = state.asDriver(onErrorJustReturn: 0)\n            .flatMapLatest { x in\n                Driver.just(x * 2)\n            }\n            .flatMapLatest { y in\n                Observable.just(y).asDriver(onErrorJustReturn: -1)\n            }\n            .flatMapLatest { y in\n                Observable.just(y).asDriver(onErrorDriveWith: Driver.empty())\n            }\n            .flatMapLatest { y in\n                Observable.just(y).asDriver(onErrorRecover: { _ in Driver.empty() })\n            }\n            .drive(onNext: { element in\n                latestValue = element\n            })\n\n        subscription.dispose()\n\n        XCTAssertEqual(latestValue, 2)\n    }\n}\n\n// MARK: drive observer\n\nextension DriverTest {\n    func testDriveObserver() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let observer: AnyObserver<Int> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Driver.just(1) as Driver<Int>).drive(observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n\n    func testDriveObservers() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let observer1: AnyObserver<Int> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Driver.just(1) as Driver<Int>).drive(observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testDriveOptionalObserver() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Driver.just(1) as Driver<Int>).drive(observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n\n    func testDriveOptionalObservers() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let observer1: AnyObserver<Int?> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int?> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Driver.just(1) as Driver<Int>).drive(observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testDriveNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        // shouldn't cause compile time error\n        _ = Driver.just(1).drive(observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n}\n\n// MARK: drive optional behavior relay\n\nextension DriverTest {\n    func testDriveBehaviorRelay() {\n        let relay = BehaviorRelay<Int>(value: 0)\n\n        let subscription = (Driver.just(1) as Driver<Int>).drive(relay)\n\n        XCTAssertEqual(relay.value, 1)\n        subscription.dispose()\n    }\n\n    func testDriveBehaviorRelays() {\n        let relay1 = BehaviorRelay<Int>(value: 0)\n        let relay2 = BehaviorRelay<Int>(value: 0)\n\n        _ = Driver.just(1).drive(relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n    }\n\n    func testDriveOptionalBehaviorRelay1() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n\n    func testDriveOptionalBehaviorRelays1() {\n        let relay1 = BehaviorRelay<Int?>(value: 0)\n        let relay2 = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n    }\n\n    func testDriveOptionalBehaviorRelay2() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Driver.just(1) as Driver<Int?>).drive(relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n\n    func testDriveOptionalBehaviorRelays2() {\n        let relay1 = BehaviorRelay<Int?>(value: 0)\n        let relay2 = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Driver.just(1) as Driver<Int?>).drive(relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n    }\n\n    func testDriveBehaviorRelayNoAmbiguity() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        // shouldn't cause compile time error\n        _ = Driver.just(1).drive(relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n}\n\n// MARK: drive optional behavior relay\n\nextension DriverTest {\n    func testDriveReplayRelay() {\n        let relay = ReplayRelay<Int>.create(bufferSize: 1)\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testDriveReplayRelays() {\n        let relay1 = ReplayRelay<Int>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testDriveOptionalReplayRelay1() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testDriveOptionalReplayRelays() {\n        let relay1 = ReplayRelay<Int?>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int>).drive(relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testDriveOptionalReplayRelay2() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int?>).drive(relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testDriveReplayRelays2() {\n        let relay1 = ReplayRelay<Int?>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Driver.just(1) as Driver<Int?>).drive(relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testDriveReplayRelayNoAmbiguity() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        // shouldn't cause compile time error\n        _ = Driver.just(1).drive(relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n}\n\n// MARK: - Drive with object\n\nextension DriverTest {\n    func testDriveWithNext() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let driver = coldObservable.asDriver(onErrorJustReturn: -1)\n\n        _ = driver\n            .drive(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"3\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n\n    func testDriveWithError() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .error(40, testError),\n            .next(50, 3)\n        ])\n\n        let driver = coldObservable.asDriver(onErrorJustReturn: -1)\n\n        _ = driver\n            .drive(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"-1\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n\n    func testDriveWithCompleted() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        var completed: UUID?\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .completed(40)\n        ])\n\n        let driver = coldObservable.asDriver(onErrorJustReturn: -1)\n\n        _ = driver\n            .drive(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onCompleted: { completed = $0.id },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n        XCTAssertEqual(completed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n}\n\nprivate class TestObject: NSObject {\n    var id = UUID()\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/ExampleTests.swift",
    "content": "//\n//  ExampleTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/11/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class ExampleTests: RxTest {}\n\nstruct Repository {}\n\nextension ExampleTests {\n    func testWelcomePage() {\n        _ = autoreleasepool { () -> Observable<[Repository]> in\n            let searchBar = UISearchBar()\n            func searchGitHub(_: String) -> Observable<[Repository]> {\n                Observable.empty()\n            }\n\n            let searchResults = searchBar.rx.text.orEmpty\n                .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n                .distinctUntilChanged()\n                .flatMapLatest { query -> Observable<[Repository]> in\n                    if query.isEmpty {\n                        return .just([])\n                    }\n                    return searchGitHub(query)\n                        .catchAndReturn([])\n                }\n                .observe(on: MainScheduler.instance)\n\n            return searchResults\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/Infallible+BindTests.swift",
    "content": "//\n//  Infallible+BindTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 11/20/20.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class InfallibleBindTest: RxTest {}\n\n// MARK: bind(to:) observer\n\nextension InfallibleBindTest {\n    func testBindToObserver() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let observer: AnyObserver<Int> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Infallible.just(1).bind(to: observer)\n\n        XCTAssertEqual(events, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToObservers() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let observer1: AnyObserver<Int> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Infallible.just(1).bind(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToOptionalObserver() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Infallible.just(1) as Infallible<Int>).bind(to: observer)\n\n        XCTAssertEqual(events[0].value.element!, 1)\n        guard case .completed = events[1].value else {\n            XCTFail(\"Not completed\")\n            return\n        }\n    }\n\n    func testBindToOptionalObservers() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let observer1: AnyObserver<Int?> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int?> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Infallible.just(1) as Infallible<Int>).bind(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToOptionalObserverNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Infallible.just(1).bind(to: observer)\n\n        XCTAssertEqual(events[0].value.element!, 1)\n        guard case .completed = events[1].value else {\n            XCTFail(\"Not completed\")\n            return\n        }\n    }\n}\n\n// MARK: bind(to:) curried\n\nextension InfallibleBindTest {\n    func testBindToCurried1() {\n        var result: Int? = nil\n        let binder: (Infallible<Int>) -> Disposable = { obs in\n            obs.subscribe(onNext: { element in\n                result = element\n            })\n        }\n\n        XCTAssertNil(result)\n\n        let d: Disposable = Infallible.just(1).bind(to: binder)\n\n        XCTAssertEqual(result, 1)\n        d.dispose()\n    }\n\n    func testBindToCurried2() {\n        var result: Int? = nil\n        let binder: (Infallible<Int>) -> (Int) -> Disposable = { obs in\n            { other in\n                obs.subscribe(onNext: { element in\n                    result = element + other\n                })\n            }\n        }\n\n        XCTAssertNil(result)\n\n        let d: Disposable = Infallible.just(1).bind(to: binder)(3)\n\n        XCTAssertEqual(result, 4)\n        d.dispose()\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/KVOObservableTests.swift",
    "content": "//\n//  KVOObservableTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport Cocoa\n#endif\n\nfinal class KVOObservableTests: RxTest {\n    var parent: Parent!\n    var parentWithChild: ParentWithChild!\n    var hasStrongProperty: HasStrongProperty!\n    var hasWeakProperty: HasWeakProperty!\n    fileprivate var testClass: TestClass!\n}\n\nprivate final class TestClass: NSObject {\n    @objc dynamic var pr: String? = \"0\"\n}\n\nfinal class Parent: NSObject {\n    var disposeBag: DisposeBag! = DisposeBag()\n\n    @objc dynamic var val: String = \"\"\n\n    init(callback: @escaping (String?) -> Void) {\n        super.init()\n\n        rx.observe(String.self, \"val\", options: [.initial, .new], retainSelf: false)\n            .subscribe(onNext: callback)\n            .disposed(by: disposeBag)\n    }\n\n    deinit {\n        disposeBag = nil\n    }\n}\n\nfinal class Child: NSObject {\n    let disposeBag = DisposeBag()\n\n    init(parent: ParentWithChild, callback: @escaping (String?) -> Void) {\n        super.init()\n        parent.rx.observe(String.self, \"val\", options: [.initial, .new], retainSelf: false)\n            .subscribe(onNext: callback)\n            .disposed(by: disposeBag)\n    }\n\n    deinit {}\n}\n\nfinal class ParentWithChild: NSObject {\n    @objc dynamic var val: String = \"\"\n\n    var child: Child?\n\n    init(callback: @escaping (String?) -> Void) {\n        super.init()\n        child = Child(parent: self, callback: callback)\n    }\n}\n\n@objc enum IntEnum: Int {\n    typealias RawValue = Int\n    case one\n    case two\n}\n\n@objc enum UIntEnum: UInt {\n    case one\n    case two\n}\n\n@objc enum Int32Enum: Int32 {\n    case one\n    case two\n}\n\n@objc enum UInt32Enum: UInt32 {\n    case one\n    case two\n}\n\n@objc enum Int64Enum: Int64 {\n    case one\n    case two\n}\n\n@objc enum UInt64Enum: UInt64 {\n    case one\n    case two\n}\n\nfinal class HasStrongProperty: NSObject {\n    @objc dynamic var property: NSObject?\n    @objc dynamic var frame: CGRect\n    @objc dynamic var point: CGPoint\n    @objc dynamic var size: CGSize\n    @objc dynamic var intEnum: IntEnum = .one\n    @objc dynamic var uintEnum: UIntEnum = .one\n    @objc dynamic var int32Enum: Int32Enum = .one\n    @objc dynamic var uint32Enum: UInt32Enum = .one\n    @objc dynamic var int64Enum: Int64Enum = .one\n    @objc dynamic var uint64Enum: UInt64Enum = .one\n\n    @objc dynamic var integer: Int\n    @objc dynamic var uinteger: UInt\n\n    override init() {\n        frame = CGRect(x: 0, y: 0, width: 100, height: 100)\n        point = CGPoint(x: 3, y: 5)\n        size = CGSize(width: 1, height: 2)\n\n        integer = 1\n        uinteger = 1\n        super.init()\n    }\n}\n\nfinal class HasWeakProperty: NSObject {\n    @objc dynamic weak var property: NSObject?\n\n    override init() {\n        super.init()\n    }\n}\n\n// MARK: Test key path observation\n\nextension KVOObservableTests {\n    func testKeyPathObservation_DefaultOptions() {\n        testClass = TestClass()\n        let os = testClass.rx.observe(\\.pr)\n        var latest: String?\n        var completed = false\n\n        _ = os.subscribe(\n            onNext: { latest = $0 },\n            onCompleted: { completed = true }\n        )\n\n        testClass.pr = \"1\"\n        XCTAssertEqual(latest!, \"1\")\n\n        testClass.pr = \"2\"\n        XCTAssertEqual(latest!, \"2\")\n\n        testClass.pr = nil\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n        XCTAssertEqual(latest!, \"3\")\n\n        XCTAssertFalse(completed)\n        testClass = nil\n        XCTAssertTrue(completed)\n\n        XCTAssertEqual(latest!, \"3\")\n    }\n\n    func testKeyPathObservation_NewAndInitialOptions() {\n        let testClass = TestClass()\n        let os = testClass.rx.observe(\\.pr, options: [.new, .initial])\n        var latest: String?\n\n        let d = os.subscribe(onNext: { latest = $0 })\n        testClass.pr = \"1\"\n        XCTAssertEqual(latest!, \"1\")\n\n        testClass.pr = \"2\"\n        XCTAssertEqual(latest!, \"2\")\n\n        testClass.pr = nil\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n        XCTAssertEqual(latest!, \"3\")\n\n        d.dispose()\n        testClass.pr = \"4\"\n\n        XCTAssertEqual(latest!, \"3\")\n    }\n\n    func testKeyPathObservation_NewOptions() {\n        testClass = TestClass()\n        let os = testClass.rx.observe(\\.pr, options: [.new])\n        var latest: String?\n        var completed = false\n\n        _ = os.subscribe(\n            onNext: { latest = $0 },\n            onCompleted: { completed = true }\n        )\n\n        XCTAssertNil(latest)\n\n        testClass.pr = \"1\"\n        XCTAssertEqual(latest!, \"1\")\n\n        testClass.pr = \"2\"\n        XCTAssertEqual(latest!, \"2\")\n\n        testClass.pr = nil\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n        XCTAssertEqual(latest!, \"3\")\n\n        XCTAssertFalse(completed)\n        testClass = nil\n        XCTAssertTrue(completed)\n\n        XCTAssertEqual(latest!, \"3\")\n    }\n}\n\n// MARK: Test fast observe\n\nextension KVOObservableTests {\n    func test_New() {\n        let testClass = TestClass()\n\n        let os = testClass.rx.observe(String.self, \"pr\", options: .new)\n\n        var latest: String?\n\n        let d = os.subscribe(onNext: { latest = $0 })\n\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"1\"\n\n        XCTAssertEqual(latest!, \"1\")\n\n        testClass.pr = \"2\"\n\n        XCTAssertEqual(latest!, \"2\")\n\n        testClass.pr = nil\n\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n\n        XCTAssertEqual(latest!, \"3\")\n\n        d.dispose()\n\n        testClass.pr = \"4\"\n\n        XCTAssertEqual(latest!, \"3\")\n    }\n\n    func test_New_And_Initial() {\n        let testClass = TestClass()\n\n        let os = testClass.rx.observe(String.self, \"pr\", options: [.initial, .new])\n\n        var latest: String?\n\n        let d = os.subscribe(onNext: { latest = $0 })\n\n        XCTAssertTrue(latest == \"0\")\n\n        testClass.pr = \"1\"\n\n        XCTAssertEqual(latest ?? \"\", \"1\")\n\n        testClass.pr = \"2\"\n\n        XCTAssertEqual(latest ?? \"\", \"2\")\n\n        testClass.pr = nil\n\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n\n        XCTAssertEqual(latest ?? \"\", \"3\")\n\n        d.dispose()\n\n        testClass.pr = \"4\"\n\n        XCTAssertEqual(latest ?? \"\", \"3\")\n    }\n\n    func test_Default() {\n        let testClass = TestClass()\n\n        let os = testClass.rx.observe(String.self, \"pr\")\n\n        var latest: String?\n\n        let d = os.subscribe(onNext: { latest = $0 })\n\n        XCTAssertTrue(latest == \"0\")\n\n        testClass.pr = \"1\"\n\n        XCTAssertEqual(latest!, \"1\")\n\n        testClass.pr = \"2\"\n\n        XCTAssertEqual(latest!, \"2\")\n\n        testClass.pr = nil\n\n        XCTAssertTrue(latest == nil)\n\n        testClass.pr = \"3\"\n\n        XCTAssertEqual(latest!, \"3\")\n\n        d.dispose()\n\n        testClass.pr = \"4\"\n\n        XCTAssertEqual(latest!, \"3\")\n    }\n\n    func test_ObserveAndDontRetainWorks() {\n        var latest: String?\n        var isDisposed = false\n\n        parent = Parent { n in\n            latest = n\n        }\n\n        _ = parent.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == \"\")\n        XCTAssertTrue(isDisposed == false)\n\n        parent.val = \"1\"\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        parent = nil\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == true)\n    }\n\n    func test_ObserveAndDontRetainWorks2() {\n        var latest: String?\n        var isDisposed = false\n\n        parentWithChild = ParentWithChild { n in\n            latest = n\n        }\n\n        _ = parentWithChild.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == \"\")\n        XCTAssertTrue(isDisposed == false)\n\n        parentWithChild.val = \"1\"\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        parentWithChild = nil\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == true)\n    }\n}\n\n#if !DISABLE_SWIZZLING\n// test weak observe\n\nextension KVOObservableTests {\n    func testObserveWeak_SimpleStrongProperty() {\n        var latest: String?\n        var isDisposed = false\n\n        hasStrongProperty = HasStrongProperty()\n\n        _ = hasStrongProperty.rx.observeWeakly(String.self, \"property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasStrongProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(!isDisposed)\n\n        hasStrongProperty.property = \"a\".duplicate()\n\n        XCTAssertTrue(latest == \"a\")\n        XCTAssertTrue(!isDisposed)\n\n        hasStrongProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed)\n    }\n\n    func testObserveWeak_SimpleWeakProperty() {\n        var latest: String?\n        var isDisposed = false\n\n        hasWeakProperty = HasWeakProperty()\n\n        _ = hasWeakProperty.rx.observeWeakly(String.self, \"property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasWeakProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(!isDisposed)\n\n        let a: NSString! = \"a\".duplicate()\n\n        hasWeakProperty.property = a\n\n        XCTAssertTrue(latest == \"a\")\n        XCTAssertTrue(!isDisposed)\n\n        hasWeakProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed)\n    }\n\n    func testObserveWeak_ObserveFirst_Weak_Strong_Basic() {\n        var latest: String?\n        var isDisposed = false\n\n        hasStrongProperty = HasStrongProperty()\n        hasWeakProperty = HasWeakProperty()\n\n        _ = hasWeakProperty.rx.observeWeakly(String.self, \"property.property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasWeakProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        hasWeakProperty.property = hasStrongProperty\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        let one: NSString! = \"1\".duplicate()\n\n        hasStrongProperty.property = one\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        hasWeakProperty = nil\n        hasStrongProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == true)\n    }\n\n    func testObserveWeak_Weak_Strong_Observe_Basic() {\n        var latest: String?\n        var isDisposed = false\n\n        hasStrongProperty = HasStrongProperty()\n        hasWeakProperty = HasWeakProperty()\n\n        hasWeakProperty.property = hasStrongProperty\n\n        let one: NSString! = \"1\".duplicate()\n\n        hasStrongProperty.property = one\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        _ = hasWeakProperty.rx.observeWeakly(String.self, \"property.property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasWeakProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        hasWeakProperty = nil\n        hasStrongProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == true)\n    }\n\n    func testObserveWeak_ObserveFirst_Strong_Weak_Basic() {\n        var latest: String?\n        var isDisposed = false\n\n        hasWeakProperty = HasWeakProperty()\n        hasStrongProperty = HasStrongProperty()\n\n        _ = hasStrongProperty.rx.observeWeakly(String.self, \"property.property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasStrongProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        hasStrongProperty.property = hasWeakProperty\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        let one: NSString! = \"1\".duplicate()\n\n        hasWeakProperty.property = one\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        hasStrongProperty = nil\n        hasWeakProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == true)\n    }\n\n    func testObserveWeak_Strong_Weak_Observe_Basic() {\n        var latest: String?\n        var isDisposed = false\n\n        hasWeakProperty = HasWeakProperty()\n        hasStrongProperty = HasStrongProperty()\n\n        hasStrongProperty.property = hasWeakProperty\n\n        let one: NSString! = \"1\".duplicate()\n\n        hasWeakProperty.property = one\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == false)\n\n        _ = hasStrongProperty.rx.observeWeakly(String.self, \"property.property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        _ = hasStrongProperty.rx.deallocated\n            .subscribe(onCompleted: {\n                isDisposed = true\n            })\n\n        XCTAssertTrue(latest == \"1\")\n        XCTAssertTrue(isDisposed == false)\n\n        hasStrongProperty = nil\n        hasWeakProperty = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(isDisposed == true)\n    }\n\n    // compiler won't release weak references otherwise :(\n    func _testObserveWeak_Strong_Weak_Observe_NilLastPropertyBecauseOfWeak() -> (HasWeakProperty, NSObject?, Observable<Void>) {\n        var dealloc: Observable<Void>! = nil\n        let child: HasWeakProperty! = HasWeakProperty()\n        var latest: NSObject? = nil\n\n        autoreleasepool {\n            let root: HasStrongProperty! = HasStrongProperty()\n\n            root.property = child\n\n            var one: NSObject! = nil\n\n            one = NSObject()\n\n            child.property = one\n\n            XCTAssertTrue(latest == nil)\n\n            let observable = root.rx.observeWeakly(NSObject.self, \"property.property\")\n            _ = observable\n                .subscribe(onNext: { n in\n                    latest = n\n                })\n\n            XCTAssertTrue(latest! === one)\n\n            dealloc = one.rx.deallocating\n\n            one = nil\n        }\n        return (child, latest, dealloc)\n    }\n\n    func testObserveWeak_Strong_Weak_Observe_NilLastPropertyBecauseOfWeak() {\n        var gone = false\n        let (child, latest, dealloc) = _testObserveWeak_Strong_Weak_Observe_NilLastPropertyBecauseOfWeak()\n        _ = dealloc\n            .subscribe(onNext: { _ in\n                gone = true\n            })\n\n        XCTAssertTrue(gone)\n        XCTAssertTrue(child.property == nil)\n        XCTAssertTrue(latest == nil)\n    }\n\n    func _testObserveWeak_Weak_Weak_Weak_middle_NilifyCorrectly() -> (HasWeakProperty, NSObject?, Observable<Void>) {\n        var dealloc: Observable<Void>! = nil\n        var middle: HasWeakProperty! = HasWeakProperty()\n        var latest: NSObject? = nil\n        let root: HasWeakProperty! = HasWeakProperty()\n\n        autoreleasepool {\n            middle = HasWeakProperty()\n            let leaf = HasWeakProperty()\n\n            root.property = middle\n            middle.property = leaf\n\n            XCTAssertTrue(latest == nil)\n\n            let observable = root.rx.observeWeakly(NSObject.self, \"property.property.property\")\n            _ = observable\n                .subscribe(onNext: { n in\n                    latest = n\n                })\n\n            XCTAssertTrue(latest == nil)\n\n            let one = NSObject()\n\n            leaf.property = one\n\n            XCTAssertTrue(latest === one)\n\n            dealloc = middle.rx.deallocating\n        }\n        return (root!, latest, dealloc)\n    }\n\n    func testObserveWeak_Weak_Weak_Weak_middle_NilifyCorrectly() {\n        let (root, latest, deallocatedMiddle) = _testObserveWeak_Weak_Weak_Weak_middle_NilifyCorrectly()\n\n        var gone = false\n\n        _ = deallocatedMiddle\n            .subscribe(onCompleted: {\n                gone = true\n            })\n\n        XCTAssertTrue(gone)\n        XCTAssertTrue(root.property == nil)\n        XCTAssertTrue(latest == nil)\n    }\n\n    func testObserveWeak_TargetDeallocated() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: String? = nil\n\n        root.property = \"a\".duplicate()\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(String.self, \"property\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        XCTAssertTrue(latest == \"a\")\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeakWithOptions_ObserveNotInitialValue() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: String? = nil\n\n        root.property = \"a\".duplicate()\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(String.self, \"property\", options: .new)\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        XCTAssertTrue(latest == nil)\n\n        root.property = \"b\".duplicate()\n\n        XCTAssertTrue(latest == \"b\")\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    #if os(macOS)\n    // just making sure it's all the same for NS extensions\n    func testObserve_ObserveNSRect() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: NSRect? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(NSRect.self, \"frame\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == root.frame)\n\n        root.frame = NSRect(x: -2, y: 0, width: 0, height: 1)\n\n        XCTAssertTrue(latest == NSRect(x: -2, y: 0, width: 0, height: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == NSRect(x: -2, y: 0, width: 0, height: 1))\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n    #endif\n\n    // let's just check for one, other ones should have the same check\n    func testObserve_ObserveCGRectForBiggerStructureDoesntCrashPropertyTypeReturnsNil() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGSize? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        let d = root.rx.observe(CGSize.self, \"frame\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        defer {\n            d.dispose()\n        }\n\n        XCTAssertTrue(latest == nil)\n\n        root.size = CGSize(width: 56, height: 1)\n\n        XCTAssertTrue(latest == nil)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(!rootDeallocated)\n    }\n\n    func testObserve_ObserveCGRect() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGRect? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        let d = root.rx.observe(CGRect.self, \"frame\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        defer {\n            d.dispose()\n        }\n\n        XCTAssertTrue(latest == root.frame)\n\n        root.frame = CGRect(x: -2, y: 0, width: 0, height: 1)\n\n        XCTAssertTrue(latest == CGRect(x: -2, y: 0, width: 0, height: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == CGRect(x: -2, y: 0, width: 0, height: 1))\n        XCTAssertTrue(!rootDeallocated)\n    }\n\n    func testObserve_ObserveCGSize() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGSize? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        let d = root.rx.observe(CGSize.self, \"size\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        defer {\n            d.dispose()\n        }\n\n        XCTAssertTrue(latest == root.size)\n\n        root.size = CGSize(width: 56, height: 1)\n\n        XCTAssertTrue(latest == CGSize(width: 56, height: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == CGSize(width: 56, height: 1))\n        XCTAssertTrue(!rootDeallocated)\n    }\n\n    func testObserve_ObserveCGPoint() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGPoint? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        let d = root.rx.observe(CGPoint.self, \"point\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        defer {\n            d.dispose()\n        }\n\n        XCTAssertTrue(latest == root.point)\n\n        root.point = CGPoint(x: -100, y: 1)\n\n        XCTAssertTrue(latest == CGPoint(x: -100, y: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == CGPoint(x: -100, y: 1))\n        XCTAssertTrue(!rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveCGRect() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGRect? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(CGRect.self, \"frame\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == root.frame)\n\n        root.frame = CGRect(x: -2, y: 0, width: 0, height: 1)\n\n        XCTAssertTrue(latest == CGRect(x: -2, y: 0, width: 0, height: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveCGSize() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGSize? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(CGSize.self, \"size\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == root.size)\n\n        root.size = CGSize(width: 56, height: 1)\n\n        XCTAssertTrue(latest == CGSize(width: 56, height: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveCGPoint() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: CGPoint? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(CGPoint.self, \"point\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        XCTAssertTrue(latest == root.point)\n\n        root.point = CGPoint(x: -100, y: 1)\n\n        XCTAssertTrue(latest == CGPoint(x: -100, y: 1))\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveInt() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int? = nil\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(NSNumber.self, \"integer\")\n            .subscribe(onNext: { n in\n                latest = n?.intValue\n            })\n        XCTAssertTrue(latest == root.integer)\n\n        root.integer = 10\n\n        XCTAssertTrue(latest == 10)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_PropertyDoesntExist() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var lastError: Swift.Error? = nil\n\n        _ = root.rx.observeWeakly(NSNumber.self, \"notExist\")\n            .subscribe(onError: { error in\n                lastError = error\n            })\n\n        XCTAssertTrue(lastError != nil)\n        lastError = nil\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_HierarchyPropertyDoesntExist() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var lastError: Swift.Error? = nil\n\n        _ = root.rx.observeWeakly(NSNumber.self, \"property.notExist\")\n            .subscribe(onError: { error in\n                lastError = error\n            })\n\n        XCTAssertTrue(lastError == nil)\n\n        root.property = HasStrongProperty()\n\n        XCTAssertTrue(lastError != nil)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(rootDeallocated)\n    }\n}\n#endif\n\n// MARK: KVORepresentable\n\nextension KVOObservableTests {\n    func testObserve_ObserveIntegerRepresentable() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(Int.self, \"integer\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == 1)\n\n        root.integer = 2\n\n        XCTAssertTrue(latest == 2)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == 2)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveUIntegerRepresentable() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(UInt.self, \"uinteger\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == 1)\n\n        root.uinteger = 2\n\n        XCTAssertTrue(latest == 2)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == 2)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n}\n\n#if !DISABLE_SWIZZLING\nextension KVOObservableTests {\n    func testObserveWeak_ObserveIntegerRepresentable() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(Int.self, \"integer\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        XCTAssertTrue(latest == 1)\n\n        root.integer = 2\n\n        XCTAssertTrue(latest == 2)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveUIntegerRepresentable() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(UInt.self, \"uinteger\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n\n        XCTAssertTrue(latest == 1)\n\n        root.uinteger = 2\n\n        XCTAssertTrue(latest == 2)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n}\n#endif\n\n// MARK: RawRepresentable\n\nextension KVOObservableTests {\n    func testObserve_ObserveIntEnum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: IntEnum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(IntEnum.self, \"intEnum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.intEnum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveInt32Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int32Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(Int32Enum.self, \"int32Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.int32Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveInt64Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int64Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(Int64Enum.self, \"int64Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.int64Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveUIntEnum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UIntEnum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(UIntEnum.self, \"uintEnum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uintEnum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveUInt32Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt32Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(UInt32Enum.self, \"uint32Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uint32Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n\n    func testObserve_ObserveUInt64Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt64Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        let disposable = root.rx.observe(UInt64Enum.self, \"uint64Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uint64Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == .two)\n        XCTAssertTrue(!rootDeallocated)\n\n        disposable.dispose()\n    }\n}\n\n#if !DISABLE_SWIZZLING\nextension KVOObservableTests {\n    func testObserveWeak_ObserveIntEnum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: IntEnum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(IntEnum.self, \"intEnum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.intEnum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveInt32Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int32Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(Int32Enum.self, \"int32Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.int32Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveInt64Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: Int64Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(Int64Enum.self, \"int64Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.int64Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveUIntEnum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UIntEnum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(UIntEnum.self, \"uintEnum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uintEnum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveUInt32Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt32Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(UInt32Enum.self, \"uint32Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uint32Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n\n    func testObserveWeak_ObserveUInt64Enum() {\n        var root: HasStrongProperty! = HasStrongProperty()\n\n        var latest: UInt32Enum?\n\n        XCTAssertTrue(latest == nil)\n\n        _ = root\n            .rx.observeWeakly(UInt32Enum.self, \"uint64Enum\")\n            .subscribe(onNext: { n in\n                latest = n\n            })\n        XCTAssertTrue(latest == .one)\n\n        root.uint64Enum = .two\n\n        XCTAssertTrue(latest == .two)\n\n        var rootDeallocated = false\n\n        _ = root\n            .rx.deallocated\n            .subscribe(onCompleted: {\n                rootDeallocated = true\n            })\n\n        root = nil\n\n        XCTAssertTrue(latest == nil)\n        XCTAssertTrue(rootDeallocated)\n    }\n}\n#endif\n\nextension NSString {\n    func duplicate() -> NSString {\n        NSMutableString(string: self)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSButton+RxTests.swift",
    "content": "//\n//  NSButton+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport AppKit\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class NSButtonTests: RxTest {}\n\nextension NSButtonTests {\n    func testButton_DelegateEventCompletesOnDealloc() {\n        let createView: () -> NSButton = { NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensureEventDeallocated(createView) { (view: NSButton) in view.rx.tap }\n    }\n\n    func testButton_StateCompletesOnDealloc() {\n        let createView: () -> NSButton = { NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, NSControl.StateValue.off) { (view: NSButton) in view.rx.state }\n    }\n\n    func testButton_state_observer_on() {\n        let button = NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        _ = Observable.just(NSControl.StateValue.on).bind(to: button.rx.state)\n\n        XCTAssertEqual(button.state, NSControl.StateValue.on)\n    }\n\n    func testButton_state_observer_off() {\n        let button = NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        _ = Observable.just(NSControl.StateValue.off).bind(to: button.rx.state)\n\n        XCTAssertEqual(button.state, NSControl.StateValue.off)\n    }\n\n    func testButton_multipleObservers() {\n        let button = NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        var value1: NSControl.StateValue? = nil\n        var value2: NSControl.StateValue? = nil\n\n        var numberOfTimesReceivedValue = 0\n\n        _ = Observable.just(NSControl.StateValue.off).bind(to: button.rx.state)\n        let d1 = button.rx.state.subscribe(onNext: { numberOfTimesReceivedValue += 1; value1 = $0 })\n        let d2 = button.rx.state.subscribe(onNext: { numberOfTimesReceivedValue += 1; value2 = $0 })\n        _ = Observable.just(NSControl.StateValue.on).bind(to: button.rx.state)\n\n        if let target = button.target, let action = button.action {\n            _ = target.perform(action, with: button)\n        }\n\n        XCTAssertEqual(button.state, NSControl.StateValue.on)\n        XCTAssertEqual(value1, NSControl.StateValue.on)\n        XCTAssertEqual(value2, NSControl.StateValue.on)\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 4)\n\n        d1.dispose()\n        d2.dispose()\n\n        _ = button.rx.state.subscribe(onNext: { numberOfTimesReceivedValue += 1; value1 = $0 })\n        _ = button.rx.state.subscribe(onNext: { numberOfTimesReceivedValue += 1; value2 = $0 })\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 6)\n\n        XCTAssertEqual(button.state, NSControl.StateValue.on)\n        XCTAssertEqual(value1, NSControl.StateValue.on)\n        XCTAssertEqual(value2, NSControl.StateValue.on)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSControl+RxTests.swift",
    "content": "//\n//  NSControl+RxTests.swift\n//  Tests\n//\n//  Created by mrahmiao on 1/1/16.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Cocoa\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class NSControlTests: RxTest {}\n\nextension NSControlTests {\n    func testControl_EventCompletesOnDealloc() {\n        let createView: () -> NSControl = { NSControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensureEventDeallocated(createView) { (view: NSControl) in view.rx.controlEvent }\n        ensurePropertyDeallocated(createView, \"1\") { (view: NSControl) in\n            var value = \"1\"\n            return view.rx.controlProperty(\n                getter: { _ -> String in value },\n                setter: { _, newValue in value = newValue }\n            )\n        }\n    }\n\n    func test_controlEvent() {\n        let control = NSControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var numberOfTimesReceivedValue = 0\n\n        let d1 = control.rx.controlEvent.subscribe(onNext: { numberOfTimesReceivedValue += 1 })\n        let d2 = control.rx.controlEvent.subscribe(onNext: { numberOfTimesReceivedValue += 1 })\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 0)\n\n        if let target = control.target, let action = control.action {\n            _ = target.perform(action, with: target)\n        }\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 2)\n\n        d1.dispose()\n        d2.dispose()\n\n        _ = control.rx.controlEvent.subscribe(onNext: { numberOfTimesReceivedValue += 1 })\n        _ = control.rx.controlEvent.subscribe(onNext: { numberOfTimesReceivedValue += 1 })\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 2)\n\n        if let target = control.target, let action = control.action {\n            _ = target.perform(action, with: target)\n        }\n\n        XCTAssertEqual(numberOfTimesReceivedValue, 4)\n    }\n\n    func test_controlPropertySource() {\n        let control = NSControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var receivedValues = [String]()\n\n        var value = \"\"\n\n        let property = control.rx.controlProperty(getter: { (_: NSControl) in\n            value\n        }, setter: { (_: NSControl, _) in\n            fatalError()\n        })\n\n        value = \"a\"\n\n        XCTAssertEqual(receivedValues, [])\n\n        let d1 = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n        let d2 = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\"])\n\n        value = \"b\"\n\n        if let target = control.target, let action = control.action {\n            _ = target.perform(action, with: target)\n        }\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\"])\n\n        d1.dispose()\n        d2.dispose()\n\n        _ = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n        _ = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\", \"b\", \"b\"])\n\n        value = \"c\"\n\n        if let target = control.target, let action = control.action {\n            _ = target.perform(action, with: target)\n        }\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\", \"b\", \"b\", \"c\", \"c\"])\n    }\n\n    func test_controlPropertyBindsValue() {\n        let control = NSControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var value = \"\"\n\n        let property = control.rx.controlProperty(getter: { (_: NSControl) -> String in\n            fatalError()\n        }, setter: { (_: NSControl, newValue: String) in\n            value = newValue\n        })\n\n        XCTAssertNotEqual(value, \"b\")\n        property.onNext(\"b\")\n        XCTAssertEqual(value, \"b\")\n    }\n\n    func testEnabled_False() {\n        let subject = NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        Observable.just(false).subscribe(subject.rx.isEnabled).dispose()\n\n        XCTAssertTrue(subject.isEnabled == false)\n    }\n\n    func testEnabled_True() {\n        let subject = NSButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        Observable.just(true).subscribe(subject.rx.isEnabled).dispose()\n\n        XCTAssertTrue(subject.isEnabled == true)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSLayoutConstraint+RxTests.swift",
    "content": "//\n//  NSLayoutConstraint+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n#if os(macOS)\nimport AppKit\n\ntypealias View = NSView\nlet topLayoutAttribute = NSLayoutConstraint.Attribute.top\nlet equalLayoutRelation = NSLayoutConstraint.Relation.equal\n#else\nimport UIKit\n\ntypealias View = UIView\nlet topLayoutAttribute = NSLayoutConstraint.Attribute.top\nlet equalLayoutRelation = NSLayoutConstraint.Relation.equal\n#endif\n\nfinal class NSLayoutConstraintTest: RxTest {}\n\nextension NSLayoutConstraintTest {\n    func testConstant_0() {\n        let subject = View(frame: CGRect.zero)\n        let subject2 = View(frame: CGRect.zero)\n        let constraint = NSLayoutConstraint(item: subject, attribute: topLayoutAttribute, relatedBy: equalLayoutRelation, toItem: subject2, attribute: topLayoutAttribute, multiplier: 0.5, constant: 0.5)\n        Observable.just(0).subscribe(constraint.rx.constant).dispose()\n\n        XCTAssertTrue(constraint.constant == 0.0)\n    }\n\n    func testConstant_1() {\n        let subject = View(frame: CGRect.zero)\n        let subject2 = View(frame: CGRect.zero)\n        let constraint = NSLayoutConstraint(item: subject, attribute: topLayoutAttribute, relatedBy: equalLayoutRelation, toItem: subject2, attribute: topLayoutAttribute, multiplier: 0.5, constant: 0.5)\n        Observable.just(1.0).subscribe(constraint.rx.constant).dispose()\n\n        XCTAssertTrue(constraint.constant == 1.0)\n    }\n}\n\nextension NSLayoutConstraintTest {\n    func testActive_True() {\n        let parent = View(frame: CGRect.zero)\n        let subject = View(frame: CGRect.zero)\n        let subject2 = View(frame: CGRect.zero)\n        parent.addSubview(subject)\n        parent.addSubview(subject2)\n        let constraint = NSLayoutConstraint(item: subject, attribute: topLayoutAttribute, relatedBy: equalLayoutRelation, toItem: subject2, attribute: topLayoutAttribute, multiplier: 0.5, constant: 0.5)\n        Observable.just(true).subscribe(constraint.rx.isActive).dispose()\n\n        XCTAssertTrue(constraint.isActive == true)\n    }\n\n    func testActive_False() {\n        let parent = View(frame: CGRect.zero)\n        let subject = View(frame: CGRect.zero)\n        let subject2 = View(frame: CGRect.zero)\n        parent.addSubview(subject)\n        parent.addSubview(subject2)\n        let constraint = NSLayoutConstraint(item: subject, attribute: topLayoutAttribute, relatedBy: equalLayoutRelation, toItem: subject2, attribute: topLayoutAttribute, multiplier: 0.5, constant: 0.5)\n        Observable.just(false).subscribe(constraint.rx.isActive).dispose()\n\n        XCTAssertTrue(constraint.isActive == false)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSObject+RxTests.swift",
    "content": "//\n//  NSObject+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/11/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nimport Foundation\n\nfinal class NSObjectTests: RxTest {\n    var a: NSObject!\n}\n\n// deallocated\nextension NSObjectTests {\n    func testDeallocated_ObservableFires() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a.rx\n            .deallocated\n            .map { _ in\n                1\n            }\n            .subscribe(onNext: { _ in\n                fired = true\n            })\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertTrue(fired)\n    }\n\n    func testDeallocated_ObservableCompletes() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a.rx\n            .deallocated\n            .map { _ in\n                1\n            }\n            .subscribe(onCompleted: {\n                fired = true\n            })\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertTrue(fired)\n    }\n\n    func testDeallocated_ObservableDispose() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a.rx\n            .deallocated\n            .map { _ in\n                1\n            }\n            .subscribe(onNext: { _ in\n                fired = true\n            })\n            .dispose()\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertFalse(fired)\n    }\n}\n\n#if !DISABLE_SWIZZLING\n// rx.deallocating\nextension NSObjectTests {\n    func testDeallocating_ObservableFires() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a\n            .rx.deallocating\n            .map { _ in\n                1\n            }\n            .subscribe(onNext: { _ in\n                fired = true\n            })\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertTrue(fired)\n    }\n\n    func testDeallocating_ObservableCompletes() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a\n            .rx.deallocating\n            .map { _ in\n                1\n            }\n            .subscribe(onCompleted: {\n                fired = true\n            })\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertTrue(fired)\n    }\n\n    func testDeallocating_ObservableDispose() {\n        a = NSObject()\n\n        var fired = false\n\n        _ = a\n            .rx.deallocating\n            .map { _ in\n                1\n            }\n            .subscribe(onNext: { _ in\n                fired = true\n            })\n            .dispose()\n\n        XCTAssertFalse(fired)\n\n        a = NSObject()\n\n        XCTAssertFalse(fired)\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSSlider+RxTests.swift",
    "content": "//\n//  NSSlider+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport AppKit\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class NSSliderTests: RxTest {}\n\nextension NSSliderTests {\n    func testSlider_ValueCompletesOnDealloc() {\n        let createView: () -> NSSlider = { NSSlider(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, 0.3) { (view: NSSlider) in view.rx.value }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSTextField+RxTests.swift",
    "content": "//\n//  NSTextField+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport AppKit\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class NSTextFieldTests: RxTest {}\n\nextension NSTextFieldTests {\n    func testTextField_TextCompletesOnDealloc() {\n        let createView: () -> NSTextField = { NSTextField(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, \"a\") { (view: NSTextField) in view.rx.text.orEmpty }\n    }\n\n    func testTextField_ControlTextDidChange_ForwardsToDelegates() {\n        var completed = false\n\n        autoreleasepool {\n            let textField = NSTextField()\n            let delegate = TextFieldDelegate()\n            textField.delegate = delegate\n            var rxDidChange = false\n\n            _ = textField.rx.text\n                .skip(1) // Initial value\n                .subscribe(onNext: { _ in\n                    rxDidChange = true\n                }, onCompleted: {\n                    completed = true\n                })\n\n            XCTAssertFalse(rxDidChange)\n            XCTAssertFalse(delegate.didChange)\n\n            let notification = Notification(\n                name: NSControl.textDidChangeNotification,\n                object: textField,\n                userInfo: [\"NSFieldEditor\": NSText()]\n            )\n\n            textField.delegate?.controlTextDidChange?(notification)\n\n            XCTAssertTrue(rxDidChange)\n            XCTAssertTrue(delegate.didChange)\n        }\n\n        XCTAssertTrue(completed)\n    }\n}\n\nprivate final class TextFieldDelegate: NSObject, NSTextFieldDelegate {\n    var didChange = false\n\n    func controlTextDidChange(_: Notification) {\n        didChange = true\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSTextView+RxTests.swift",
    "content": "//\n//  NSTextView+RxTests.swift\n//  Tests\n//\n//  Created by Cee on 8/5/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\nimport AppKit\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\n// final class NSTextViewTests: RxTest {\n//    static let timeout: TimeInterval = 2\n// }\n\n// extension NSTextViewTests {\n//    func testTextView_StringCompletesOnDealloc() {\n//        let createView: () -> NSTextView = { NSTextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n//        ensurePropertyDeallocated(createView, \"a\") { (view: NSTextView) in view.rx.string }\n//    }\n//\n//    func testTextView_TextDidChange_ForwardsToDelegates() {\n//        let completeExpectation = XCTestExpectation(description: \"NSTextView completion\")\n//        let strings: [String] = [\"T\", \"Te\", \"Tes\", \"Test\"]\n//        let assert: [String] = [\"\"] + strings\n//        var recorded: [String] = []\n//\n//        autoreleasepool {\n//            let textView = NSTextView()\n//            let delegate = TextViewDelegate()\n//            textView.delegate = delegate\n//\n//            _ = textView.rx.string\n//                .subscribe(onNext: { value in\n//                    recorded.append(value)\n//                }, onCompleted: {\n//                    completeExpectation.fulfill()\n//                })\n//\n//            XCTAssertEqual(delegate.numberOfChanges, 0)\n//            var numberOfChanges = 0\n//            for string in strings {\n//                textView.string = string\n//                let notification = Notification(\n//                    name: NSText.didChangeNotification,\n//                    object: textView,\n//                    userInfo: nil)\n//                XCTAssertEqual(delegate.numberOfChanges, numberOfChanges)\n//                (textView.delegate as NSTextDelegate?)?.textDidChange?(notification)\n//                numberOfChanges += 1\n//                XCTAssertEqual(delegate.numberOfChanges, numberOfChanges)\n//            }\n//        }\n//\n//        wait(for: [completeExpectation], timeout: NSTextViewTests.timeout)\n//        XCTAssertEqual(assert, recorded)\n//    }\n// }\n\n// private final class TextViewDelegate: NSObject, NSTextViewDelegate {\n//    var numberOfChanges = 0\n//\n//    func textDidChange(_ notification: Notification) {\n//        numberOfChanges = numberOfChanges + 1\n//    }\n// }\n"
  },
  {
    "path": "Tests/RxCocoaTests/NSView+RxTests.swift",
    "content": "//\n//  NSView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Cocoa\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class NSViewTests: RxTest {}\n\nextension NSViewTests {\n    func testHidden_True() {\n        let subject = NSView(frame: CGRect.zero)\n        Observable.just(true).subscribe(subject.rx.isHidden).dispose()\n\n        XCTAssertTrue(subject.isHidden == true)\n    }\n\n    func testHidden_False() {\n        let subject = NSView(frame: CGRect.zero)\n        Observable.just(false).subscribe(subject.rx.isHidden).dispose()\n\n        XCTAssertTrue(subject.isHidden == false)\n    }\n}\n\nextension NSViewTests {\n    func testAlpha_0() {\n        let subject = NSView(frame: CGRect.zero)\n        Observable.just(0).subscribe(subject.rx.alpha).dispose()\n\n        XCTAssertTrue(subject.alphaValue == 0.0)\n    }\n\n    func testAlpha_1() {\n        let subject = NSView(frame: CGRect.zero)\n        Observable.just(1).subscribe(subject.rx.alpha).dispose()\n\n        XCTAssertTrue(subject.alphaValue == 1.0)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/NotificationCenterTests.swift",
    "content": "//\n//  NotificationCenterTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/2/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nclass NSNotificationCenterTests: RxTest {\n    func testNotificationCenterWithoutObject() {\n        let notificationCenter = NotificationCenter()\n\n        var numberOfNotifications = 0\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: nil)\n\n        XCTAssertTrue(numberOfNotifications == 0)\n\n        let subscription = notificationCenter.rx.notification(Notification.Name(rawValue: \"testNotification\"), object: nil)\n            .subscribe(onNext: { _ in\n                numberOfNotifications += 1\n            })\n\n        XCTAssertTrue(numberOfNotifications == 0)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: nil)\n\n        XCTAssertTrue(numberOfNotifications == 1)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: NSObject())\n\n        XCTAssertTrue(numberOfNotifications == 2)\n\n        subscription.dispose()\n\n        XCTAssertTrue(numberOfNotifications == 2)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: nil)\n\n        XCTAssertTrue(numberOfNotifications == 2)\n    }\n\n    func testNotificationCenterWithObject() {\n        let notificationCenter = NotificationCenter()\n\n        var numberOfNotifications = 0\n\n        let targetObject = NSObject()\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: targetObject)\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: nil)\n\n        XCTAssertTrue(numberOfNotifications == 0)\n\n        let subscription = notificationCenter.rx.notification(Notification.Name(rawValue: \"testNotification\"), object: targetObject)\n            .subscribe(onNext: { _ in\n                numberOfNotifications += 1\n            })\n\n        XCTAssertTrue(numberOfNotifications == 0)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: targetObject)\n\n        XCTAssertTrue(numberOfNotifications == 1)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: nil)\n\n        XCTAssertTrue(numberOfNotifications == 1)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: NSObject())\n\n        XCTAssertTrue(numberOfNotifications == 1)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: targetObject)\n\n        XCTAssertTrue(numberOfNotifications == 2)\n\n        subscription.dispose()\n\n        XCTAssertTrue(numberOfNotifications == 2)\n\n        notificationCenter.post(name: Notification.Name(rawValue: \"testNotification\"), object: targetObject)\n\n        XCTAssertTrue(numberOfNotifications == 2)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/Observable+BindTests.swift",
    "content": "//\n//  Observable+BindTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/11/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class ObservableBindTest: RxTest {}\n\n// MARK: bind(to:) observer\n\nextension ObservableBindTest {\n    func testBindToObserver() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let observer: AnyObserver<Int> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: observer)\n\n        XCTAssertEqual(events, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToObservers() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let observer1: AnyObserver<Int> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToOptionalObserver() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: observer)\n\n        XCTAssertEqual(events[0].value.element!, 1)\n        guard case .completed = events[1].value else {\n            XCTFail(\"Not completed\")\n            return\n        }\n    }\n\n    func testBindToOptionalObservers() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let observer1: AnyObserver<Int?> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int?> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testBindToOptionalObserverNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: observer)\n\n        XCTAssertEqual(events[0].value.element!, 1)\n        guard case .completed = events[1].value else {\n            XCTFail(\"Not completed\")\n            return\n        }\n    }\n}\n\n// MARK: bind(to:) curried\n\nextension ObservableBindTest {\n    func testBindToCurried1() {\n        var result: Int? = nil\n        let binder: (Observable<Int>) -> Disposable = { obs in\n            obs.subscribe(onNext: { element in\n                result = element\n            })\n        }\n\n        XCTAssertNil(result)\n\n        let d: Disposable = Observable.just(1).bind(to: binder)\n\n        XCTAssertEqual(result, 1)\n        d.dispose()\n    }\n\n    func testBindToCurried2() {\n        var result: Int? = nil\n        let binder: (Observable<Int>) -> (Int) -> Disposable = { obs in\n            { other in\n                obs.subscribe(onNext: { element in\n                    result = element + other\n                })\n            }\n        }\n\n        XCTAssertNil(result)\n\n        let d: Disposable = Observable.just(1).bind(to: binder)(3)\n\n        XCTAssertEqual(result, 4)\n        d.dispose()\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/ObservableConvertibleType+SharedSequence.swift",
    "content": "//\n//  ObservableConvertibleType+SharedSequence.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/1/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableConvertibleSharedSequenceTests: SharedSequenceTest {}\n\nextension ObservableConvertibleSharedSequenceTests {\n    func testAsSharedSequence_onErrorJustReturn() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let sharedSequence: Signal<Int> = hotObservable.asSharedSequence(onErrorJustReturn: -1)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(sharedSequence) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsSharedSequence_onErrorDriveWith() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let sharedSequence: Signal<Int> = hotObservable.asSharedSequence(onErrorDriveWith: .just(-2))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(sharedSequence) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -2])\n    }\n\n    func testAsSharedSequence_onErrorRecover() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let sharedSequence: Signal<Int> = hotObservable.asSharedSequence(onErrorRecover: { _ -> Signal<Int> in\n            return .just(-3)\n        })\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(sharedSequence) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -3])\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/RXObjCRuntime+Testing.h",
    "content": "//\n//  RXObjCRuntime+Testing.h\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import <RxCocoa/RxCocoa.h>\n\n#if TRACE_RESOURCES\nNSInteger RX_number_of_dynamic_subclasses(void);\nNSInteger RX_number_of_forwarding_enabled_classes(void);\nNSInteger RX_number_of_intercepting_classes(void);\nNSInteger RX_number_of_forwarded_methods(void);\nNSInteger RX_number_of_swizzled_methods(void);\n#endif\n\n@protocol SentMessageTestClassCreationProtocol<NSObject>\n+(instancetype __nonnull)createInstance;\n\n@property (nonatomic, copy) void (^ __nonnull invokedMethod)(void);\n@end\n\n@interface RXObjCTestRuntime : NSObject\n\n+(id __nonnull)castClosure:(void (^ __nonnull)(void))closure;\n+(BOOL)isForwardingIMP:(IMP __nullable)implementation;\n+(Class __nonnull)objCClass:(id __nonnull)target;\n\n@end\n\n@interface _TestSendMessage : NSObject\n\n@end\n\n@interface Arguments:  NSObject\n\n@property(nonatomic, copy, readonly, nonnull) NSArray *values;\n\n+(instancetype __nonnull)argumentsWithValues:(NSArray* __nonnull)values;\n\n@end\n\ntypedef struct some_insanely_large_struct {\n    int a[8];\n    const char * __nullable some_large_text; //:)\n    struct some_insanely_large_struct * __nullable next;\n} some_insanely_large_struct_t;\n\n#define _DECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(testName, baseContent, subclassContent)                                                         \\\n/*##########################################################################################################################################*/ \\\n@interface SentMessageTestBase_ ## testName : NSObject<SentMessageTestClassCreationProtocol> { }                                               \\\n                                                                                                                                               \\\n@property (nonatomic, strong, readonly) NSArray<Arguments *> * __nonnull baseMessages;                                                         \\\n@property (nonatomic, copy) void (^ __nonnull invokedMethod)(void);                                                                                \\\n                                                                                                                                               \\\n-(void)voidJustCalledVoidToSay;                                                                                                                \\\n                                                                                                                                               \\\n-(id __nonnull)justCalledObjectToSay:(id __nonnull)value;                                                                                      \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value;                                                                                          \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value object:(id __nonnull)value1;                                                              \\\n                                                                                                                                               \\\n-(Class __nonnull)justCalledClassToSay:(Class __nonnull)value;                                                                                 \\\n                                                                                                                                               \\\n-(void)voidJustCalledClassToSay:(Class __nonnull)value;                                                                                        \\\n                                                                                                                                               \\\n-(void (^ __nonnull)(void) )justCalledClosureToSay:(void (^ __nonnull)(void))value;                                                                    \\\n                                                                                                                                               \\\n-(void)voidJustCalledClosureToSay:(void (^ __nonnull)(void))value;                                                                                 \\\n                                                                                                                                               \\\n-(char)justCalledCharToSay:(char)value;                                                                                                        \\\n                                                                                                                                               \\\n-(void)voidJustCalledCharToSay:(char)value;                                                                                                    \\\n                                                                                                                                               \\\n-(short)justCalledShortToSay:(short)value;                                                                                                     \\\n                                                                                                                                               \\\n-(void)voidJustCalledShortToSay:(short)value;                                                                                                  \\\n                                                                                                                                               \\\n-(int)justCalledIntToSay:(int)value;                                                                                                           \\\n                                                                                                                                               \\\n-(void)voidJustCalledIntToSay:(int)value;                                                                                                      \\\n                                                                                                                                               \\\n-(long)justCalledLongToSay:(long)value;                                                                                                        \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongToSay:(long)value;                                                                                                    \\\n                                                                                                                                               \\\n-(long long)justCalledLongLongToSay:(long long)value;                                                                                          \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongLongToSay:(long long)value;                                                                                           \\\n                                                                                                                                               \\\n-(unsigned char)justCalledUnsignedCharToSay:(unsigned char)value;                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedCharToSay:(unsigned char)value;                                                                                   \\\n                                                                                                                                               \\\n-(unsigned short)justCalledUnsignedShortToSay:(unsigned short)value;                                                                           \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedShortToSay:(unsigned short)value;                                                                                 \\\n                                                                                                                                               \\\n-(unsigned int)justCalledUnsignedIntToSay:(unsigned int)value;                                                                                 \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedIntToSay:(unsigned int)value;                                                                                     \\\n                                                                                                                                               \\\n-(unsigned long)justCalledUnsignedLongToSay:(unsigned long)value;                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongToSay:(unsigned long)value;                                                                                   \\\n                                                                                                                                               \\\n-(unsigned long long)justCalledUnsignedLongLongToSay:(unsigned long long)value;                                                                \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongLongToSay:(unsigned long long)value;                                                                          \\\n                                                                                                                                               \\\n-(float)justCalledFloatToSay:(float)value;                                                                                                     \\\n                                                                                                                                               \\\n-(void)voidJustCalledFloatToSay:(float)value;                                                                                                  \\\n                                                                                                                                               \\\n-(double)justCalledDoubleToSay:(double)value;                                                                                                  \\\n                                                                                                                                               \\\n-(void)voidJustCalledDoubleToSay:(double)value;                                                                                                \\\n                                                                                                                                               \\\n-(BOOL)justCalledBoolToSay:(BOOL)value;                                                                                                        \\\n                                                                                                                                               \\\n-(void)voidJustCalledBoolToSay:(BOOL)value;                                                                                                    \\\n                                                                                                                                               \\\n-(NSInteger)justCalledLargeToSay:(some_insanely_large_struct_t)value;                                                                          \\\n                                                                                                                                               \\\n-(void)voidJustCalledLargeToSay:(some_insanely_large_struct_t)value;                                                                           \\\n                                                                                                                                               \\\n-(const char * __nonnull)justCalledConstCharToSay:(const char * __nonnull)value;                                                               \\\n                                                                                                                                               \\\n-(void)voidJustCalledConstCharToSay:(const char * __nonnull)value;                                                                             \\\n                                                                                                                                               \\\n-(NSInteger)message_allSupportedParameters:(id __nullable)p1                                                                                   \\\n                                        p2:(Class __nullable)p2                                                                                \\\n                                        p3:(int32_t (^ __nullable)(int32_t))p3                                                                 \\\n                                        p4:(int8_t)p4                                                                                          \\\n                                        p5:(int16_t)p5                                                                                         \\\n                                        p6:(int32_t)p6                                                                                         \\\n                                        p7:(int64_t)p7                                                                                         \\\n                                        p8:(uint8_t)p8                                                                                         \\\n                                        p9:(uint16_t)p9                                                                                        \\\n                                        p10:(uint32_t)p10                                                                                      \\\n                                        p11:(uint64_t)p11                                                                                      \\\n                                        p12:(float)p12                                                                                         \\\n                                        p13:(double)p13                                                                                        \\\n                                        p14:(const int8_t * __nullable)p14                                                                     \\\n                                        p15:(int8_t * __nullable)p15                                                                           \\\n                                        p16:(some_insanely_large_struct_t)p16;                                                                 \\\n                                                                                                                                               \\\n-(some_insanely_large_struct_t)hugeResult;                                                                                                     \\\n                                                                                                                                               \\\nbaseContent                                                                                                                                    \\\n@end                                                                                                                                           \\\n                                                                                                                                               \\\n@interface SentMessageTest_ ## testName : SentMessageTestBase_ ## testName<SentMessageTestClassCreationProtocol> { }                           \\\n                                                                                                                                               \\\n@property (nonatomic, strong, readonly) NSArray<Arguments *> * __nonnull messages;                                                             \\\n                                                                                                                                               \\\nsubclassContent                                                                                                                                \\\n@end\n\n#define DECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(testName) _DECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(testName,,)\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(shared)\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(forwarding_basic)\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(interact_forwarding)\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_void)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_id)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_closure)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_int)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_long)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_char)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_id_id)\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc2)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_base)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_subclass)\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_base_subclass)\n\n_DECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_int_base, -(void)optimized:(id __nonnull)target;, )\n\nDECLARE_OBSERVING_CLASS_PAIR_FOR_TEST(all_supported_types)\n\n@interface SentMessageTest_shared_mock_interceptor : SentMessageTest_shared\n@end\n"
  },
  {
    "path": "Tests/RxCocoaTests/RXObjCRuntime+Testing.m",
    "content": "//\n//  RXObjCRuntime+Testing.m\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"RXObjCRuntime+Testing.h\"\n#import <objc/runtime.h>\n#import <objc/message.h>\n\nstatic int32_t (^defaultImpl)(int32_t) = ^int32_t(int32_t a) {\n    return 0;\n};\n\n#define A(...) [Arguments argumentsWithValues:@[__VA_ARGS__]]\n\n@implementation RXObjCTestRuntime\n\n+(id)castClosure:(void (^)(void))closure {\n    return closure;\n}\n\n+(BOOL)isForwardingIMP:(IMP __nullable)implementation {\n    return implementation == _objc_msgForward;\n}\n\n+(Class __nonnull)objCClass:(id __nonnull)target {\n    return [target class];\n}\n\n@end\n\n@implementation _TestSendMessage\n\n-(void)forwardInvocation:(NSInvocation *)anInvocation {\n    [super forwardInvocation:anInvocation];\n}\n\n-(BOOL)respondsToSelector:(SEL)aSelector {\n    return [super respondsToSelector:aSelector];\n}\n\n-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector {\n    return [super methodSignatureForSelector:aSelector];\n}\n\n-(void)first:(NSInteger)integer second:(NSInteger)second third:(float)third {\n    \n}\n\n@end\n\n\n#define IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(testName) _IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(testName,,)\n#define _IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(testName, baseClassContent, subclassContent)                                                  \\\n/*##########################################################################################################################################*/ \\\n@interface SentMessageTestBase_ ## testName ()                                                                                                 \\\n@property (nonatomic, strong) NSMutableArray<Arguments *> *privateBaseMessages;                                                                \\\n@end                                                                                                                                           \\\n                                                                                                                                               \\\n@implementation SentMessageTestBase_ ## testName                                                                                               \\\n                                                                                                                                               \\\n-(NSArray *)baseMessages {                                                                                                                     \\\n    return self.privateBaseMessages;                                                                                                           \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(instancetype)init {                                                                                                                          \\\n    self = [super init];                                                                                                                       \\\n    if (!self) return nil;                                                                                                                     \\\n                                                                                                                                               \\\n    self.privateBaseMessages = [[NSMutableArray alloc] init];                                                                                  \\\n                                                                                                                                               \\\n    return self;                                                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n+(instancetype)createInstance {                                                                                                                \\\n    return [[self alloc] init];                                                                                                                \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledVoidToSay {                                                                                                               \\\n    [self.privateBaseMessages addObject:A()];                                                                                                  \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(id __nonnull)justCalledObjectToSay:(id __nonnull)value {                                                                                     \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value {                                                                                         \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value object:(id __nonnull)value1 {                                                             \\\n    [self.privateBaseMessages addObject:A(value, value1)];                                                                                     \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(Class __nonnull)justCalledClassToSay:(Class __nonnull)value {                                                                                \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledClassToSay:(Class __nonnull)value {                                                                                       \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void (^ __nonnull)(void) )justCalledClosureToSay:(void (^ __nonnull)(void))value {                                                                   \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledClosureToSay:(void (^ __nonnull)(void))value {                                                                                \\\n    [self.privateBaseMessages addObject:A(value)];                                                                                             \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(char)justCalledCharToSay:(char)value {                                                                                                       \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledCharToSay:(char)value {                                                                                                   \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(short)justCalledShortToSay:(short)value {                                                                                                    \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledShortToSay:(short)value {                                                                                                 \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(int)justCalledIntToSay:(int)value {                                                                                                          \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledIntToSay:(int)value {                                                                                                     \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(long)justCalledLongToSay:(long)value {                                                                                                       \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongToSay:(long)value {                                                                                                   \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(long long)justCalledLongLongToSay:(long long)value {                                                                                         \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongLongToSay:(long long)value {                                                                                          \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned char)justCalledUnsignedCharToSay:(unsigned char)value {                                                                             \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedCharToSay:(unsigned char)value {                                                                                  \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned short)justCalledUnsignedShortToSay:(unsigned short)value {                                                                          \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedShortToSay:(unsigned short)value {                                                                                \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned int)justCalledUnsignedIntToSay:(unsigned int)value {                                                                                \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedIntToSay:(unsigned int)value {                                                                                    \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned long)justCalledUnsignedLongToSay:(unsigned long)value {                                                                             \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongToSay:(unsigned long)value {                                                                                  \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned long long)justCalledUnsignedLongLongToSay:(unsigned long long)value {                                                               \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongLongToSay:(unsigned long long)value {                                                                         \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(float)justCalledFloatToSay:(float)value {                                                                                                    \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledFloatToSay:(float)value {                                                                                                 \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(double)justCalledDoubleToSay:(double)value {                                                                                                 \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledDoubleToSay:(double)value {                                                                                               \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(BOOL)justCalledBoolToSay:(BOOL)value {                                                                                                       \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledBoolToSay:(BOOL)value {                                                                                                   \\\n    [self.privateBaseMessages addObject:A(@(value))];                                                                                          \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(const char * __nonnull)justCalledConstCharToSay:(const char * __nonnull)value {                                                              \\\n    [self.privateBaseMessages addObject:A([NSValue valueWithPointer:value])];                                                                  \\\n    self.invokedMethod();                                                                                                                      \\\n    return value;                                                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledConstCharToSay:(const char * __nonnull)value {                                                                            \\\n    [self.privateBaseMessages addObject:A([NSValue valueWithPointer:value])];                                                                  \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(NSInteger)justCalledLargeToSay:(some_insanely_large_struct_t)value {                                                                         \\\n    [self.privateBaseMessages addObject:A([NSValue valueWithBytes:&value                                                                       \\\n                                                                        objCType:@encode(some_insanely_large_struct_t)])];                     \\\n    self.invokedMethod();                                                                                                                      \\\n    return value.a[0] + value.a[1] + value.a[2] + value.a[3] + value.a[4] + value.a[5] + value.a[6] + value.a[7];                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLargeToSay:(some_insanely_large_struct_t)value {                                                                          \\\n    [self.privateBaseMessages addObject:A([NSValue valueWithBytes:&value                                                                       \\\n                                                      objCType:@encode(some_insanely_large_struct_t)])];                                       \\\n    self.invokedMethod();                                                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(NSInteger)message_allSupportedParameters:(id __nullable)p1                                                                                   \\\n                                        p2:(Class __nullable)p2                                                                                \\\n                                        p3:(int32_t (^ __nullable)(int32_t))p3                                                                 \\\n                                        p4:(int8_t)p4                                                                                          \\\n                                        p5:(int16_t)p5                                                                                         \\\n                                        p6:(int32_t)p6                                                                                         \\\n                                        p7:(int64_t)p7                                                                                         \\\n                                        p8:(uint8_t)p8                                                                                         \\\n                                        p9:(uint16_t)p9                                                                                        \\\n                                       p10:(uint32_t)p10                                                                                       \\\n                                       p11:(uint64_t)p11                                                                                       \\\n                                       p12:(float)p12                                                                                          \\\n                                       p13:(double)p13                                                                                         \\\n                                       p14:(const int8_t * __nullable)p14                                                                      \\\n                                       p15:(int8_t * __nullable)p15                                                                            \\\n                                       p16:(some_insanely_large_struct_t)p16 {                                                                 \\\n    [self.privateBaseMessages addObject:A(                                                                                                     \\\n        p1,                                                                                                                   \\\n        p2,                                                                                                                   \\\n        p3 ?: defaultImpl,                                                                                                                     \\\n        @(p4),                                                                                                                                 \\\n        @(p5),                                                                                                                                 \\\n        @(p6),                                                                                                                                 \\\n        @(p7),                                                                                                                                 \\\n        @(p8),                                                                                                                                 \\\n        @(p9),                                                                                                                                 \\\n        @(p10),                                                                                                                                \\\n        @(p11),                                                                                                                                \\\n        @(p12),                                                                                                                                \\\n        @(p13),                                                                                                                                \\\n        [NSValue valueWithPointer:p14],                                                                                                        \\\n        [NSValue valueWithPointer:p15],                                                                                                        \\\n        [NSValue valueWithBytes:&p16 objCType:@encode(some_insanely_large_struct_t)],                                                          \\\n    )];                                                                                                                                        \\\n    self.invokedMethod();                                                                                                                      \\\n    return -5;                                                                                                                                 \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n                                                                                                                                               \\\n-(some_insanely_large_struct_t)hugeResult {                                                                                                    \\\n    some_insanely_large_struct_t huge = {};                                                                                                    \\\n    self.invokedMethod();                                                                                                                      \\\n    return huge;                                                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\nbaseClassContent                                                                                                                               \\\n@end                                                                                                                                           \\\n                                                                                                                                               \\\n@interface SentMessageTest_ ## testName ()                                                                                                     \\\n@property (nonatomic, strong) NSMutableArray<Arguments *> *privateMessages;                                                                    \\\n@end                                                                                                                                           \\\n                                                                                                                                               \\\n@implementation SentMessageTest_ ## testName                                                                                                   \\\n                                                                                                                                               \\\n-(NSArray *)messages {                                                                                                                         \\\n    return self.privateMessages;                                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(instancetype)init {                                                                                                                          \\\n    self = [super init];                                                                                                                       \\\n    if (!self) return nil;                                                                                                                     \\\n                                                                                                                                               \\\n    self.privateMessages = [[NSMutableArray alloc] init];                                                                                      \\\n                                                                                                                                               \\\n    return self;                                                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledVoidToSay {                                                                                                               \\\n    [self.privateMessages addObject:A()];                                                                                                      \\\n    return [super voidJustCalledVoidToSay];                                                                                                    \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(id __nonnull)justCalledObjectToSay:(id __nonnull)value {                                                                                     \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super justCalledObjectToSay:value];                                                                                                \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value {                                                                                         \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super voidJustCalledObjectToSay:value];                                                                                            \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledObjectToSay:(id __nonnull)value object:(id __nonnull)value1 {                                                             \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super voidJustCalledObjectToSay:value object:value1];                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(Class __nonnull)justCalledClassToSay:(Class __nonnull)value {                                                                                \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super justCalledClassToSay:value];                                                                                                 \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledClassToSay:(Class __nonnull)value {                                                                                       \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super voidJustCalledClassToSay:value];                                                                                             \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void (^ __nonnull)(void) )justCalledClosureToSay:(void (^ __nonnull)(void))value {                                                                   \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super justCalledClosureToSay:value];                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledClosureToSay:(void (^ __nonnull)(void))value {                                                                                \\\n    [self.privateMessages addObject:A(value)];                                                                                                 \\\n    return [super voidJustCalledClosureToSay:value];                                                                                           \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(char)justCalledCharToSay:(char)value {                                                                                                       \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledCharToSay:value];                                                                                                  \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledCharToSay:(char)value {                                                                                                   \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledCharToSay:value];                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(short)justCalledShortToSay:(short)value {                                                                                                    \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledShortToSay:value];                                                                                                 \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledShortToSay:(short)value {                                                                                                 \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledShortToSay:value];                                                                                             \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(int)justCalledIntToSay:(int)value {                                                                                                          \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledIntToSay:value];                                                                                                   \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledIntToSay:(int)value {                                                                                                     \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledIntToSay:value];                                                                                               \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(long)justCalledLongToSay:(long)value {                                                                                                       \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledLongToSay:value];                                                                                                  \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongToSay:(long)value {                                                                                                   \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledLongToSay:value];                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(long long)justCalledLongLongToSay:(long long)value {                                                                                         \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledLongLongToSay:value];                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLongLongToSay:(long long)value {                                                                                          \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledLongLongToSay:value];                                                                                          \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned char)justCalledUnsignedCharToSay:(unsigned char)value {                                                                             \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledUnsignedCharToSay:value];                                                                                          \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedCharToSay:(unsigned char)value {                                                                                  \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledUnsignedCharToSay:value];                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned short)justCalledUnsignedShortToSay:(unsigned short)value {                                                                          \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledUnsignedShortToSay:value];                                                                                         \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedShortToSay:(unsigned short)value {                                                                                \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledUnsignedShortToSay:value];                                                                                     \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned int)justCalledUnsignedIntToSay:(unsigned int)value {                                                                                \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledUnsignedIntToSay:value];                                                                                           \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedIntToSay:(unsigned int)value {                                                                                    \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledUnsignedIntToSay:value];                                                                                       \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned long)justCalledUnsignedLongToSay:(unsigned long)value {                                                                             \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledUnsignedLongToSay:value];                                                                                          \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongToSay:(unsigned long)value {                                                                                  \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledUnsignedLongToSay:value];                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(unsigned long long)justCalledUnsignedLongLongToSay:(unsigned long long)value {                                                               \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledUnsignedLongLongToSay:value];                                                                                      \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledUnsignedLongLongToSay:(unsigned long long)value {                                                                         \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledUnsignedLongLongToSay:value];                                                                                  \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(float)justCalledFloatToSay:(float)value {                                                                                                    \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledFloatToSay:value];                                                                                                 \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledFloatToSay:(float)value {                                                                                                 \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledFloatToSay:value];                                                                                             \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(double)justCalledDoubleToSay:(double)value {                                                                                                 \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledDoubleToSay:value];                                                                                                \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledDoubleToSay:(double)value {                                                                                               \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledDoubleToSay:value];                                                                                            \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(BOOL)justCalledBoolToSay:(BOOL)value {                                                                                                       \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super justCalledBoolToSay:value];                                                                                                  \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledBoolToSay:(BOOL)value {                                                                                                   \\\n    [self.privateMessages addObject:A(@(value))];                                                                                              \\\n    return [super voidJustCalledBoolToSay:value];                                                                                              \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(const char * __nonnull)justCalledConstCharToSay:(const char * __nonnull)value {                                                              \\\n    [self.privateMessages addObject:A([NSValue valueWithPointer:value])];                                                                      \\\n    return [super justCalledConstCharToSay:value];                                                                                             \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledConstCharToSay:(const char * __nonnull)value {                                                                            \\\n    [self.privateMessages addObject:A([NSValue valueWithPointer:value])];                                                                      \\\n    return [super voidJustCalledConstCharToSay:value];                                                                                         \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(NSInteger)justCalledLargeToSay:(some_insanely_large_struct_t)value {                                                                         \\\n    [self.privateMessages addObject:A([NSValue valueWithBytes:&value objCType:@encode(some_insanely_large_struct_t)])];                        \\\n    return [super justCalledLargeToSay:value];                                                                                                 \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(void)voidJustCalledLargeToSay:(some_insanely_large_struct_t)value {                                                                          \\\n    [self.privateMessages addObject:A([NSValue valueWithBytes:&value objCType:@encode(some_insanely_large_struct_t)])];                        \\\n    return [super voidJustCalledLargeToSay:value];                                                                                             \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\n-(NSInteger)message_allSupportedParameters:(id __nullable)p1                                                                                   \\\n                                        p2:(Class __nullable)p2                                                                                \\\n                                        p3:(int32_t (^ __nullable)(int32_t))p3                                                                 \\\n                                        p4:(int8_t)p4                                                                                          \\\n                                        p5:(int16_t)p5                                                                                         \\\n                                        p6:(int32_t)p6                                                                                         \\\n                                        p7:(int64_t)p7                                                                                         \\\n                                        p8:(uint8_t)p8                                                                                         \\\n                                        p9:(uint16_t)p9                                                                                        \\\n                                       p10:(uint32_t)p10                                                                                       \\\n                                       p11:(uint64_t)p11                                                                                       \\\n                                       p12:(float)p12                                                                                          \\\n                                       p13:(double)p13                                                                                         \\\n                                       p14:(const int8_t * __nullable)p14                                                                      \\\n                                       p15:(int8_t * __nullable)p15                                                                            \\\n                                       p16:(some_insanely_large_struct_t)p16 {                                                                 \\\n    [self.privateMessages addObject:A(                                                                                                             \\\n        p1,                                                                                                                                    \\\n        p2,                                                                                                                               \\\n        p3 ?: defaultImpl,                                                                                                                     \\\n        @(p4),                                                                                                                                 \\\n        @(p5),                                                                                                                                 \\\n        @(p6),                                                                                                                                 \\\n        @(p7),                                                                                                                                 \\\n        @(p8),                                                                                                                                 \\\n        @(p9),                                                                                                                                 \\\n        @(p10),                                                                                                                                \\\n        @(p11),                                                                                                                                \\\n        @(p12),                                                                                                                                \\\n        @(p13),                                                                                                                                \\\n        [NSValue valueWithPointer:p14],                                                                                                        \\\n        [NSValue valueWithPointer:p15],                                                                                                        \\\n        [NSValue valueWithBytes:&p16 objCType:@encode(some_insanely_large_struct_t)],                                                          \\\n    )];                                                                                                                                        \\\n    return [super message_allSupportedParameters:p1                                                                                            \\\n                                              p2:p2                                                                                            \\\n                                              p3:p3                                                                                            \\\n                                              p4:p4                                                                                            \\\n                                              p5:p5                                                                                            \\\n                                              p6:p6                                                                                            \\\n                                              p7:p7                                                                                            \\\n                                              p8:p8                                                                                            \\\n                                              p9:p9                                                                                            \\\n                                             p10:p10                                                                                           \\\n                                             p11:p11                                                                                           \\\n                                             p12:p12                                                                                           \\\n                                             p13:p13                                                                                           \\\n                                             p14:p14                                                                                           \\\n                                             p15:p15                                                                                           \\\n                                             p16:p16];                                                                                         \\\n}                                                                                                                                              \\\n                                                                                                                                               \\\nsubclassContent                                                                                                                                \\\n@end\n\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(shared)\n\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(forwarding_basic)\n\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(interact_forwarding)\n\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_void)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_id)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_closure)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_int)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_long)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_char)\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_id_id)\n\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc,,)\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc2,,)\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_base, -(void)dealloc { rand(); }, )\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_subclass, , -(void)dealloc { rand(); })\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(dealloc_base_subclass, -(void)dealloc { rand(); }, -(void)dealloc { rand(); })\n\n_IMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(optimized_int_base, -(void)optimized:(id)target { rand(); }, )\n\nIMPLEMENT_OBSERVING_CLASS_PAIR_FOR_TEST(all_supported_types)\n\n\n@implementation SentMessageTest_shared_mock_interceptor\n\n-(Class __nonnull)class {\n    return SentMessageTest_shared.class;\n}\n\n@end\n\n@implementation Arguments\n\n+(instancetype)argumentsWithValues:(NSArray *)values {\n    Arguments *arguments = [[Arguments alloc] init];\n\n    arguments->_values = [values copy];\n\n    return arguments;\n}\n\n-(BOOL)isEqual:(Arguments *)object {\n    if (object == self) {\n        YES;\n    }\n\n    if (object == nil) {\n        NO;\n    }\n\n    if ([self class] != [object class]) {\n        NO;\n    }\n\n    return [self.values isEqualToArray:object.values];\n}\n\n@end\n"
  },
  {
    "path": "Tests/RxCocoaTests/RuntimeStateSnapshot.swift",
    "content": "//\n//  RuntimeStateSnapshot.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nfinal class ObjectRuntimeState {\n    let real: ClassRuntimeState\n    let actingAs: ClassRuntimeState\n\n    init(target: AnyObject) {\n        assert(object_getClass(target)!.isSubclass(of: type(of: target)))\n        real = ClassRuntimeState(object_getClass(target)!)\n        actingAs = ClassRuntimeState(RXObjCTestRuntime.objCClass(target))\n    }\n\n    private static func changesFrom(_ from: ClassRuntimeState, to: ClassRuntimeState) -> [ObjectRuntimeChange] {\n        if from.targetClass == to.targetClass {\n            var changes = [ObjectRuntimeChange]()\n            for (selector, implementation) in to.implementations {\n                if let originalImplementation = from.implementations[selector] {\n                    if originalImplementation != implementation {\n                        if RXObjCTestRuntime.isForwardingIMP(implementation) {\n                            changes.append(.implementationChangedToForwarding(forSelector: selector))\n                        } else {\n                            changes.append(.implementationChanged(forSelector: selector))\n                        }\n                    }\n                } else {\n                    if RXObjCTestRuntime.isForwardingIMP(implementation) {\n                        changes.append(.forwardImplementationAdded(forSelector: selector))\n                    } else {\n                        changes.append(.implementationAdded(forSelector: selector))\n                    }\n                }\n            }\n\n            for (oldSelector, _) in from.implementations {\n                if to.implementations[oldSelector] == nil {\n                    changes.append(.implementationDeleted(forSelector: oldSelector))\n                }\n            }\n            return changes\n        } else {\n            return [.classChanged(from: NSStringFromClass(from.targetClass), to: NSStringFromClass(to.targetClass), andImplementsTheseSelectors: Array(to.implementations.keys))]\n        }\n    }\n\n    func changesFrom(_ initialState: ObjectRuntimeState) -> (real: [ObjectRuntimeChange], actingAs: [ObjectRuntimeChange]) {\n        (\n            real: ObjectRuntimeState.changesFrom(initialState.real, to: real),\n            actingAs: ObjectRuntimeState.changesFrom(initialState.actingAs, to: actingAs)\n        )\n    }\n\n    func assertChangesFrom(_ initialState: ObjectRuntimeState, expectedActingClassChanges: [ObjectRuntimeChange], expectedRealClassChanges: [ObjectRuntimeChange]) {\n        let changes = changesFrom(initialState)\n        XCTAssertEqual(Set(changes.actingAs), Set(expectedActingClassChanges))\n        if Set(changes.actingAs) != Set(expectedActingClassChanges) {\n            print(\"Changes in actingAs class\\nreal:\\n\\(changes.actingAs)\\nexpected:\\n\\(expectedActingClassChanges)\\n\\n\")\n        }\n        XCTAssertEqual(Set(changes.real), Set(expectedRealClassChanges))\n        if Set(changes.real) != Set(expectedRealClassChanges) {\n            print(\"Changes in actual class\\nreal:\\n\\(changes.real)\\nexpected:\\n\\(expectedRealClassChanges)\\n\\n\")\n        }\n    }\n}\n\nenum ObjectRuntimeChange: Hashable {\n    static func ClassChangedToDynamic(_ from: String, andImplementsTheseSelectors: [Selector]) -> ObjectRuntimeChange {\n        .classChanged(from: from, to: \"_RX_namespace_\" + from, andImplementsTheseSelectors: andImplementsTheseSelectors)\n    }\n\n    case classChanged(from: String, to: String, andImplementsTheseSelectors: [Selector])\n    case implementationChanged(forSelector: Selector)\n    case implementationChangedToForwarding(forSelector: Selector)\n    case implementationAdded(forSelector: Selector)\n    case implementationDeleted(forSelector: Selector)\n    case forwardImplementationAdded(forSelector: Selector)\n}\n\nextension ObjectRuntimeChange {\n    func hash(into hasher: inout Hasher) {\n        // who cares, this is not performance critical\n        hasher.combine(0)\n    }\n\n    var isClassChange: Bool {\n        if case .classChanged = self {\n            return true\n        }\n\n        return false\n    }\n}\n\nfunc == (lhs: ObjectRuntimeChange, rhs: ObjectRuntimeChange) -> Bool {\n    switch (lhs, rhs) {\n    case let (.classChanged(lFrom, lTo, lImplementations), .classChanged(rFrom, rTo, rImplementations)):\n        (lFrom == rFrom && lTo == rTo) && Set(lImplementations) == Set(rImplementations)\n    case let (.implementationChanged(lSelector), .implementationChanged(rSelector)):\n        lSelector == rSelector\n    case let (.implementationChangedToForwarding(lSelector), .implementationChangedToForwarding(rSelector)):\n        lSelector == rSelector\n    case let (.implementationAdded(lSelector), .implementationAdded(rSelector)):\n        lSelector == rSelector\n    case let (.implementationDeleted(lSelector), .implementationDeleted(rSelector)):\n        lSelector == rSelector\n    case let (.forwardImplementationAdded(lSelector), .forwardImplementationAdded(rSelector)):\n        lSelector == rSelector\n    default:\n        false\n    }\n}\n\nextension Sequence where Iterator.Element == ObjectRuntimeChange {\n    var classChanged: Bool {\n        count(where: { x in\n            if case .classChanged = x {\n                true\n            } else {\n                false\n            }\n        }) > 0\n    }\n}\n\nstruct ClassRuntimeState {\n    let targetClass: AnyClass\n    let implementations: [Selector: IMP]\n\n    init(_ targetClass: AnyClass) {\n        self.targetClass = targetClass\n        implementations = ClassRuntimeState.implementationsBySelector(targetClass)\n    }\n\n    static func implementationsBySelector(_ klass: AnyClass) -> [Selector: IMP] {\n        var count: UInt32 = 0\n        let methods = class_copyMethodList(klass, &count)\n\n        var result = [Selector: IMP]()\n        for i in 0 ..< count {\n            let method: Method = methods!.advanced(by: Int(i)).pointee\n            result[method_getName(method)] = method_getImplementation(method)\n        }\n\n        return result\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/RxObjCRuntimeState.swift",
    "content": "//\n//  RxObjCRuntimeState.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\nstruct RxObjCRuntimeChange {\n    let dynamicSublasses: Int\n    let swizzledForwardClasses: Int\n    let interceptedClasses: Int\n    let methodsSwizzled: Int\n    let methodsForwarded: Int\n\n    /**\n      Takes into account default methods that were swizzled while creating dynamic subclasses.\n     */\n    static func changes(dynamicSubclasses: Int = 0, swizzledForwardClasses: Int = 0, interceptedClasses: Int = 0, methodsSwizzled: Int = 0, methodsForwarded: Int = 0) -> RxObjCRuntimeChange {\n        RxObjCRuntimeChange(\n            dynamicSublasses: dynamicSubclasses,\n            swizzledForwardClasses: swizzledForwardClasses,\n            interceptedClasses: dynamicSubclasses + interceptedClasses,\n            methodsSwizzled: methodsSwizzled + 1 /* class */ * dynamicSubclasses + 3 /* forwardInvocation, respondsToSelector, methodSignatureForSelector */ * swizzledForwardClasses,\n            methodsForwarded: methodsForwarded\n        )\n    }\n}\n\nfinal class RxObjCRuntimeState {\n    // total number of dynamically generated classes\n    let dynamicSublasses: Int\n    // total number of classes that have swizzled forwarding mechanism\n    let swizzledForwardClasses: Int\n    // total number of classes that have at least one selector intercepted by either forwarding or sending messages\n    let interceptingClasses: Int\n    // total numbers of methods that are swizzled, methods used for forwarding (forwardInvocation, respondsToSelector, methodSignatureForSelector, class) also count\n    let methodsSwizzled: Int\n    // total number of methods that are intercepted by forwarding\n    let methodsForwarded: Int\n\n    init() {\n        #if TRACE_RESOURCES\n        dynamicSublasses = RX_number_of_dynamic_subclasses()\n        swizzledForwardClasses = RX_number_of_forwarding_enabled_classes()\n        interceptingClasses = RX_number_of_intercepting_classes()\n        methodsSwizzled = RX_number_of_swizzled_methods()\n        methodsForwarded = RX_number_of_forwarded_methods()\n        #else\n        dynamicSublasses = 0\n        swizzledForwardClasses = 0\n        interceptingClasses = 0\n        methodsSwizzled = 0\n        methodsForwarded = 0\n        #endif\n    }\n\n    func assertAfterThisMoment(_ previous: RxObjCRuntimeState, changed: RxObjCRuntimeChange) {\n        #if TRACE_RESOURCES\n        let realChangeOfDynamicSubclasses = dynamicSublasses - previous.dynamicSublasses\n        XCTAssertEqual(realChangeOfDynamicSubclasses, changed.dynamicSublasses)\n        if realChangeOfDynamicSubclasses != changed.dynamicSublasses {\n            print(\"dynamic subclasses: real = \\(realChangeOfDynamicSubclasses) != expected = \\(changed.dynamicSublasses)\")\n        }\n        let realSwizzledForwardClasses = swizzledForwardClasses - previous.swizzledForwardClasses\n        XCTAssertEqual(realSwizzledForwardClasses, changed.swizzledForwardClasses)\n        if realSwizzledForwardClasses != changed.swizzledForwardClasses {\n            print(\"forward classes: real = \\(realSwizzledForwardClasses) != expected = \\(changed.swizzledForwardClasses)\")\n        }\n        let realInterceptingClasses = interceptingClasses - previous.interceptingClasses\n        XCTAssertEqual(realInterceptingClasses, changed.interceptedClasses)\n        if realInterceptingClasses != changed.interceptedClasses {\n            print(\"intercepting classes: real = \\(realInterceptingClasses) != expected = \\(changed.interceptedClasses)\")\n        }\n        let realMethodsSwizzled = methodsSwizzled - previous.methodsSwizzled\n        XCTAssertEqual(realMethodsSwizzled, changed.methodsSwizzled)\n        if realMethodsSwizzled != changed.methodsSwizzled {\n            print(\"swizzled methods: real = \\(realMethodsSwizzled) != expected = \\(changed.methodsSwizzled)\")\n        }\n        let realMethodsForwarded = methodsForwarded - previous.methodsForwarded\n        XCTAssertEqual(realMethodsForwarded, changed.methodsForwarded)\n        if realMethodsForwarded != changed.methodsForwarded {\n            print(\"forwarded methods: real = \\(realMethodsForwarded) != expected = \\(changed.methodsForwarded)\")\n        }\n        #endif\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/RxTest+Controls.swift",
    "content": "//\n//  RxTest+Controls.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport XCTest\n\nextension RxTest {\n    func ensurePropertyDeallocated<C, T: Equatable>(\n        _ createControl: () -> C,\n        _ initialValue: T,\n        file: StaticString = #file,\n        line: UInt = #line,\n        _ propertySelector: (C) -> ControlProperty<T>\n    ) where C: NSObject {\n        ensurePropertyDeallocated(createControl, initialValue, comparer: ==, file: file, line: line, propertySelector)\n    }\n\n    func ensurePropertyDeallocated<C, T>(\n        _ createControl: () -> C,\n        _ initialValue: T,\n        comparer: (T, T) -> Bool,\n        file: StaticString = #file,\n        line: UInt = #line,\n        _ propertySelector: (C) -> ControlProperty<T>\n    ) where C: NSObject {\n        let relay = BehaviorRelay(value: initialValue)\n\n        let completeExpectation = XCTestExpectation(description: \"completion\")\n        let deallocateExpectation = XCTestExpectation(description: \"deallocation\")\n        var lastReturnedPropertyValue: T?\n\n        autoreleasepool {\n            var control: C! = createControl()\n\n            let property = propertySelector(control)\n\n            let disposable = relay.bind(to: property)\n\n            _ = property.subscribe(onNext: { n in\n                lastReturnedPropertyValue = n\n            }, onCompleted: {\n                completeExpectation.fulfill()\n                disposable.dispose()\n            })\n\n            _ = (control as NSObject).rx.deallocated.subscribe(onNext: { _ in\n                deallocateExpectation.fulfill()\n            })\n\n            control = nil\n        }\n\n        wait(for: [completeExpectation, deallocateExpectation], timeout: 3.0, enforceOrder: false)\n\n        XCTAssertTrue(\n            lastReturnedPropertyValue.map { comparer(initialValue, $0) } ?? false,\n            \"last property value (\\(lastReturnedPropertyValue.map { \"\\($0)\" } ?? \"nil\"))) does not match initial value (\\(initialValue))\",\n            file: file,\n            line: line\n        )\n    }\n\n    func ensureEventDeallocated<C>(_ createControl: @escaping () -> C, file: StaticString = #file, line: UInt = #line, _ eventSelector: (C) -> ControlEvent<some Any>) where C: NSObject {\n        ensureEventDeallocated({ () -> (C, Disposable) in (createControl(), Disposables.create()) }, file: file, line: line, eventSelector)\n    }\n\n    func ensureEventDeallocated<C>(_ createControl: () -> (C, Disposable), file: StaticString = #file, line: UInt = #line, _ eventSelector: (C) -> ControlEvent<some Any>) where C: NSObject {\n        var completed = false\n        var deallocated = false\n        let outerDisposable = SingleAssignmentDisposable()\n\n        autoreleasepool {\n            let (control, disposable) = createControl()\n            let eventObservable = eventSelector(control)\n\n            _ = eventObservable.subscribe(onNext: { _ in\n            }, onCompleted: {\n                completed = true\n            })\n\n            _ = (control as NSObject).rx.deallocated.subscribe(onNext: { _ in\n                deallocated = true\n            })\n\n            outerDisposable.setDisposable(disposable)\n        }\n\n        outerDisposable.dispose()\n        XCTAssertTrue(deallocated, \"event not deallocated\", file: file, line: line)\n        XCTAssertTrue(completed, \"event not completed\", file: file, line: line)\n    }\n\n    func ensureControlObserverHasWeakReference<C, T>(file: StaticString = #file, line: UInt = #line, _ createControl: @autoclosure () -> (C), _ observerSelector: (C) -> AnyObserver<T>, _ observableSelector: () -> (Observable<T>)) where C: NSObject {\n        var deallocated = false\n\n        let disposeBag = DisposeBag()\n\n        autoreleasepool {\n            let control = createControl()\n            let propertyObserver = observerSelector(control)\n            let observable = observableSelector()\n\n            observable.bind(to: propertyObserver).disposed(by: disposeBag)\n\n            _ = (control as NSObject).rx.deallocated.subscribe(onNext: { _ in\n                deallocated = true\n            })\n        }\n\n        XCTAssertTrue(deallocated, \"control observer reference is over-retained\", file: file, line: line)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/RxTest-iOS-Bridging-Header.h",
    "content": "//\n//  RxTest-iOS-Bridging-Header.h\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"RXObjCRuntime+Testing.h\"\n"
  },
  {
    "path": "Tests/RxCocoaTests/RxTest-macOS-Bridging-Header.h",
    "content": "//\n//  RxTest-macOS-Bridging-Header.h\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"RXObjCRuntime+Testing.h\"\n"
  },
  {
    "path": "Tests/RxCocoaTests/RxTest-tvOS-Bridging-Header.h",
    "content": "//\n//  RxTest-tvOS-Bridging-Header.h\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n#import \"RXObjCRuntime+Testing.h\"\n"
  },
  {
    "path": "Tests/RxCocoaTests/SentMessageTest.swift",
    "content": "//\n//  SentMessageTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxBlocking\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class SentMessageTest: RxTest {\n    var testClosure: () -> Void = {}\n\n    func dynamicClassName(_ baseClassName: String) -> String {\n        \"_RX_namespace_\" + baseClassName\n    }\n}\n\n// MARK: Observing dealloc\n\nextension SentMessageTest {\n    func testDealloc_baseClass_subClass_dont_interact1() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact1_invokedMessage() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc) in\n                [.methodInvoked(target.rx.methodInvoked(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 0, methodsSwizzled: 0),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc) in\n                [.methodInvoked(target.rx.methodInvoked(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 0, methodsSwizzled: 0),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact2() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc2) in\n                [.sentMessage(target.rx.deallocating.map { _ in [] })]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc2) in\n                [.sentMessage(target.rx.deallocating.map { _ in [] })]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact_base_implements() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc_base) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc_base) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact_base_implements_invokedMessage() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc_base) in\n                [.methodInvoked(target.rx.methodInvoked(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 0, methodsSwizzled: 0),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc_base) in\n                [.methodInvoked(target.rx.methodInvoked(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 0, methodsSwizzled: 0),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact_subclass_implements() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc_subclass) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationAdded(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc_subclass) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n    }\n\n    func testDealloc_baseClass_subClass_dont_interact_base_subclass_implements() {\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTestBase_dealloc_base_subclass) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n\n        // swizzle normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: SentMessageTest_dealloc_base_subclass) in\n                [.sentMessage(target.rx.sentMessage(NSSelectorFromString(\"dealloc\")))]\n            },\n            objectActingClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            objectRealClassChange: [\n                .implementationChanged(forSelector: NSSelectorFromString(\"dealloc\"))\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(interceptedClasses: 1, methodsSwizzled: 1),\n            useIt: { _ in [[[]]] }\n        )\n    }\n}\n\n// MARK: Observing by forwarding\n\nextension SentMessageTest {\n    func testBaseClass_subClass_dont_interact_for_forwarding() {\n        // first forwarding with normal first\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(SentMessageTest_interact_forwarding.self),\n            observeIt: { target in\n                [\n                    ObservedSequence.sentMessage(target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledObject(toSay:)))),\n                    ObservedSequence.methodInvoked(target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledObject(toSay:))))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"SentMessageTest_interact_forwarding\", andImplementsTheseSelectors: [\n                    NSSelectorFromString(\"class\"),\n                    NSSelectorFromString(\"respondsToSelector:\"),\n                    NSSelectorFromString(\"methodSignatureForSelector:\"),\n                    NSSelectorFromString(\"forwardInvocation:\"),\n                    #selector(SentMessageTestBase_shared.justCalledObject(toSay:)),\n                    NSSelectorFromString(\"_RX_namespace_justCalledObjectToSay:\")\n                ])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(dynamicSubclasses: 1, swizzledForwardClasses: 1, methodsForwarded: 1)\n        ) { target in\n            let o = NSObject()\n            target.justCalledObject(toSay: o)\n            return [\n                [[o]],\n                [[o]]\n            ]\n        }\n\n        // then forwarding base class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(SentMessageTestBase_interact_forwarding.self),\n            observeIt: { target in\n                [\n                    ObservedSequence.sentMessage(target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledObject(toSay:)))),\n                    ObservedSequence.methodInvoked(target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledObject(toSay:))))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"SentMessageTestBase_interact_forwarding\", andImplementsTheseSelectors: [\n                    NSSelectorFromString(\"class\"),\n                    NSSelectorFromString(\"respondsToSelector:\"),\n                    NSSelectorFromString(\"methodSignatureForSelector:\"),\n                    NSSelectorFromString(\"forwardInvocation:\"),\n                    #selector(SentMessageTestBase_shared.justCalledObject(toSay:)),\n                    NSSelectorFromString(\"_RX_namespace_justCalledObjectToSay:\")\n                ])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(dynamicSubclasses: 1, swizzledForwardClasses: 1, methodsForwarded: 1)\n        ) { target in\n            let o = NSObject()\n            target.justCalledObject(toSay: o)\n            return [\n                [[o]],\n                [[o]]\n            ]\n        }\n\n        // then normal again, no changes\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(SentMessageTest_interact_forwarding.self),\n            observeIt: { target in\n                [\n                    ObservedSequence.sentMessage(target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledObject(toSay:)))),\n                    ObservedSequence.methodInvoked(target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledObject(toSay:))))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"SentMessageTest_interact_forwarding\", andImplementsTheseSelectors: [\n                    NSSelectorFromString(\"class\"),\n                    NSSelectorFromString(\"respondsToSelector:\"),\n                    NSSelectorFromString(\"methodSignatureForSelector:\"),\n                    NSSelectorFromString(\"forwardInvocation:\"),\n                    #selector(SentMessageTestBase_shared.justCalledObject(toSay:)),\n                    NSSelectorFromString(\"_RX_namespace_justCalledObjectToSay:\")\n                ])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes()\n        ) { target in\n            let o = NSObject()\n            target.justCalledObject(toSay: o)\n            return [\n                [[o]],\n                [[o]]\n            ]\n        }\n\n        // then dynamic again, no changes\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(SentMessageTestBase_interact_forwarding.self),\n            observeIt: { target in\n                [\n                    ObservedSequence.sentMessage(target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledObject(toSay:)))),\n                    ObservedSequence.methodInvoked(target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledObject(toSay:))))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"SentMessageTestBase_interact_forwarding\", andImplementsTheseSelectors: [\n                    NSSelectorFromString(\"class\"),\n                    NSSelectorFromString(\"respondsToSelector:\"),\n                    NSSelectorFromString(\"methodSignatureForSelector:\"),\n                    NSSelectorFromString(\"forwardInvocation:\"),\n                    #selector(SentMessageTestBase_shared.justCalledObject(toSay:)),\n                    NSSelectorFromString(\"_RX_namespace_justCalledObjectToSay:\")\n                ])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes()\n        ) { target in\n            let o = NSObject()\n            target.justCalledObject(toSay: o)\n            return [\n                [[o]],\n                [[o]]\n            ]\n        }\n    }\n}\n\n// MARK: Optimized observers don't interfere between class/baseclass\n\nextension SentMessageTest {\n    func testBaseClass_subClass_dont_interact_for_optimized_version_void() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_void.self,\n            SentMessageTest_optimized_void.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledVoidToSay)\n        ) { target in\n            target.voidJustCalledVoidToSay()\n            return [\n                [[]],\n                [[]]\n            ]\n        }\n    }\n\n    func testBaseClass_subClass_dont_interact_for_optimized_version_id() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_id.self,\n            SentMessageTest_optimized_id.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledObject(toSay:))\n        ) { target in\n            let o = NSObject()\n            target.voidJustCalledObject(toSay: o)\n            return [\n                [[o]],\n                [[o]]\n            ]\n        }\n    }\n\n    func testBaseClass_subClass_dont_interact_for_optimized_version_int() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_int.self,\n            SentMessageTest_optimized_int.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledInt(toSay:))\n        ) { target in\n            target.voidJustCalledInt(toSay: 3)\n            return [\n                [[NSNumber(value: 3)]],\n                [[NSNumber(value: 3)]]\n            ]\n        }\n    }\n\n    func testBaseClass_subClass_dont_interact_for_optimized_version_long() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_long.self,\n            SentMessageTest_optimized_long.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledLong(toSay:))\n        ) { target in\n            target.voidJustCalledLong(toSay: 3)\n            return [\n                [[NSNumber(value: 3)]],\n                [[NSNumber(value: 3)]]\n            ]\n        }\n    }\n\n    func testBaseClass_subClass_dont_interact_for_optimized_version_char() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_char.self,\n            SentMessageTest_optimized_char.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledChar(toSay:))\n        ) { target in\n            target.voidJustCalledChar(toSay: 3)\n            return [\n                [[NSNumber(value: 3)]],\n                [[NSNumber(value: 3)]]\n            ]\n        }\n    }\n\n    func testBaseClass_subClass_dont_interact_for_optimized_version_id_id() {\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_id_id.self,\n            SentMessageTest_optimized_id_id.self,\n            #selector(SentMessageTestBase_shared.voidJustCalledObject(toSay:object:))\n        ) { target in\n            let o = NSObject()\n            let o1 = NSObject()\n            target.voidJustCalledObject(toSay: o, object: o1)\n            return [\n                [[o, o1]],\n                [[o, o1]]\n            ]\n        }\n    }\n\n    func _baseClass_subClass_dont_interact_for_optimized_version\n    <\n        BaseClass: SentMessageTestClassCreationProtocol & NSObjectProtocol,\n        TargetClass: SentMessageTestClassCreationProtocol & NSObjectProtocol\n    >(_ baseClass: BaseClass.Type, _ targetClass: TargetClass.Type, _ method: Selector, _ invoke: @escaping (BaseClass) -> [[MethodParameters]]) {\n        // now force forwarding mechanism for normal class\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { target in\n                [\n                    .sentMessage((target as! NSObject).rx.sentMessage(method)),\n                    .methodInvoked((target as! NSObject).rx.methodInvoked(method))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"\\(targetClass)\", andImplementsTheseSelectors: [method, NSSelectorFromString(\"class\")])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(dynamicSubclasses: 1, methodsSwizzled: 1)\n        ) { (target: TargetClass) in\n            invoke(target as! BaseClass)\n        }\n\n        // first force base class forwarding\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: BaseClass) in\n                [\n                    .sentMessage((target as! NSObject).rx.sentMessage(method)),\n                    .methodInvoked((target as! NSObject).rx.methodInvoked(method))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"\\(baseClass)\", andImplementsTheseSelectors: [method, NSSelectorFromString(\"class\")])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(dynamicSubclasses: 1, methodsSwizzled: 1),\n            useIt: invoke\n        )\n\n        // now force forwarding mechanism for normal class again\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { target in\n                [\n                    .sentMessage((target as! NSObject).rx.sentMessage(method)),\n                    .methodInvoked((target as! NSObject).rx.methodInvoked(method))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"\\(targetClass)\", andImplementsTheseSelectors: [method, NSSelectorFromString(\"class\")])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes()\n        ) { (target: TargetClass) in\n            invoke(target as! BaseClass)\n        }\n\n        // forwarding for base class again\n        ensureGlobalRuntimeChangesAreCached(\n            createNormalInstance(),\n            observeIt: { (target: BaseClass) in\n                [\n                    .sentMessage((target as! NSObject).rx.sentMessage(method)),\n                    .methodInvoked((target as! NSObject).rx.methodInvoked(method))\n                ]\n            },\n            objectActingClassChange: [\n            ],\n            objectRealClassChange: [\n                ObjectRuntimeChange.ClassChangedToDynamic(\"\\(baseClass)\", andImplementsTheseSelectors: [method, NSSelectorFromString(\"class\")])\n            ],\n            runtimeChange: RxObjCRuntimeChange.changes(),\n            useIt: invoke\n        )\n    }\n}\n\n// MARK: Optimized observers don't interfere between class/baseclass depending on who is implementing the method\n\nextension SentMessageTest {\n    func testBaseClass_subClass_dont_interact_for_optimized_version_int_base_implements() {\n        let argument = NSObject()\n        _baseClass_subClass_dont_interact_for_optimized_version(\n            SentMessageTestBase_optimized_int_base.self,\n            SentMessageTest_optimized_int_base.self,\n            #selector(SentMessageTestBase_optimized_int_base.optimized(_:))\n        ) { target in\n            target.optimized(argument)\n            return [\n                [[argument]],\n                [[argument]]\n            ]\n        }\n    }\n}\n\n// MARK: Basic observing by forwarding cases\n\nextension SentMessageTest {\n    func testBasicForwardingCase() {\n        let target = SentMessageTest_forwarding_basic()\n        var messages = [[Any]]()\n        var messageStage: [MessageProcessingStage] = []\n\n        let d = target.rx.sentMessage(#selector(SentMessageTestBase_shared.message_allSupportedParameters(_:p2:p3:p4:p5:p6:p7:p8:p9:p10:p11:p12:p13:p14:p15:p16:))).subscribe(onNext: { n in\n            messages.append(n)\n            messageStage.append(.sentMessage)\n        }, onError: { e in\n            XCTFail(\"Errors out \\(e)\")\n        })\n\n        let d2 = target.rx.methodInvoked(#selector(SentMessageTestBase_shared.message_allSupportedParameters(_:p2:p3:p4:p5:p6:p7:p8:p9:p10:p11:p12:p13:p14:p15:p16:))).subscribe(onNext: { n in\n            messages.append(n)\n            messageStage.append(.methodInvoked)\n        }, onError: { e in\n            XCTFail(\"Errors out \\(e)\")\n        })\n\n        let objectParam = NSObject()\n        let str: UnsafePointer<Int8> = UnsafePointer(bitPattern: 1_343_423)!\n        let unsafeStr: UnsafeMutablePointer<Int8> = UnsafeMutablePointer(bitPattern: 2_123_123)!\n\n        let largeStruct = some_insanely_large_struct(a: (0, 1, 2, 3, 4, 5, 6, 7), some_large_text: nil, next: nil)\n\n        target.invokedMethod = {\n            messageStage.append(.invoking)\n        }\n\n        target.message_allSupportedParameters(\n            objectParam,\n            p2: type(of: target),\n            p3: { x in x },\n            p4: -2,\n            p5: -3,\n            p6: -4,\n            p7: -5,\n            p8: 1,\n            p9: 2,\n            p10: 3,\n            p11: 4,\n            p12: 1.0,\n            p13: 2.0,\n            p14: str,\n            p15: unsafeStr,\n            p16: largeStruct\n        )\n\n        d.dispose()\n        d2.dispose()\n\n        let resultMessages = target.messages.map(\\.values)\n        XCTAssertEqualAnyObjectArrayOfArrays(resultMessages + resultMessages, messages)\n        XCTAssertEqual(messageStage, [.sentMessage, .invoking, .methodInvoked])\n    }\n}\n\n// MARK: Test failures\n\nextension SentMessageTest {\n    func testFailsInCaseObservingUnknownSelector_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(NSSelectorFromString(\"unknownSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .selectorNotImplemented(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testFailsInCaseObservingUnknownSelector_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(NSSelectorFromString(\"unknownSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .selectorNotImplemented(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testFailsInCaseObjectIsAlreadyBeingInterceptedWithKVO_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        let disposeBag = DisposeBag()\n        target.rx.observe(NSArray.self, \"messages\")\n            .subscribe(onNext: { _ in\n            })\n            .disposed(by: disposeBag)\n\n        do {\n            _ = try target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .objectMessagesAlreadyBeingIntercepted(targetInError, mechanism) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n            XCTAssertEqual(mechanism, RxCocoaInterceptionMechanism.kvo)\n        }\n    }\n\n    func testFailsInCaseObjectIsAlreadyBeingInterceptedWithKVO_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        let disposeBag = DisposeBag()\n        target.rx.observe(NSArray.self, \"messages\")\n            .subscribe(onNext: { _ in\n            })\n            .disposed(by: disposeBag)\n\n        do {\n            _ = try target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .objectMessagesAlreadyBeingIntercepted(targetInError, mechanism) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n            XCTAssertEqual(mechanism, RxCocoaInterceptionMechanism.kvo)\n        }\n    }\n\n    func testFailsInCaseObjectIsAlreadyBeingInterceptedWithSomeOtherMechanism_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        object_setClass(target, SentMessageTest_shared_mock_interceptor.self)\n\n        do {\n            _ = try target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .objectMessagesAlreadyBeingIntercepted(targetInError, mechanism) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n            XCTAssertEqual(mechanism, RxCocoaInterceptionMechanism.kvo)\n        }\n    }\n\n    func testFailsInCaseObjectIsAlreadyBeingInterceptedWithSomeOtherMechanism_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        object_setClass(target, SentMessageTest_shared_mock_interceptor.self)\n\n        do {\n            _ = try target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .objectMessagesAlreadyBeingIntercepted(targetInError, mechanism) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n            XCTAssertEqual(mechanism, RxCocoaInterceptionMechanism.kvo)\n        }\n    }\n\n    func testFailsInCaseObjectIsCF_sentMessage() {\n        autoreleasepool {\n            let target = \"\\(Date())\"\n\n            do {\n                _ = try target.rx.sentMessage(#selector(getter: NSString.length))\n                    .toBlocking()\n                    .first()\n\n                XCTFail()\n            } catch let e {\n                guard case let .cantInterceptCoreFoundationTollFreeBridgedObjects(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                    XCTFail()\n                    return\n                }\n\n                XCTAssertEqual((targetInError as! NSString) as String, target)\n            }\n        }\n    }\n\n    func testFailsInCaseObjectIsCF_methodInvoked() {\n        autoreleasepool {\n            let target = \"\\(Date())\"\n\n            do {\n                _ = try target.rx.sentMessage(#selector(getter: NSString.length))\n                    .toBlocking()\n                    .first()\n\n                XCTFail()\n            } catch let e {\n                guard case let .cantInterceptCoreFoundationTollFreeBridgedObjects(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                    XCTFail()\n                    return\n                }\n\n                XCTAssertEqual((targetInError as! NSString) as String, target)\n            }\n        }\n    }\n}\n\n// MARK: Test interaction with KVO\n\nextension SentMessageTest {\n    func testWorksWithKVOInCaseKVORegisteredAfter_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        let messages = target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n        var stages: [MessageProcessingStage] = []\n\n        let kvo = target.rx.observe(NSArray.self, \"messages\")\n            .subscribe(onNext: { _ in\n            })\n\n        var recordedMessages = [MethodParameters]()\n        let methodObserving = messages.subscribe(onNext: { n in\n            stages.append(.sentMessage)\n            recordedMessages.append(n)\n        })\n\n        target.invokedMethod = {\n            stages.append(.invoking)\n        }\n\n        target.justCalledBool(toSay: true)\n\n        kvo.dispose()\n\n        target.justCalledBool(toSay: false)\n\n        XCTAssertEqual(stages, [.sentMessage, .invoking, .sentMessage, .invoking])\n        XCTAssertEqualAnyObjectArrayOfArrays(recordedMessages, [[NSNumber(value: true)], [NSNumber(value: false)]])\n\n        methodObserving.dispose()\n    }\n\n    func testWorksWithKVOInCaseKVORegisteredAfter_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        let messages = target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n        var stages: [MessageProcessingStage] = []\n\n        let kvo = target.rx.observe(NSArray.self, \"messages\")\n            .subscribe(onNext: { _ in\n            })\n\n        var recordedMessages = [MethodParameters]()\n        let methodObserving = messages.subscribe(onNext: { n in\n            stages.append(.methodInvoked)\n            recordedMessages.append(n)\n        })\n\n        target.invokedMethod = {\n            stages.append(.invoking)\n        }\n\n        target.justCalledBool(toSay: true)\n\n        kvo.dispose()\n\n        target.justCalledBool(toSay: false)\n\n        XCTAssertEqual(stages, [.invoking, .methodInvoked, .invoking, .methodInvoked])\n        XCTAssertEqualAnyObjectArrayOfArrays(recordedMessages, [[NSNumber(value: true)], [NSNumber(value: false)]])\n\n        methodObserving.dispose()\n    }\n}\n\n// MARK: Test subjects\n\nextension SentMessageTest {\n    func testMessageSentSubjectHasPublishBehavior() {\n        var messages: Observable<MethodParameters>!\n        var recordedMessages = [MethodParameters]()\n        var completed = false\n        let disposeBag = DisposeBag()\n\n        var stages: [MessageProcessingStage] = []\n\n        autoreleasepool {\n            let target = SentMessageTest_shared()\n\n            messages = target.rx.sentMessage(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n\n            target.invokedMethod = {\n                stages.append(.invoking)\n            }\n\n            target.justCalledBool(toSay: true)\n\n            messages.subscribe(onNext: { n in\n                recordedMessages.append(n)\n                stages.append(.sentMessage)\n            }, onCompleted: {\n                completed = true\n            }).disposed(by: disposeBag)\n\n            target.justCalledBool(toSay: true)\n        }\n\n        XCTAssertEqual(stages, [.invoking, .sentMessage, .invoking])\n        XCTAssertEqualAnyObjectArrayOfArrays(recordedMessages, [[NSNumber(value: true)]])\n        XCTAssertTrue(completed)\n    }\n\n    func testInvokedMethodSubjectHasPublishBehavior() {\n        var messages: Observable<MethodParameters>!\n        var recordedMessages = [MethodParameters]()\n        var completed = false\n        let disposeBag = DisposeBag()\n\n        var stages: [MessageProcessingStage] = []\n\n        autoreleasepool {\n            let target = SentMessageTest_shared()\n\n            messages = target.rx.methodInvoked(#selector(SentMessageTestBase_shared.justCalledBool(toSay:)))\n\n            target.invokedMethod = {\n                stages.append(.invoking)\n            }\n\n            target.justCalledBool(toSay: true)\n\n            messages.subscribe(onNext: { n in\n                recordedMessages.append(n)\n                stages.append(.methodInvoked)\n            }, onCompleted: {\n                completed = true\n            }).disposed(by: disposeBag)\n\n            target.justCalledBool(toSay: true)\n        }\n\n        XCTAssertEqual(stages, [.invoking, .invoking, .methodInvoked])\n        XCTAssertEqualAnyObjectArrayOfArrays(recordedMessages, [[NSNumber(value: true)]])\n        XCTAssertTrue(completed)\n    }\n\n    func testDeallocSubjectHasReplayBehavior1() {\n        var deallocSequence: Observable<MethodParameters>!\n        autoreleasepool {\n            let target = SentMessageTest_shared()\n\n            deallocSequence = target.rx.sentMessage(NSSelectorFromString(\"dealloc\"))\n        }\n\n        var called = false\n        var completed = false\n        _ = deallocSequence.subscribe(onNext: { _ in\n            called = true\n        }, onCompleted: {\n            completed = true\n        })\n\n        XCTAssertTrue(called)\n        XCTAssertTrue(completed)\n    }\n\n    func testDeallocSubjectHasReplayBehavior2() {\n        var deallocSequence: Observable<Void>!\n        autoreleasepool {\n            let target = SentMessageTest_shared()\n\n            deallocSequence = target.rx.deallocating\n        }\n\n        var called = false\n        var completed = false\n        _ = deallocSequence.subscribe(onNext: { _ in\n            called = true\n        }, onCompleted: {\n            completed = true\n        })\n\n        XCTAssertTrue(called)\n        XCTAssertTrue(completed)\n    }\n}\n\n// MARK: Test observing of special methods fail\n\nextension SentMessageTest {\n    func testObserve_special_class_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(NSSelectorFromString(\"class\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_class_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(NSSelectorFromString(\"class\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_forwardingTargetForSelector_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(NSSelectorFromString(\"forwardingTargetForSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_forwardingTargetForSelector_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(NSSelectorFromString(\"forwardingTargetForSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_methodSignatureForSelector_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(NSSelectorFromString(\"methodSignatureForSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_methodSignatureForSelector_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(NSSelectorFromString(\"methodSignatureForSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_respondsToSelector_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(NSSelectorFromString(\"respondsToSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_special_respondsToSelector_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(NSSelectorFromString(\"respondsToSelector:\"))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingPerformanceSensitiveMessages(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n}\n\n// MARK: Test return value check\n\nextension SentMessageTest {\n    func testObserve_largeStructReturnValueFails_sentMessage() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.sentMessage(#selector(SentMessageTestBase_shared.hugeResult))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingMessagesWithUnsupportedReturnType(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n\n    func testObserve_largeStructReturnValueFails_methodInvoked() {\n        let target = SentMessageTest_shared()\n\n        do {\n            _ = try target.rx.methodInvoked(#selector(SentMessageTestBase_shared.hugeResult))\n                .toBlocking()\n                .first()\n\n            XCTFail()\n        } catch let e {\n            guard case let .observingMessagesWithUnsupportedReturnType(targetInError) = e as! RxCocoaObjCRuntimeError else {\n                XCTFail()\n                return\n            }\n\n            XCTAssertEqual(targetInError as? SentMessageTest_shared, target)\n        }\n    }\n}\n\n// MARK: Ensure all types are covered\n\nextension SentMessageTest {\n    func testObservingForAllTypes() {\n        let object = SentMessageTest_all_supported_types()\n\n        let closure: () -> Void = {}\n\n        let constChar = (\"you better be listening\" as NSString).utf8String!\n\n        let largeStruct = some_insanely_large_struct(a: (0, 1, 2, 3, 4, 5, 6, 7), some_large_text: nil, next: nil)\n\n        let startRuntimeState = RxObjCRuntimeState()\n\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledObject(toSay:)),\n            sendMessage: { x in NSValue(nonretainedObject: x.justCalledObject(toSay: object)) },\n            expectedResult: NSValue(nonretainedObject: object)\n        )\n        _testMessageRecordedAndAllCallsAreMade(#selector(SentMessageTestBase_shared.justCalledClass(toSay:)), sendMessage: { x in NSValue(nonretainedObject: x.justCalledClass(toSay: type(of: object))) }, expectedResult: NSValue(nonretainedObject: type(of: object)))\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledClosure(toSay:)),\n            sendMessage: { x in \"\\(String(describing: x.justCalledClosure(toSay: closure)))\" },\n            expectedResult: \"\\(String(describing: closure))\"\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledChar(toSay:)),\n            sendMessage: { x in x.justCalledChar(toSay: 3) },\n            expectedResult: 3\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledShort(toSay:)),\n            sendMessage: { x in x.justCalledShort(toSay: 4) },\n            expectedResult: 4\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledInt(toSay:)),\n            sendMessage: { x in x.justCalledInt(toSay: 5) },\n            expectedResult: 5\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledLong(toSay:)),\n            sendMessage: { x in x.justCalledLong(toSay: 6) },\n            expectedResult: 6\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledLongLong(toSay:)),\n            sendMessage: { x in x.justCalledLongLong(toSay: 7) },\n            expectedResult: 7\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledUnsignedChar(toSay:)),\n            sendMessage: { x in x.justCalledUnsignedChar(toSay: 8) },\n            expectedResult: 8\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledUnsignedShort(toSay:)),\n            sendMessage: { x in x.justCalledUnsignedShort(toSay: 9) },\n            expectedResult: 9\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledUnsignedInt(toSay:)),\n            sendMessage: { x in x.justCalledUnsignedInt(toSay: 10) },\n            expectedResult: 10\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledUnsignedLong(toSay:)),\n            sendMessage: { x in x.justCalledUnsignedLong(toSay: 11) },\n            expectedResult: 11\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledUnsignedLongLong(toSay:)),\n            sendMessage: { x in x.justCalledUnsignedLongLong(toSay: 12) },\n            expectedResult: 12\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledFloat(toSay:)),\n            sendMessage: { x in x.justCalledFloat(toSay: 13) },\n            expectedResult: 13\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledDouble(toSay:)),\n            sendMessage: { x in x.justCalledDouble(toSay: 13) },\n            expectedResult: 13\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledBool(toSay:)),\n            sendMessage: { x in x.justCalledBool(toSay: true) },\n            expectedResult: true\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledConstChar(toSay:)),\n            sendMessage: { x in x.justCalledConstChar(toSay: constChar) },\n            expectedResult: constChar\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.justCalledLarge(toSay:)),\n            sendMessage: { x in x.justCalledLarge(toSay: largeStruct) },\n            expectedResult: 28\n        )\n\n        let middleRuntimeState = RxObjCRuntimeState()\n\n        let middleChanges = RxObjCRuntimeChange.changes(dynamicSubclasses: 1, swizzledForwardClasses: 1, methodsForwarded: 18)\n        middleRuntimeState.assertAfterThisMoment(startRuntimeState, changed: middleChanges)\n\n        _testMessageRecordedAndAllCallsAreMade(#selector(SentMessageTestBase_shared.voidJustCalledObject(toSay:)), sendMessage: { x in x.voidJustCalledObject(toSay: object); return NSValue(nonretainedObject: object) }, expectedResult: NSValue(nonretainedObject: object))\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledClosure(toSay:)),\n            sendMessage: { x in x.voidJustCalledClosure(toSay: closure); return \"\\(String(describing: closure))\" },\n            expectedResult: \"\\(String(describing: closure))\"\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledChar(toSay:)),\n            sendMessage: { x in x.voidJustCalledChar(toSay: 3); return 3 },\n            expectedResult: 3\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledShort(toSay:)),\n            sendMessage: { x in x.voidJustCalledShort(toSay: 4); return 4 },\n            expectedResult: 4\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledInt(toSay:)),\n            sendMessage: { x in x.voidJustCalledInt(toSay: 5); return 5 },\n            expectedResult: 5\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledLong(toSay:)),\n            sendMessage: { x in x.voidJustCalledLong(toSay: 6); return 6 },\n            expectedResult: 6\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledUnsignedChar(toSay:)),\n            sendMessage: { x in x.voidJustCalledUnsignedChar(toSay: 8); return 8 },\n            expectedResult: 8\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledUnsignedShort(toSay:)),\n            sendMessage: { x in x.voidJustCalledUnsignedShort(toSay: 9); return 9 },\n            expectedResult: 9\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledUnsignedInt(toSay:)),\n            sendMessage: { x in x.voidJustCalledUnsignedInt(toSay: 10); return 10 },\n            expectedResult: 10\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledUnsignedLong(toSay:)),\n            sendMessage: { x in x.voidJustCalledUnsignedLong(toSay: 11); return 11 },\n            expectedResult: 11\n        )\n        _testMessageRecordedAndAllCallsAreMade(\n            #selector(SentMessageTestBase_shared.voidJustCalledDouble(toSay:)),\n            sendMessage: { x in x.voidJustCalledDouble(toSay: 13); return 13 },\n            expectedResult: 13\n        )\n        _testMessageRecordedAndAllCallsAreMade(#selector(SentMessageTestBase_shared.voidJustCalledFloat(toSay:)), sendMessage: { x in x.voidJustCalledFloat(toSay: 13); return 13 }, expectedResult: 13)\n\n        let endRuntimeState = RxObjCRuntimeState()\n\n        endRuntimeState.assertAfterThisMoment(middleRuntimeState, changed: RxObjCRuntimeChange.changes(methodsSwizzled: 12))\n    }\n\n    func _testMessageRecordedAndAllCallsAreMade<Result: Equatable>(_ selector: Selector, sendMessage: @escaping (SentMessageTest_all_supported_types) -> Result, expectedResult: Result) {\n        _testMessageRecordedAndAllCallsAreMade(selector, sendMessage: sendMessage, expectedResult: expectedResult) { target, selector in\n            ObservedSequence.sentMessage(target.rx.sentMessage(selector))\n        }\n        _testMessageRecordedAndAllCallsAreMade(selector, sendMessage: sendMessage, expectedResult: expectedResult) { target, selector in\n            ObservedSequence.methodInvoked(target.rx.methodInvoked(selector))\n        }\n    }\n\n    func _testMessageRecordedAndAllCallsAreMade<Result: Equatable>(_ selector: Selector, sendMessage: @escaping (SentMessageTest_all_supported_types) -> Result, expectedResult: Result, methodSelector: @escaping (SentMessageTest_all_supported_types, Selector) -> ObservedSequence) {\n        var observedMessages = [[Any]]()\n        var receivedDerivedClassMessage = [[Any]]()\n        var receivedBaseClassMessage = [[Any]]()\n        var completed = false\n\n        var result: Result! = nil\n\n        var stages: [MessageProcessingStage] = []\n\n        let action: () -> Disposable = { () -> Disposable in\n            let target = SentMessageTest_all_supported_types()\n\n            let observedSequence = methodSelector(target, selector)\n\n            let d = observedSequence.sequence.subscribe(onNext: { n in\n                stages.append(observedSequence.stage)\n                observedMessages.append(n)\n            }, onError: { e in\n                XCTFail(\"Errors out \\(e)\")\n            }, onCompleted: {\n                completed = true\n            })\n\n            target.invokedMethod = {\n                stages.append(.invoking)\n            }\n\n            result = sendMessage(target)\n\n            receivedDerivedClassMessage = target.messages.map(\\.values)\n            receivedBaseClassMessage = target.baseMessages.map(\\.values)\n\n            return d\n        }\n\n        action().dispose()\n\n        XCTAssertEqual(stages, stages.sorted(by: { $0.rawValue < $1.rawValue }))\n        XCTAssertTrue(stages.count > 0)\n        XCTAssertEqual(result, expectedResult)\n        XCTAssertTrue(completed)\n        XCTAssert(observedMessages.count == 1)\n        XCTAssertEqualAnyObjectArrayOfArrays(observedMessages, receivedDerivedClassMessage)\n        XCTAssertEqualAnyObjectArrayOfArrays(observedMessages, receivedBaseClassMessage)\n    }\n}\n\nextension SentMessageTest {\n    /**\n      Repeats action twice and makes sure there is no global leaks. Observing mechanism is lazy loaded so not caching\n      results properly can cause serious memory leaks.\n     */\n    func ensureGlobalRuntimeChangesAreCached<T: SentMessageTestClassCreationProtocol & NSObjectProtocol>(\n        _ createIt: @escaping () -> T,\n        observeIt: @escaping (T) -> [ObservedSequence],\n        objectActingClassChange: [ObjectRuntimeChange],\n        objectRealClassChange: [ObjectRuntimeChange],\n        runtimeChange: RxObjCRuntimeChange,\n        useIt: @escaping (T) -> [[MethodParameters]]\n    ) {\n        // First run normal experiment\n        _ensureGlobalRuntimeChangesAreCached(\n            createIt,\n            observeIt: observeIt,\n            expectedActingClassChanges: objectActingClassChange,\n            expectedRealClassChanges: objectRealClassChange,\n            runtimeChange: runtimeChange,\n            useIt: useIt\n        )\n\n        // The second run of the same experiment shouldn't cause any changes in global runtime.\n        // Cached methods should be used.\n        // If second experiment causes some change in runtime, that means there is a bug.\n        _ensureGlobalRuntimeChangesAreCached(\n            createIt,\n            observeIt: observeIt,\n            expectedActingClassChanges: [], // acting class can't change second time, because that would mean that on every observe attempt we would inject new methods in runtime\n            expectedRealClassChanges: objectRealClassChange.filter(\\.isClassChange), // only class can change to the same class it changed originally\n            runtimeChange: RxObjCRuntimeChange.changes(),\n            useIt: useIt\n        )\n    }\n\n    func _ensureGlobalRuntimeChangesAreCached<T: SentMessageTestClassCreationProtocol & NSObjectProtocol>(\n        _ createIt: () -> T,\n        observeIt: (T) -> [ObservedSequence],\n        expectedActingClassChanges: [ObjectRuntimeChange],\n        expectedRealClassChanges: [ObjectRuntimeChange],\n        runtimeChange: RxObjCRuntimeChange,\n        useIt: (T) -> [[MethodParameters]]\n    ) {\n        let originalRuntimeState = RxObjCRuntimeState()\n\n        var createdObject: T! = nil\n        var disposables = [Disposable]()\n\n        var nCompleted = 0\n        var recordedParameters = [[MethodParameters]]()\n        var observables: [ObservedSequence] = []\n\n        autoreleasepool {\n            createdObject = createIt()\n            let afterCreateState = RxObjCRuntimeState()\n            afterCreateState.assertAfterThisMoment(originalRuntimeState, changed: RxObjCRuntimeChange.changes())\n        }\n\n        let originalObjectRuntimeState = ObjectRuntimeState(target: createdObject)\n\n        autoreleasepool {\n            observables = observeIt(createdObject)\n        }\n\n        let afterObserveObjectRuntimeState = ObjectRuntimeState(target: createdObject)\n        let afterObserveRuntimeState = RxObjCRuntimeState()\n\n        afterObserveObjectRuntimeState.assertChangesFrom(\n            originalObjectRuntimeState,\n            expectedActingClassChanges: expectedActingClassChanges,\n            expectedRealClassChanges: expectedRealClassChanges\n        )\n        afterObserveRuntimeState.assertAfterThisMoment(originalRuntimeState, changed: runtimeChange)\n\n        var messageProcessingStage: [MessageProcessingStage] = []\n        autoreleasepool {\n            var i = 0\n\n            for o in observables {\n                let index = i\n                i += 1\n                recordedParameters.append([])\n                _ = o.sequence.subscribe(onNext: { n in\n                    messageProcessingStage.append(o.stage)\n                    recordedParameters[index].append(n)\n                }, onError: { e in\n                    XCTFail(\"Error happened \\(e)\")\n                }, onCompleted: { () in\n                    nCompleted += 1\n                })\n            }\n        }\n\n        var invokedCount = 0\n        createdObject.invokedMethod = {\n            messageProcessingStage.append(.invoking)\n            invokedCount = invokedCount + 1\n        }\n\n        let expectedParameters = useIt(createdObject)\n\n        let finalObjectRuntimeState = ObjectRuntimeState(target: createdObject)\n\n        finalObjectRuntimeState.assertChangesFrom(\n            afterObserveObjectRuntimeState,\n            expectedActingClassChanges: [],\n            expectedRealClassChanges: []\n        )\n\n        autoreleasepool {\n            for d in disposables {\n                d.dispose()\n            }\n            disposables = []\n\n            // tiny second test to make sure runtime stayed intact\n            createdObject = nil\n        }\n\n        // ensure all observables are completed on object dispose\n        XCTAssertTrue(nCompleted == observables.count)\n\n        // expected parameters should be sorted\n        XCTAssertEqual(messageProcessingStage, messageProcessingStage.sorted(by: { $0.rawValue < $1.rawValue }))\n        XCTAssertEqual(messageProcessingStage.count, observables.count + invokedCount)\n\n        XCTAssertEqual(recordedParameters.count, expectedParameters.count)\n        for (lhs, rhs) in zip(recordedParameters, expectedParameters) {\n            XCTAssertEqualAnyObjectArrayOfArrays(lhs, rhs)\n        }\n\n        // nothing is changed after requesting the observables\n        let endRuntimeState = RxObjCRuntimeState()\n        endRuntimeState.assertAfterThisMoment(afterObserveRuntimeState, changed: RxObjCRuntimeChange.changes())\n    }\n}\n\n// MARK: Convenience\n\nextension SentMessageTest {\n    override func observeValue(forKeyPath _: String?, of _: Any?, change _: [NSKeyValueChangeKey: Any]?, context _: UnsafeMutableRawPointer?) {}\n\n    func createKVODynamicSubclassed<T: SentMessageTestClassCreationProtocol & NSObjectProtocol>(_: T.Type = T.self) -> () -> (T, [Disposable]) {\n        {\n            let t = T.createInstance()\n            // let disposable = (t as! NSObject).rx.observe(NSArray.self, \"messages\").publish().connect()\n            (t as! NSObject).addObserver(self, forKeyPath: \"messages\", options: [], context: nil)\n            return (t, [Disposables.create { (t as! NSObject).removeObserver(self, forKeyPath: \"messages\") }])\n        }\n    }\n\n    func createNormalInstance<T: SentMessageTestClassCreationProtocol & NSObjectProtocol>(_: T.Type = T.self) -> () -> T {\n        {\n            T.createInstance()\n        }\n    }\n}\n\nextension some_insanely_large_struct: Equatable {}\n\npublic func == (lhs: some_insanely_large_struct, rhs: some_insanely_large_struct) -> Bool {\n    if lhs.a.0 != rhs.a.0 { return false }\n    if lhs.a.1 != rhs.a.1 { return false }\n    if lhs.a.2 != rhs.a.2 { return false }\n    if lhs.a.3 != rhs.a.3 { return false }\n    if lhs.a.4 != rhs.a.4 { return false }\n    if lhs.a.5 != rhs.a.5 { return false }\n    if lhs.a.6 != rhs.a.6 { return false }\n    if lhs.a.7 != rhs.a.7 { return false }\n    return lhs.some_large_text == rhs.some_large_text && lhs.next == rhs.next\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/SharedSequence+ConcurrencyTests.swift",
    "content": "//\n//  SharedSequence+ConcurrencyTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Dispatch\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nclass SharedSequenceConcurrencyTests: RxTest {\n    let scheduler = TestScheduler(initialClock: 0)\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension SharedSequenceConcurrencyTests {\n    func testAwaitsValuesAndFinishes() async {\n        let driver = Driver.from(1 ... 10)\n\n        var values = [Int]()\n\n        for await value in await driver.values {\n            values.append(value)\n        }\n\n        XCTAssertEqual(values, Array(1 ... 10))\n    }\n\n    func testCancellationWithoutEvents() async {\n        let driver = Driver<Void>.never()\n        Task {\n            for await _ in await driver.values {\n                //\n            }\n            XCTAssertTrue(Task.isCancelled)\n        }.cancel()\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/SharedSequence+Extensions.swift",
    "content": "//\n//  SharedSequence+Extensions.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\n\nextension SharedSequence: @retroactive Equatable {}\n\npublic func == <S, T>(lhs: SharedSequence<S, T>, rhs: SharedSequence<S, T>) -> Bool {\n    lhs.asObservable() === rhs.asObservable()\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/SharedSequence+OperatorTest.swift",
    "content": "//\n//  SharedSequence+OperatorTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass SharedSequenceOperatorTests: SharedSequenceTest {}\n\n// MARK: deferred\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_deferred() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = Driver.deferred { hotObservable.asDriver(onErrorJustReturn: -1) }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n}\n\n// MARK: map\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_map() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Int in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return n + 1\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2, 3, 0])\n    }\n}\n\n// MARK: compactMap\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_compactMap() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<String>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: \"-1\").compactMap { (n: String) -> Int? in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return Int(n)\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(\"1\"))\n            hotObservable.on(.next(\"2\"))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_compactMapNil() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<String>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: \"-1\").compactMap { (n: String) -> Int? in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return Int(n)\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(\"1\"))\n            hotObservable.on(.next(\"a\"))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, -1])\n    }\n}\n\n// MARK: filter\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_filter() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).filter { n in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return n % 2 == 0\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2])\n    }\n}\n\n// MARK: switch latest\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_switchLatest() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Signal<Int>>()\n        let hotObservable1 = MainThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = MainThreadPrimitiveHotObservable<Int>()\n\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: hotObservable1.asSignal(onErrorJustReturn: -1)).switchLatest()\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(hotObservable1.asSignal(onErrorJustReturn: -2)))\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n            hotObservable1.on(.error(testError))\n\n            hotObservable.on(.next(hotObservable2.asSignal(onErrorJustReturn: -3)))\n\n            hotObservable2.on(.next(10))\n            hotObservable2.on(.next(11))\n            hotObservable2.on(.error(testError))\n\n            hotObservable.on(.error(testError))\n\n            hotObservable1.on(.completed)\n            hotObservable.on(.completed)\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [\n            1, 2, -2,\n            10, 11, -3,\n            -1\n        ])\n    }\n}\n\n// MARK: flatMapLatest\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_flatMapLatest() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable1 = MainThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = MainThreadPrimitiveHotObservable<Int>()\n        let errorHotObservable = MainThreadPrimitiveHotObservable<Int>()\n\n        let signals: [Signal<Int>] = [\n            hotObservable1.asSignal(onErrorJustReturn: -2),\n            hotObservable2.asSignal(onErrorJustReturn: -3),\n            errorHotObservable.asSignal(onErrorJustReturn: -4)\n        ]\n\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: 2).flatMapLatest { signals[$0] }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(0))\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n            hotObservable1.on(.error(testError))\n\n            hotObservable.on(.next(1))\n\n            hotObservable2.on(.next(10))\n            hotObservable2.on(.next(11))\n            hotObservable2.on(.error(testError))\n\n            hotObservable.on(.error(testError))\n\n            errorHotObservable.on(.completed)\n            hotObservable.on(.completed)\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [\n            1, 2, -2,\n            10, 11, -3\n        ])\n    }\n}\n\n// MARK: flatMapFirst\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_flatMapFirst() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable1 = MainThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = MainThreadPrimitiveHotObservable<Int>()\n        let errorHotObservable = MainThreadPrimitiveHotObservable<Int>()\n\n        let signals: [Signal<Int>] = [\n            hotObservable1.asSignal(onErrorJustReturn: -2),\n            hotObservable2.asSignal(onErrorJustReturn: -3),\n            errorHotObservable.asSignal(onErrorJustReturn: -4)\n        ]\n\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: 2).flatMapFirst { signals[$0] }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(0))\n            hotObservable.on(.next(1))\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n            hotObservable1.on(.error(testError))\n\n            hotObservable2.on(.next(10))\n            hotObservable2.on(.next(11))\n            hotObservable2.on(.error(testError))\n\n            hotObservable.on(.error(testError))\n\n            errorHotObservable.on(.completed)\n            hotObservable.on(.completed)\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [\n            1, 2, -2\n        ])\n    }\n}\n\n// MARK: doOn\n\nextension SharedSequenceOperatorTests {\n    private enum OrderedEvent: Equatable {\n        case before(Event<Int>)\n        case subscribe(Event<Int>)\n        case after(Event<Int>)\n    }\n\n    func testAsDriver_doOn() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        var events = [OrderedEvent]()\n\n        var calledSubscribe = false\n        var calledSubscribed = false\n        var calledDispose = false\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onNext: { e in\n            XCTAssertTrue(DispatchQueue.isMain)\n            events.append(.subscribe(.next(e)))\n        }, afterNext: { e in\n            XCTAssertTrue(DispatchQueue.isMain)\n            events.append(.after(.next(e)))\n        }, onCompleted: {\n            XCTAssertTrue(DispatchQueue.isMain)\n            events.append(.subscribe(.completed))\n        }, afterCompleted: {\n            events.append(.after(.completed))\n        }, onSubscribe: {\n            XCTAssertTrue(!DispatchQueue.isMain)\n            calledSubscribe = true\n        }, onSubscribed: {\n            XCTAssertTrue(!DispatchQueue.isMain)\n            calledSubscribed = true\n        }, onDispose: {\n            XCTAssertTrue(DispatchQueue.isMain)\n            calledDispose = true\n        })\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n        let expectedEvents: [OrderedEvent] = [.subscribe(.next(1)), .after(.next(1)), .subscribe(.next(2)), .after(.next(2)), .subscribe(.next(-1)), .after(.next(-1)), .subscribe(.completed), .after(.completed)]\n        XCTAssertEqual(events, expectedEvents)\n        XCTAssertEqual(calledSubscribe, true)\n        XCTAssertEqual(calledSubscribed, true)\n        XCTAssertEqual(calledDispose, true)\n    }\n\n    func testAsDriver_doOnNext() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        var events = [Int]()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onNext: { e in\n            XCTAssertTrue(DispatchQueue.isMain)\n            events.append(e)\n        })\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n        let expectedEvents = [1, 2, -1]\n        XCTAssertEqual(events, expectedEvents)\n    }\n\n    func testAsDriver_doAfterNext() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        var events = [OrderedEvent]()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onNext: { e in\n            events.append(.subscribe(.next(e)))\n        }, afterNext: { e in\n            XCTAssertTrue(DispatchQueue.isMain)\n            events.append(.after(.next(e)))\n        })\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n        let expectedEvents: [OrderedEvent] = [.subscribe(.next(1)), .after(.next(1)), .subscribe(.next(2)), .after(.next(2)), .subscribe(.next(-1)), .after(.next(-1))]\n        XCTAssertEqual(events, expectedEvents)\n    }\n\n    func testAsDriver_doOnCompleted() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        var completed = false\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).do(onCompleted: {\n            XCTAssertTrue(DispatchQueue.isMain)\n            completed = true\n        })\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n        XCTAssertEqual(completed, true)\n    }\n}\n\n// MARK: distinct until change\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_distinctUntilChanged1() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).distinctUntilChanged()\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_distinctUntilChanged2() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).distinctUntilChanged { $0 }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_distinctUntilChanged3() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).distinctUntilChanged { $0 == $1 }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsDriver_distinctUntilChanged4() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).distinctUntilChanged({ $0 }) { $0 == $1 }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n}\n\n// MARK: flat map\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_flatMap() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: -1).flatMap { (n: Int) -> Signal<Int> in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return Signal.just(n + 1)\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2, 3, 0])\n    }\n}\n\n// MARK: merge\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_mergeSync() {\n        let factories: [(Driver<Int>) -> Driver<Int>] =\n            [\n                { source in Driver.merge(source) },\n                { source in Driver.merge([source]) },\n                { source in Driver.merge(AnyCollection([source])) }\n            ]\n\n        for factory in factories {\n            let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n            let driver = factory(hotObservable.asDriver(onErrorJustReturn: -1))\n\n            let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n                XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n                hotObservable.on(.next(1))\n                hotObservable.on(.next(2))\n                hotObservable.on(.error(testError))\n\n                XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n            }\n\n            XCTAssertEqual(results, [1, 2, -1])\n        }\n    }\n}\n\n// MARK: merge\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_merge() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Signal<Int> in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return Signal.just(n + 1)\n        }.merge()\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2, 3, 0])\n    }\n\n    func testAsDriver_merge2() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs: Signal<Int> = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Signal<Int> in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return Signal.just(n + 1)\n        }.merge(maxConcurrent: 1)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2, 3, 0])\n    }\n}\n\n// MARK: debug\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_debug() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).debug(\"a\", trimOutput: false)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, -1])\n    }\n}\n\n// MARK: debounce\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_debounce() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).debounce(.seconds(0))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [-1])\n    }\n\n    func testAsDriver_throttle() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).throttle(.milliseconds(500))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, -1])\n    }\n\n    func testAsDriver_throttle2() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).throttle(.milliseconds(500), latest: false)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1])\n    }\n}\n\n// MARK: scan\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_scan() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let driver = hotObservable.asDriver(onErrorJustReturn: -1).scan(0) { (a: Int, n: Int) -> Int in\n            XCTAssertTrue(DispatchQueue.isMain)\n            return a + n\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 3, 2])\n    }\n}\n\n// MARK: concat\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_concat_sequenceType() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = MainThreadPrimitiveHotObservable<Int>()\n\n        let driver = Driver.concat(AnySequence([hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2)]))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n            hotObservable1.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable2.on(.next(4))\n            hotObservable2.on(.next(5))\n            hotObservable2.on(.error(testError))\n\n            XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1, 4, 5, -2])\n    }\n\n    func testAsDriver_concat() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = MainThreadPrimitiveHotObservable<Int>()\n\n        let driver = Driver.concat([hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2)])\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n            hotObservable1.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable2.on(.next(4))\n            hotObservable2.on(.next(5))\n            hotObservable2.on(.error(testError))\n\n            XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1, 4, 5, -2])\n    }\n}\n\n// MARK: combine latest\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_combineLatest_array() {\n        let factories: [([Driver<Int>]) -> Driver<Int>] =\n            [\n                { e0 in\n                    Driver.combineLatest(e0) { a in a.reduce(0, +) }\n                },\n                { e0 in\n                    Driver.combineLatest(e0).map { a in a.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n            let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n            let driver = factory([hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2)])\n\n            let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n                XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n                hotObservable1.on(.next(1))\n                hotObservable2.on(.next(4))\n\n                hotObservable1.on(.next(2))\n                hotObservable2.on(.next(5))\n\n                hotObservable1.on(.error(testError))\n                hotObservable2.on(.error(testError))\n\n                XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n            }\n\n            XCTAssertEqual(results, [5, 6, 7, 4, -3])\n        }\n    }\n\n    func testAsDriver_combineLatest() {\n        let factories: [(Driver<Int>, Driver<Int>) -> Driver<Int>] =\n            [\n                { e0, e1 in\n                    Driver.combineLatest(e0, e1, resultSelector: +)\n                },\n                { e0, e1 in\n                    Driver.combineLatest(e0, e1).map(+)\n                }\n            ]\n        for factory in factories {\n            let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n            let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n            let driver = factory(hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2))\n\n            let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n                XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n                hotObservable1.on(.next(1))\n                hotObservable2.on(.next(4))\n\n                hotObservable1.on(.next(2))\n                hotObservable2.on(.next(5))\n\n                hotObservable1.on(.error(testError))\n                hotObservable2.on(.error(testError))\n\n                XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n            }\n\n            XCTAssertEqual(results, [5, 6, 7, 4, -3])\n        }\n    }\n}\n\n// MARK: zip\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_zip_array() {\n        let factories: [([Driver<Int>]) -> Driver<Int>] =\n            [\n                { e0 in\n                    Driver.zip(e0) { a in a.reduce(0, +) }\n                },\n                { e0 in\n                    Driver.zip(e0).map { a in a.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n            let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n            let driver = factory([hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2)])\n\n            let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n                XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n                hotObservable1.on(.next(1))\n                hotObservable2.on(.next(4))\n\n                hotObservable1.on(.next(2))\n                hotObservable2.on(.next(5))\n\n                hotObservable1.on(.error(testError))\n                hotObservable2.on(.error(testError))\n\n                XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n            }\n\n            XCTAssertEqual(results, [5, 7, -3])\n        }\n    }\n\n    func testAsDriver_zip() {\n        let factories: [(Driver<Int>, Driver<Int>) -> Driver<Int>] =\n            [\n                { e0, e1 in\n                    Driver.zip(e0, e1, resultSelector: +)\n                },\n                { e0, e1 in\n                    Driver.zip(e0, e1).map(+)\n                }\n            ]\n        for factory in factories {\n            let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n            let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n            let driver = factory(hotObservable1.asDriver(onErrorJustReturn: -1), hotObservable2.asDriver(onErrorJustReturn: -2))\n\n            let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n                XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n                hotObservable1.on(.next(1))\n                hotObservable2.on(.next(4))\n\n                hotObservable1.on(.next(2))\n                hotObservable2.on(.next(5))\n\n                hotObservable1.on(.error(testError))\n                hotObservable2.on(.error(testError))\n\n                XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n                XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n            }\n\n            XCTAssertEqual(results, [5, 7, -3])\n        }\n    }\n}\n\n// MARK: withLatestFrom\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_withLatestFrom() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable1.asDriver(onErrorJustReturn: -1).withLatestFrom(hotObservable2.asDriver(onErrorJustReturn: -2)) { f, s in \"\\(f)\\(s)\" }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable2.on(.next(4))\n\n            hotObservable1.on(.next(2))\n            hotObservable2.on(.next(5))\n\n            hotObservable1.on(.error(testError))\n            hotObservable2.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [\"24\", \"-15\"])\n    }\n\n    func testAsDriver_withLatestFromDefaultOverload() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n        let hotObservable2 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable1.asDriver(onErrorJustReturn: -1).withLatestFrom(hotObservable2.asDriver(onErrorJustReturn: -2))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable2.on(.next(4))\n\n            hotObservable1.on(.next(2))\n            hotObservable2.on(.next(5))\n\n            hotObservable1.on(.error(testError))\n            hotObservable2.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n            XCTAssertTrue(hotObservable2.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [4, 5])\n    }\n}\n\n// MARK: skip\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_skip() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable1.asDriver(onErrorJustReturn: -1).skip(1)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n\n            hotObservable1.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [2, -1])\n    }\n}\n\n// MARK: startWith\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_startWith() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable1.asDriver(onErrorJustReturn: -1).startWith(0)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n\n            hotObservable1.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [0, 1, 2, -1])\n    }\n}\n\n// MARK: delay\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_delay() {\n        let hotObservable1 = BackgroundThreadPrimitiveHotObservable<Int>()\n\n        let driver = hotObservable1.asDriver(onErrorJustReturn: -1).delay(.milliseconds(100))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) {\n            XCTAssertTrue(hotObservable1.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable1.on(.next(1))\n            hotObservable1.on(.next(2))\n\n            hotObservable1.on(.error(testError))\n\n            XCTAssertTrue(hotObservable1.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n}\n\n// MARK: interval\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_interval() {\n        let testScheduler = TestScheduler(initialClock: 0)\n\n        let firstObserver = testScheduler.createObserver(Int.self)\n        let secondObserver = testScheduler.createObserver(Int.self)\n\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n\n        SharingScheduler.mock(scheduler: testScheduler) {\n            let interval = Driver<Int>.interval(.seconds(100))\n\n            testScheduler.scheduleAt(20) {\n                disposable1 = interval.asObservable().subscribe(firstObserver)\n            }\n\n            testScheduler.scheduleAt(170) {\n                disposable2 = interval.asObservable().subscribe(secondObserver)\n            }\n\n            testScheduler.scheduleAt(230) {\n                disposable1.dispose()\n                disposable2.dispose()\n            }\n\n            testScheduler.start()\n        }\n\n        XCTAssertEqual(firstObserver.events, [\n            .next(120, 0),\n            .next(220, 1)\n        ])\n        XCTAssertEqual(secondObserver.events, [\n            .next(170, 0),\n            .next(220, 1)\n        ])\n    }\n}\n\n// MARK: timer\n\nextension SharedSequenceOperatorTests {\n    func testAsDriver_timer() {\n        let testScheduler = TestScheduler(initialClock: 0)\n\n        let firstObserver = testScheduler.createObserver(Int.self)\n        let secondObserver = testScheduler.createObserver(Int.self)\n\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n\n        SharingScheduler.mock(scheduler: testScheduler) {\n            let interval = Driver<Int>.timer(.seconds(100), period: .seconds(105))\n\n            testScheduler.scheduleAt(20) {\n                disposable1 = interval.asObservable().subscribe(firstObserver)\n            }\n\n            testScheduler.scheduleAt(170) {\n                disposable2 = interval.asObservable().subscribe(secondObserver)\n            }\n\n            testScheduler.scheduleAt(230) {\n                disposable1.dispose()\n                disposable2.dispose()\n            }\n\n            testScheduler.start()\n        }\n\n        XCTAssertEqual(firstObserver.events, [\n            .next(120, 0),\n            .next(225, 1)\n        ])\n        XCTAssertEqual(secondObserver.events, [\n            .next(170, 0),\n            .next(225, 1)\n        ])\n    }\n}\n\n// MARK: from optional\n\nextension SharedSequenceOperatorTests {\n    func testDriverFromOptional() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        SharingScheduler.mock(scheduler: scheduler) {\n            let res = scheduler.start { Driver.from(optional: 1 as Int?) }\n            XCTAssertEqual(res.events, [\n                .next(201, 1),\n                .completed(202)\n            ])\n        }\n    }\n\n    func testDriverFromOptionalWhenNil() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        SharingScheduler.mock(scheduler: scheduler) {\n            let res = scheduler.start { Driver.from(optional: nil as Int?) }\n            XCTAssertEqual(res.events, [\n                .completed(201)\n            ])\n        }\n    }\n}\n\n// MARK: from sequence\n\nextension SharedSequenceOperatorTests {\n    func testDriverFromSequence() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        SharingScheduler.mock(scheduler: scheduler) {\n            let res = scheduler.start { Driver.from(AnySequence([10])) }\n            XCTAssertEqual(res.events, [\n                .next(201, 10),\n                .completed(202)\n            ])\n        }\n    }\n\n    func testDriverFromArray() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        SharingScheduler.mock(scheduler: scheduler) {\n            let res = scheduler.start { Driver.from([20]) }\n            XCTAssertEqual(res.events, [\n                .next(201, 20),\n                .completed(202)\n            ])\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/SharedSequence+Test.swift",
    "content": "//\n//  SharedSequence+Test.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 8/27/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass SharedSequenceTest: RxTest {\n    var backgroundScheduler = SerialDispatchQueueScheduler(qos: .default)\n\n    override func tearDown() {\n        super.tearDown()\n    }\n}\n\n// test helpers that make sure that resulting driver operator honors definition\n// * only one subscription is made and shared - shareReplay(1)\n// * subscription is made on main thread - subscribe(on: ConcurrentMainScheduler.instance)\n// * events are observed on main thread - observe(on:MainScheduler.instance)\n// * it can't error out - it needs to have catch somewhere\nextension SharedSequenceTest {\n    func subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription<Result>(_ xs: SharedSequence<some Any, Result>, expectationFulfilled: @escaping (Result) -> Bool = { _ in false }, subscribedOnBackground: () -> Void) -> [Result] {\n        var firstElements = [Result]()\n        var secondElements = [Result]()\n\n        let subscribeFinished = expectation(description: \"subscribeFinished\")\n\n        var expectation1: XCTestExpectation!\n        var expectation2: XCTestExpectation!\n\n        _ = backgroundScheduler.schedule(()) { _ in\n            let subscribing1 = AtomicInt(1)\n            let firstSubscriptionFuture = SingleAssignmentDisposable()\n            let firstSubscription = xs.asObservable().subscribe { e in\n                if globalLoad(subscribing1) == 0 {\n                    XCTAssertTrue(DispatchQueue.isMain)\n                }\n                switch e {\n                case let .next(element):\n                    firstElements.append(element)\n                    if expectationFulfilled(element) {\n                        expectation1.fulfill()\n                        firstSubscriptionFuture.dispose()\n                    }\n                case let .error(error):\n                    XCTFail(\"Error passed \\(error)\")\n                case .completed:\n                    expectation1.fulfill()\n                }\n            }\n            firstSubscriptionFuture.setDisposable(firstSubscription)\n            sub(subscribing1, 1)\n\n            let subscribing = AtomicInt(1)\n            let secondSubscriptionFuture = SingleAssignmentDisposable()\n            let secondSubscription = xs.asObservable().subscribe { e in\n                if globalLoad(subscribing) == 0 {\n                    XCTAssertTrue(DispatchQueue.isMain)\n                }\n                switch e {\n                case let .next(element):\n                    secondElements.append(element)\n                    if expectationFulfilled(element) {\n                        expectation2.fulfill()\n                        secondSubscriptionFuture.dispose()\n                    }\n                case let .error(error):\n                    XCTFail(\"Error passed \\(error)\")\n                case .completed:\n                    expectation2.fulfill()\n                }\n            }\n            secondSubscriptionFuture.setDisposable(secondSubscription)\n\n            sub(subscribing, 1)\n\n            // Subscription should be made on main scheduler\n            // so this will make sure execution is continued after\n            // subscription because of serial nature of main scheduler.\n            _ = MainScheduler.instance.schedule(()) { _ in\n                subscribeFinished.fulfill()\n                return Disposables.create()\n            }\n\n            return Disposables.create()\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertTrue(error == nil)\n        }\n\n        expectation1 = expectation(description: \"finished1\")\n        expectation2 = expectation(description: \"finished2\")\n\n        subscribedOnBackground()\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertTrue(error == nil)\n        }\n\n        return firstElements\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/Signal+Test.swift",
    "content": "//\n//  Signal+Test.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 2/26/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass SignalTests: SharedSequenceTest {}\n\nextension SignalTests {\n    func testSignalSharing_WhenErroring() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let observer1 = scheduler.createObserver(Int.self)\n        let observer2 = scheduler.createObserver(Int.self)\n        let observer3 = scheduler.createObserver(Int.self)\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n        var disposable3: Disposable!\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .error(50, testError)\n        ])\n        let signal = coldObservable.asSignal(onErrorJustReturn: -1)\n\n        scheduler.scheduleAt(200) {\n            disposable1 = signal.asObservable().subscribe(observer1)\n        }\n\n        scheduler.scheduleAt(225) {\n            disposable2 = signal.asObservable().subscribe(observer2)\n        }\n\n        scheduler.scheduleAt(235) {\n            disposable1.dispose()\n        }\n\n        scheduler.scheduleAt(260) {\n            disposable2.dispose()\n        }\n\n        // resubscription\n\n        scheduler.scheduleAt(260) {\n            disposable3 = signal.asObservable().subscribe(observer3)\n        }\n\n        scheduler.scheduleAt(285) {\n            disposable3.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(observer1.events, [\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(observer2.events, [\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, -1),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(observer3.events, [\n            .next(270, 0),\n            .next(280, 1)\n        ])\n\n        XCTAssertEqual(coldObservable.subscriptions, [\n            Subscription(200, 250),\n            Subscription(260, 285)\n        ])\n    }\n\n    func testSignalSharing_WhenCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let observer1 = scheduler.createObserver(Int.self)\n        let observer2 = scheduler.createObserver(Int.self)\n        let observer3 = scheduler.createObserver(Int.self)\n        var disposable1: Disposable!\n        var disposable2: Disposable!\n        var disposable3: Disposable!\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n        let signal = coldObservable.asSignal(onErrorJustReturn: -1)\n\n        scheduler.scheduleAt(200) {\n            disposable1 = signal.asObservable().subscribe(observer1)\n        }\n\n        scheduler.scheduleAt(225) {\n            disposable2 = signal.asObservable().subscribe(observer2)\n        }\n\n        scheduler.scheduleAt(235) {\n            disposable1.dispose()\n        }\n\n        scheduler.scheduleAt(260) {\n            disposable2.dispose()\n        }\n\n        // resubscription\n\n        scheduler.scheduleAt(260) {\n            disposable3 = signal.asObservable().subscribe(observer3)\n        }\n\n        scheduler.scheduleAt(285) {\n            disposable3.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(observer1.events, [\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(observer2.events, [\n            .next(230, 2),\n            .next(240, 3),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(observer3.events, [\n            .next(270, 0),\n            .next(280, 1)\n        ])\n\n        XCTAssertEqual(coldObservable.subscriptions, [\n            Subscription(200, 250),\n            Subscription(260, 285)\n        ])\n    }\n}\n\n// MARK: conversions\n\nextension SignalTests {\n    func testPublishRelayAsSignal() {\n        let hotObservable: PublishRelay<Int> = PublishRelay()\n        let xs = Signal.zip(hotObservable.asSignal(), Signal.of(0, 0)) { x, _ in\n            x\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs, expectationFulfilled: { $0 == 2 }) {\n            hotObservable.accept(1)\n            hotObservable.accept(2)\n        }\n\n        XCTAssertEqual(results, [1, 2])\n    }\n\n    func testControlEventAsSignal() {\n        let hotObservable: PublishRelay<Int> = PublishRelay()\n        let controlEvent = ControlEvent(events: hotObservable.asObservable())\n        let xs = Signal.zip(controlEvent.asSignal(), Signal.of(0, 0)) { x, _ in\n            x\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs, expectationFulfilled: { $0 == 2 }) {\n            hotObservable.accept(1)\n            hotObservable.accept(2)\n        }\n\n        XCTAssertEqual(results, [1, 2])\n    }\n\n    func testAsSignal_onErrorJustReturn() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asSignal(onErrorJustReturn: -1)\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsSignal_onErrorDriveWith() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asSignal(onErrorSignalWith: Signal.just(-1))\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2, -1])\n    }\n\n    func testAsSignal_onErrorRecover() {\n        let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()\n        let xs = hotObservable.asSignal { _ in\n            Signal.empty()\n        }\n\n        let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(xs) {\n            XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable])\n\n            hotObservable.on(.next(1))\n            hotObservable.on(.next(2))\n            hotObservable.on(.error(testError))\n\n            XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable])\n        }\n\n        XCTAssertEqual(results, [1, 2])\n    }\n}\n\n// MARK: emit observer\n\nextension SignalTests {\n    func testEmitObserver() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let observer: AnyObserver<Int> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Signal.just(1).emit(to: observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n\n    func testEmitObservers() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let observer1: AnyObserver<Int> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testEmitOptionalObserver() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n\n    func testEmitOptionalObservers() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let observer1: AnyObserver<Int?> = AnyObserver { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        let observer2: AnyObserver<Int?> = AnyObserver { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: observer1, observer2)\n\n        XCTAssertEqual(events1, [\n            .next(1),\n            .completed()\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1),\n            .completed()\n        ])\n    }\n\n    func testEmitNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let observer: AnyObserver<Int?> = AnyObserver { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        // shouldn't cause compile time error\n        _ = Signal.just(1).emit(to: observer)\n\n        XCTAssertEqual(events.first?.value.element.flatMap(\\.self), 1)\n    }\n}\n\n// MARK: emit behavior relay\n\nextension SignalTests {\n    func testEmitBehaviorRelay() {\n        let relay = BehaviorRelay<Int>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelays() {\n        let relay1 = BehaviorRelay<Int>(value: 0)\n        let relay2 = BehaviorRelay<Int>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelay1() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelays1() {\n        let relay1 = BehaviorRelay<Int?>(value: 0)\n        let relay2 = BehaviorRelay<Int?>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelay2() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int?>).emit(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelays2() {\n        let relay1 = BehaviorRelay<Int?>(value: 0)\n        let relay2 = BehaviorRelay<Int?>(value: 0)\n\n        let subscription = (Signal.just(1) as Signal<Int?>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n        subscription.dispose()\n    }\n\n    func testEmitBehaviorRelayNoAmbiguity() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        // shouldn't cause compile time error\n        let subscription = Signal.just(1).emit(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n        subscription.dispose()\n    }\n}\n\n// MARK: Emit to publish relay\n\nextension SignalTests {\n    func testEmitPublishRelay() {\n        let relay = PublishRelay<Int>()\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitPublishRelays() {\n        let relay1 = PublishRelay<Int>()\n        let relay2 = PublishRelay<Int>()\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitOptionalPublishRelay1() {\n        let relay = PublishRelay<Int?>()\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitOptionalPublishRelays() {\n        let relay1 = PublishRelay<Int?>()\n        let relay2 = PublishRelay<Int?>()\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitOptionalPublishRelay2() {\n        let relay = PublishRelay<Int?>()\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int?>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitPublishRelays2() {\n        let relay1 = PublishRelay<Int?>()\n        let relay2 = PublishRelay<Int?>()\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int?>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitPublishRelayNoAmbiguity() {\n        let relay = PublishRelay<Int?>()\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        // shouldn't cause compile time error\n        _ = Signal.just(1).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n}\n\n// MARK: Emit to replay relay\n\nextension SignalTests {\n    func testEmitReplayRelay() {\n        let relay = ReplayRelay<Int>.create(bufferSize: 1)\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitReplayRelays() {\n        let relay1 = ReplayRelay<Int>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitOptionalReplayRelay1() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitOptionalReplayRelays() {\n        let relay1 = ReplayRelay<Int?>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitOptionalReplayRelay2() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int?\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int?>).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n\n    func testEmitReplayRelays2() {\n        let relay1 = ReplayRelay<Int?>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest1: Int?\n        var latest2: Int?\n\n        _ = relay1.subscribe(onNext: { latestElement in\n            latest1 = latestElement\n        })\n\n        _ = relay2.subscribe(onNext: { latestElement in\n            latest2 = latestElement\n        })\n\n        _ = (Signal.just(1) as Signal<Int?>).emit(to: relay1, relay2)\n\n        XCTAssertEqual(latest1, 1)\n        XCTAssertEqual(latest2, 1)\n    }\n\n    func testEmitReplayRelayNoAmbiguity() {\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        var latest: Int? = nil\n        _ = relay.subscribe(onNext: { latestElement in\n            latest = latestElement\n        })\n\n        // shouldn't cause compile time error\n        _ = Signal.just(1).emit(to: relay)\n\n        XCTAssertEqual(latest, 1)\n    }\n}\n\n// MARK: - Emit with object\n\nextension SignalTests {\n    func testEmitWithNext() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let signal = coldObservable.asSignal(onErrorJustReturn: -1)\n\n        _ = signal\n            .emit(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"3\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n\n    func testEmitWithError() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .error(40, testError),\n            .next(50, 3)\n        ])\n\n        let signal = coldObservable.asSignal(onErrorJustReturn: -1)\n\n        _ = signal\n            .emit(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"-1\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n\n    func testEmitWithCompleted() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        var completed: UUID?\n\n        let coldObservable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .completed(40)\n        ])\n\n        let signal = coldObservable.asSignal(onErrorJustReturn: -1)\n\n        _ = signal\n            .emit(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onCompleted: { completed = $0.id },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\"\n        ])\n\n        XCTAssertEqual(disposed, uuid)\n        XCTAssertEqual(completed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n}\n\nprivate class TestObject: NSObject {\n    var id = UUID()\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/TestImplementations/SectionedViewDataSourceMock.swift",
    "content": "//\n//  SectionedViewDataSourceMock.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/10/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\n\n@objc final class SectionedViewDataSourceMock:\n    NSObject,\n    SectionedViewDataSourceType,\n    UITableViewDataSource,\n    UICollectionViewDataSource,\n    RxTableViewDataSourceType,\n    RxCollectionViewDataSourceType\n{\n    typealias Element = [Int]\n\n    var items: [Int]?\n\n    override init() {\n        super.init()\n    }\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        items![indexPath.item]\n    }\n\n    func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        0\n    }\n\n    func tableView(_: UITableView, cellForRowAt _: IndexPath) -> UITableViewCell {\n        UITableViewCell()\n    }\n\n    func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {\n        0\n    }\n\n    func collectionView(_: UICollectionView, cellForItemAt _: IndexPath) -> UICollectionViewCell {\n        UICollectionViewCell()\n    }\n\n    func tableView(_: UITableView, observedEvent: Event<Element>) {\n        items = observedEvent.element!\n    }\n\n    func collectionView(_: UICollectionView, observedEvent: Event<Element>) {\n        items = observedEvent.element!\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIActivityIndicatorView+RxTests.swift",
    "content": "//\n//  UIActivityIndicatorView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UIActivityIndicatorViewTests: RxTest {}\n\nextension UIActivityIndicatorViewTests {\n    func testActivityIndicator_HasWeakReference() {\n        ensureControlObserverHasWeakReference(UIActivityIndicatorView(), { (view: UIActivityIndicatorView) -> AnyObserver<Bool> in view.rx.isAnimating.asObserver() }, { BehaviorRelay<Bool>(value: true).asObservable() })\n    }\n\n    func testActivityIndicator_NextElementsSetsValue() {\n        let subject = UIActivityIndicatorView()\n        let boolSequence = BehaviorRelay<Bool>(value: false)\n\n        let disposable = boolSequence.asObservable().bind(to: subject.rx.isAnimating)\n        defer { disposable.dispose() }\n\n        boolSequence.accept(true)\n        XCTAssertTrue(subject.isAnimating, \"Expected animation to be started\")\n\n        boolSequence.accept(false)\n        XCTAssertFalse(subject.isAnimating, \"Expected animation to be stopped\")\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIAlertAction+RxTests.swift",
    "content": "//\n//  UIAlertAction+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UIAlertActionTests: RxTest {}\n\nextension UIAlertActionTests {\n    func testAlertAction_Enable() {\n        let subject = UIAlertAction()\n        Observable.just(false).subscribe(subject.rx.isEnabled).dispose()\n\n        XCTAssertTrue(subject.isEnabled == false)\n    }\n\n    func testAlertAction_Disable() {\n        let subject = UIAlertAction()\n        Observable.just(true).subscribe(subject.rx.isEnabled).dispose()\n\n        XCTAssertTrue(subject.isEnabled == true)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIApplication+RxTests.swift",
    "content": "//\n//  UIApplication+RxTests.swift\n//  Tests\n//\n//  Created by Zsolt Kovacs on 01/17/20.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIApplicationTests: RxTest {\n    func testApplication_didEnterBackground() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.didEnterBackground.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.didEnterBackgroundNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_willEnterForeground() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.willEnterForeground.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.willEnterForegroundNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_didFinishLaunching() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.didFinishLaunching.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.didFinishLaunchingNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_didBecomeActive() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.didBecomeActive.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.didBecomeActiveNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_willResignActive() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.willResignActive.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.willResignActiveNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_didReceiveMemoryWarning() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.didReceiveMemoryWarning.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.didReceiveMemoryWarningNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_willTerminate() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.willTerminate.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.willTerminateNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_significantTimeChange() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.significantTimeChange.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.significantTimeChangeNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_backgroundRefreshStatusDidChange() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.backgroundRefreshStatusDidChange.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.backgroundRefreshStatusDidChangeNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_protectedDataWillBecomeUnavailable() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.protectedDataWillBecomeUnavailable.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.protectedDataWillBecomeUnavailableNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_protectedDataDidBecomeAvailable() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.protectedDataDidBecomeAvailable.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.protectedDataDidBecomeAvailableNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n\n    func testApplication_userDidTakeScreenshot() {\n        var didReceiveNotification = false\n        let subscription = UIApplication.rx.userDidTakeScreenshot.subscribe(onNext: { didReceiveNotification = true })\n\n        NotificationCenter.default.post(name: UIApplication.userDidTakeScreenshotNotification, object: UIApplication.shared)\n\n        XCTAssertTrue(didReceiveNotification)\n        subscription.dispose()\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIBarButtonItem+RxTests.swift",
    "content": "//\n//  UIBarButtonItem+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UIBarButtonItemTests: RxTest {}\n\n// UIBarButtonItem\nextension UIBarButtonItemTests {\n    func testBarButtonItem_DelegateEventCompletesOnDealloc() {\n        ensureEventDeallocated({ UIBarButtonItem() }) { (view: UIBarButtonItem) in view.rx.tap }\n    }\n\n    func testButton_titleObserver() {\n        let button = UIBarButtonItem()\n        XCTAssertEqual(button.title, nil)\n        let text = \"title\"\n        _ = Observable.just(text).bind(to: button.rx.title)\n\n        XCTAssertEqual(button.title, text)\n    }\n\n    func testBarButtonItem_actionExecution() {\n        let button = UIBarButtonItem()\n        var onNextCalled = false\n        let disposable = button.rx.tap.subscribe(onNext: { _ in\n            onNextCalled = true\n        })\n        defer { disposable.dispose() }\n        _ = button.target?.perform(button.action, with: nil)\n        XCTAssert(onNextCalled)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIButton+RxTests.swift",
    "content": "//\n//  UIButton+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 6/24/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport UIKit\nimport XCTest\n\nfinal class UIButtonTests: RxTest {}\n\nextension UIButtonTests {\n    func testTitleNormal() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.title(for: .normal) == \"normal\")\n        _ = Observable.just(\"normal\").subscribe(button.rx.title(for: .normal))\n        XCTAssertTrue(button.title(for: .normal) == \"normal\")\n    }\n\n    func testTitleSelected() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.title(for: .selected) == \"normal\")\n        _ = Observable.just(\"normal\").subscribe(button.rx.title(for: .selected))\n        XCTAssertTrue(button.title(for: .selected) == \"normal\")\n    }\n\n    func testTitleDefault() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.title(for: []) == \"normal\")\n        _ = Observable.just(\"normal\").subscribe(button.rx.title())\n        XCTAssertTrue(button.title(for: []) == \"normal\")\n    }\n\n    func testAttributedTitleNormal() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.attributedTitle(for: []) == NSAttributedString(string: \"normal\"))\n        _ = Observable.just(NSAttributedString(string: \"normal\")).subscribe(button.rx.attributedTitle(for: []))\n        XCTAssertTrue(button.attributedTitle(for: []) == NSAttributedString(string: \"normal\"))\n    }\n\n    func testAttributedTitleSelected() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.attributedTitle(for: .selected) == NSAttributedString(string: \"normal\"))\n        _ = Observable.just(NSAttributedString(string: \"normal\")).subscribe(button.rx.attributedTitle(for: .selected))\n        XCTAssertTrue(button.attributedTitle(for: .selected) == NSAttributedString(string: \"normal\"))\n    }\n\n    func testAttributedTitleDefault() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        XCTAssertFalse(button.attributedTitle(for: []) == NSAttributedString(string: \"normal\"))\n        _ = Observable.just(NSAttributedString(string: \"normal\")).subscribe(button.rx.attributedTitle())\n        XCTAssertTrue(button.attributedTitle(for: []) == NSAttributedString(string: \"normal\"))\n    }\n}\n\n#if os(iOS)\n\nextension UIButtonTests {\n    func testButton_tapDeallocates() {\n        let createView: () -> UIButton = { UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensureEventDeallocated(createView) { (view: UIButton) in view.rx.tap }\n    }\n\n    func testImageNormal() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.image(for: .normal) == image)\n        _ = Observable.just(image).subscribe(button.rx.image(for: .normal))\n        XCTAssertTrue(button.image(for: .normal) == image)\n    }\n\n    func testImageSelected() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.image(for: .selected) == image)\n        _ = Observable.just(image).subscribe(button.rx.image(for: .selected))\n        XCTAssertTrue(button.image(for: .selected) == image)\n    }\n\n    func testImageDefault() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.image(for: []) == image)\n        _ = Observable.just(image).subscribe(button.rx.image())\n        XCTAssertTrue(button.image(for: []) == image)\n    }\n\n    func testBackgroundImageNormal() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.backgroundImage(for: .normal) == image)\n        _ = Observable.just(image).subscribe(button.rx.backgroundImage(for: .normal))\n        XCTAssertTrue(button.backgroundImage(for: .normal) == image)\n    }\n\n    func testBackgroundImageSelected() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.backgroundImage(for: .selected) == image)\n        _ = Observable.just(image).subscribe(button.rx.backgroundImage(for: .selected))\n        XCTAssertTrue(button.backgroundImage(for: .selected) == image)\n    }\n\n    func testBackgroundImageDefault() {\n        let button = UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let image = UIImage()\n\n        XCTAssertFalse(button.backgroundImage(for: []) == image)\n        _ = Observable.just(image).subscribe(button.rx.backgroundImage())\n        XCTAssertTrue(button.backgroundImage(for: []) == image)\n    }\n}\n\n#endif\n\n#if os(tvOS)\n\n// UIButton\nextension UIButtonTests {\n    func testButton_tapDeallocates() {\n        let createView: () -> UIButton = { UIButton(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensureEventDeallocated(createView) { (view: UIButton) in view.rx.primaryAction }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UICollectionView+RxTests.swift",
    "content": "//\n//  UICollectionView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/8/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\n// UICollectionView\nfinal class UICollectionViewTests: RxTest {\n    func test_DelegateEventCompletesOnDealloc() {\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> UICollectionView = { UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout) }\n\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.itemSelected }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.itemDeselected }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.modelSelected(Int.self) }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.modelDeselected(Int.self) }\n\n        #if os(tvOS)\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.didUpdateFocusInContextWithAnimationCoordinator }\n        #endif\n    }\n\n    func test_itemSelected() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.itemSelected\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didSelectItemAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemDeselected() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.itemDeselected\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didDeselectItemAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemHighlighted() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.itemHighlighted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didHighlightItemAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemUnhighlighted() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.itemUnhighlighted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didUnhighlightItemAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_willDisplayCell() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultCell: UICollectionViewCell? = nil\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.willDisplayCell\n            .subscribe(onNext: {\n                let (cell, indexPath) = $0\n                resultCell = cell\n                resultIndexPath = indexPath\n            })\n\n        let testCell = UICollectionViewCell(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let testIndexPath = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, willDisplay: testCell, forItemAt: testIndexPath)\n\n        XCTAssertEqual(resultCell, testCell)\n        XCTAssertEqual(resultIndexPath, testIndexPath)\n        subscription.dispose()\n    }\n\n    func test_willDisplaySupplementaryView() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultSupplementaryView: UICollectionReusableView? = nil\n        var resultElementKind: String? = nil\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.willDisplaySupplementaryView\n            .subscribe(onNext: {\n                let (reuseableView, elementKind, indexPath) = $0\n\n                resultSupplementaryView = reuseableView\n                resultElementKind = elementKind\n                resultIndexPath = indexPath\n            })\n\n        let testSupplementaryView = UICollectionReusableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let testElementKind = UICollectionView.elementKindSectionHeader\n        let testIndexPath = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, willDisplaySupplementaryView: testSupplementaryView, forElementKind: testElementKind, at: testIndexPath)\n\n        XCTAssertEqual(resultSupplementaryView, testSupplementaryView)\n        XCTAssertEqual(resultElementKind, testElementKind)\n        XCTAssertEqual(resultIndexPath, testIndexPath)\n        subscription.dispose()\n    }\n\n    func test_didEndDisplayingCell() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultCell: UICollectionViewCell? = nil\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.didEndDisplayingCell\n            .subscribe(onNext: {\n                let (cell, indexPath) = $0\n                resultCell = cell\n                resultIndexPath = indexPath\n            })\n\n        let testCell = UICollectionViewCell(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let testRow = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didEndDisplaying: testCell, forItemAt: testRow)\n\n        XCTAssertEqual(resultCell, testCell)\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_didEndDisplayingSupplementaryView() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var resultSupplementaryView: UICollectionReusableView? = nil\n        var resultElementKind: String? = nil\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = collectionView.rx.didEndDisplayingSupplementaryView\n            .subscribe(onNext: {\n                let (reuseableView, elementKind, indexPath) = $0\n                resultSupplementaryView = reuseableView\n                resultElementKind = elementKind\n                resultIndexPath = indexPath\n            })\n\n        let testSupplementaryView = UICollectionReusableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let testElementKind = UICollectionView.elementKindSectionHeader\n        let testIndexPath = IndexPath(row: 1, section: 0)\n        collectionView.delegate!.collectionView!(collectionView, didEndDisplayingSupplementaryView: testSupplementaryView, forElementOfKind: testElementKind, at: testIndexPath)\n\n        XCTAssertEqual(resultSupplementaryView, testSupplementaryView)\n        XCTAssertEqual(resultElementKind, testElementKind)\n        XCTAssertEqual(resultIndexPath, testIndexPath)\n        subscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_prefetchItems() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var indexPaths: [IndexPath] = []\n\n        let subscription = collectionView.rx.prefetchItems\n            .subscribe(onNext: {\n                indexPaths = $0\n            })\n\n        let testIndexPaths = [IndexPath(item: 1, section: 0), IndexPath(item: 2, section: 0)]\n        collectionView.prefetchDataSource!.collectionView(collectionView, prefetchItemsAt: testIndexPaths)\n\n        XCTAssertEqual(indexPaths, testIndexPaths)\n        subscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_cancelPrefetchingForItems() {\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n\n        var indexPaths: [IndexPath] = []\n\n        let subscription = collectionView.rx.cancelPrefetchingForItems\n            .subscribe(onNext: {\n                indexPaths = $0\n            })\n\n        let testIndexPaths = [IndexPath(item: 1, section: 0), IndexPath(item: 2, section: 0)]\n        collectionView.prefetchDataSource!.collectionView!(collectionView, cancelPrefetchingForItemsAt: testIndexPaths)\n\n        XCTAssertEqual(indexPaths, testIndexPaths)\n        subscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_PrefetchDataSourceEventCompletesOnDealloc() {\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> UICollectionView = { UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout) }\n\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.prefetchItems }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.cancelPrefetchingForItems }\n    }\n\n    func test_DelegateEventCompletesOnDealloc1() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            let s = items.bind(to: collectionView.rx.items) { (_, _: Int, _: Int) -> UICollectionViewCell in\n                return UICollectionViewCell(frame: CGRect(x: 1, y: 1, width: 1, height: 1))\n            }\n\n            return (collectionView, s)\n        }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func test_DelegateEventCompletesOnDealloc2() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let s = items.bind(to: collectionView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (collectionView, s)\n        }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func test_DelegateEventCompletesOnDealloc2_cellType() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let s = items.bind(to: collectionView.rx.items(cellIdentifier: \"a\", cellType: UICollectionViewCell.self)) { (_: Int, _: Int, _) in\n            }\n\n            return (collectionView, s)\n        }\n        ensureEventDeallocated(createView) { (view: UICollectionView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func test_ModelSelected_itemsWithCellFactory() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        layout.itemSize = CGSize(width: 20.0, height: 20.0)\n\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 100, height: 100), collectionViewLayout: layout)\n            collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: \"a\")\n            let s = items.bind(to: collectionView.rx.items) { (_, index: Int, _: Int) -> UICollectionViewCell in\n                return collectionView.dequeueReusableCell(withReuseIdentifier: \"a\", for: IndexPath(item: index, section: 0))\n            }\n\n            return (collectionView, s)\n        }\n\n        let (collectionView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = collectionView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { (item: Int) in\n                selectedItem = item\n            })\n\n        collectionView.delegate!.collectionView!(collectionView, didSelectItemAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_ModelSelected_itemsWithCellIdentifier() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: collectionView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (collectionView, dataSourceSubscription)\n        }\n        let (collectionView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = collectionView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        collectionView.delegate!.collectionView!(collectionView, didSelectItemAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        s.dispose()\n        dataSourceSubscription.dispose()\n    }\n\n    func test_ModelDeselected_itemsWithCellFactory() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        layout.itemSize = CGSize(width: 20.0, height: 20.0)\n\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 100, height: 100), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n\n            let s = items.bind(to: collectionView.rx.items) { (_, index: Int, _: Int) -> UICollectionViewCell in\n                return collectionView.dequeueReusableCell(withReuseIdentifier: \"a\", for: IndexPath(item: index, section: 0))\n            }\n\n            return (collectionView, s)\n        }\n\n        let (collectionView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = collectionView.rx.modelDeselected(Int.self)\n            .subscribe(onNext: { (item: Int) in\n                selectedItem = item\n            })\n\n        collectionView.delegate!.collectionView!(collectionView, didDeselectItemAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_ModelDeselected_itemsWithCellIdentifier() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: collectionView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (collectionView, dataSourceSubscription)\n        }\n        let (collectionView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = collectionView.rx.modelDeselected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        collectionView.delegate!.collectionView!(collectionView, didDeselectItemAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        s.dispose()\n        dataSourceSubscription.dispose()\n    }\n\n    func test_modelAtIndexPath_normal() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            let dataSourceSubscription = items.bind(to: collectionView.rx.items(dataSource: dataSource))\n\n            return (collectionView, dataSourceSubscription)\n        }\n        let (collectionView, dataSourceSubscription) = createView()\n\n        let model: Int = try! collectionView.rx.model(at: IndexPath(item: 1, section: 0))\n\n        XCTAssertEqual(model, 2)\n\n        dataSourceSubscription.dispose()\n    }\n\n//    #if os(tvOS)\n//\n//        func test_didUpdateFocusInContextWithAnimationCoordinator() {\n//            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n//\n//            let layout = UICollectionViewFlowLayout()\n//            let createView: () -> (UICollectionView, Disposable) = {\n//                let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n//                collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n//                let dataSource = SectionedViewDataSourceMock()\n//                let dataSourceSubscription = items.bind(to: collectionView.rx.items(dataSource: dataSource))\n//\n//                return (collectionView, dataSourceSubscription)\n//\n//            }\n//\n//            let (collectionView, dataSourceSubscription) = createView()\n//\n//            var resultContext: UICollectionViewFocusUpdateContext? = nil\n//            var resultAnimationCoordinator: UIFocusAnimationCoordinator? = nil\n//\n//            let subscription = collectionView.rx.didUpdateFocusInContextWithAnimationCoordinator\n//                .subscribe(onNext: { args in\n//                    let (context, animationCoordinator) = args\n//                    resultContext = context\n//                    resultAnimationCoordinator = animationCoordinator\n//                })\n//\n//            let context = UICollectionViewFocusUpdateContext()\n//            let animationCoordinator = UIFocusAnimationCoordinator()\n//\n//            XCTAssertEqual(resultContext, nil)\n//            XCTAssertEqual(resultAnimationCoordinator, nil)\n//\n//            collectionView.delegate!.collectionView!(collectionView, didUpdateFocusIn: context, with: animationCoordinator)\n//\n//            XCTAssertEqual(resultContext, context)\n//            XCTAssertEqual(resultAnimationCoordinator, animationCoordinator)\n//\n//            subscription.dispose()\n//            dataSourceSubscription.dispose()\n//        }\n//    #endif\n}\n\nextension UICollectionViewTests {\n    func testDataSourceIsBeingRetainedUntilDispose() {\n        var dataSourceDeallocated = false\n\n        var collectionViewOuter: UICollectionView? = nil\n        var dataSourceSubscription: Disposable!\n        collectionViewOuter?.becomeFirstResponder()\n        autoreleasepool {\n            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n            let layout = UICollectionViewFlowLayout()\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: \"a\")\n            collectionViewOuter = collectionView\n            let dataSource = SectionedViewDataSourceMock()\n            dataSourceSubscription = items.bind(to: collectionView.rx.items(dataSource: dataSource))\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n        }\n\n        XCTAssert(dataSourceDeallocated == false)\n        autoreleasepool { dataSourceSubscription.dispose() }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testDataSourceIsBeingRetainedUntilCollectionViewDealloc() {\n        var dataSourceDeallocated = false\n\n        autoreleasepool {\n            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n            let layout = UICollectionViewFlowLayout()\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            _ = items.bind(to: collectionView.rx.items(dataSource: dataSource))\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n\n            XCTAssert(dataSourceDeallocated == false)\n        }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testSetDataSourceUsesWeakReference() {\n        var dataSourceDeallocated = false\n\n        let layout = UICollectionViewFlowLayout()\n        let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n        autoreleasepool {\n            collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            _ = collectionView.rx.setDataSource(dataSource)\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n\n            XCTAssert(dataSourceDeallocated == false)\n        }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testDataSourceIsResetOnDispose() {\n        var disposeEvents: [String] = []\n\n        let items: Observable<[Int]> = Observable.just([1, 2, 3]).concat(Observable.never())\n            .do(onDispose: {\n                disposeEvents.append(\"disposed\")\n            })\n\n        let layout = UICollectionViewFlowLayout()\n        let createView: () -> (UICollectionView, Disposable) = {\n            let collectionView = UICollectionView(frame: CGRect(x: 0, y: 0, width: 1, height: 1), collectionViewLayout: layout)\n            collectionView.register(NSClassFromString(\"UICollectionViewCell\"), forCellWithReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            let dataSourceSubscription = items.bind(to: collectionView.rx.items(dataSource: dataSource))\n\n            let fakeVC = UIViewController()\n            fakeVC.view.addSubview(collectionView)\n\n            let window = UIWindow(frame: UIScreen.main.bounds)\n            window.rootViewController = fakeVC\n            window.makeKeyAndVisible()\n\n            return (collectionView, dataSourceSubscription)\n        }\n\n        let (collectionView, dataSourceSubscription) = createView()\n\n        XCTAssertTrue(collectionView.dataSource === RxCollectionViewDataSourceProxy.proxy(for: collectionView))\n\n        _ = collectionView.rx.sentMessage(#selector(UICollectionView.layoutIfNeeded)).subscribe(onNext: { _ in\n            disposeEvents.append(\"layoutIfNeeded\")\n        })\n        _ = collectionView.rx.sentMessage(NSSelectorFromString(\"setDataSource:\")).subscribe(onNext: { arguments in\n            let isNull = NSNull().isEqual(arguments[0])\n            disposeEvents.append(\"setDataSource:\\(isNull ? \"nil\" : \"nn\")\")\n        })\n\n        XCTAssertEqual(disposeEvents, [])\n        dataSourceSubscription.dispose()\n\n        XCTAssertEqual(disposeEvents, [\"disposed\", \"layoutIfNeeded\", \"setDataSource:nil\", \"setDataSource:nn\"])\n\n        XCTAssertTrue(collectionView.dataSource === collectionView.rx.dataSource)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIControl+RxTests.swift",
    "content": "//\n//  UIControl+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/10/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIControlTests: RxTest {}\n\nextension UIControlTests {\n    func testControl_EventCompletesOnDealloc() {\n        let createView: () -> UIControl = { UIControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensureEventDeallocated(createView) { (view: UIControl) in view.rx.controlEvent(.allEditingEvents) }\n        ensurePropertyDeallocated(createView, \"1\") { (view: UIControl) in\n            var value = \"1\"\n            return view.rx.controlProperty(\n                editingEvents: [.allEditingEvents],\n                getter: { _ -> String in value },\n                setter: { _, newValue in value = newValue }\n            )\n        }\n    }\n\n    func test_controlEvent() {\n        let control = UIControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var numberOfTimesReceivedEditingChanged = 0\n        var numberOfTimesReceivedEditingDidBegin = 0\n\n        let d1 = control.rx.controlEvent([.editingChanged]).subscribe(onNext: { numberOfTimesReceivedEditingChanged += 1 })\n        let d2 = control.rx.controlEvent([.editingChanged]).subscribe(onNext: { numberOfTimesReceivedEditingChanged += 1 })\n\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 0)\n\n        control.forceSendActions(for: .editingDidBegin)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 0)\n\n        control.forceSendActions(for: .editingChanged)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 2)\n\n        d1.dispose()\n        d2.dispose()\n\n        let d3 = control.rx.controlEvent([.editingChanged]).subscribe(onNext: { numberOfTimesReceivedEditingChanged += 1 })\n        let d4 = control.rx.controlEvent([.editingChanged]).subscribe(onNext: { numberOfTimesReceivedEditingChanged += 1 })\n\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 2)\n\n        control.forceSendActions(for: .editingDidBegin)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 2)\n\n        control.forceSendActions(for: .editingChanged)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 4)\n\n        XCTAssertEqual(numberOfTimesReceivedEditingDidBegin, 0)\n\n        _ = control.rx.controlEvent([.editingDidBegin]).subscribe(onNext: { numberOfTimesReceivedEditingDidBegin += 1 })\n        _ = control.rx.controlEvent([.editingDidBegin]).subscribe(onNext: { numberOfTimesReceivedEditingDidBegin += 1 })\n\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 4)\n        XCTAssertEqual(numberOfTimesReceivedEditingDidBegin, 0)\n\n        control.forceSendActions(for: .editingDidBegin)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 4)\n        XCTAssertEqual(numberOfTimesReceivedEditingDidBegin, 2)\n\n        control.forceSendActions(for: .editingChanged)\n        XCTAssertEqual(numberOfTimesReceivedEditingChanged, 6)\n        XCTAssertEqual(numberOfTimesReceivedEditingDidBegin, 2)\n\n        d3.dispose()\n        d4.dispose()\n    }\n\n    func test_controlPropertySource() {\n        let control = UIControl(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var receivedValues = [String]()\n\n        var value = \"\"\n\n        let property = control.rx.controlProperty(\n            editingEvents: [.valueChanged],\n            getter: { (_: UIControl) in\n                value\n            }, setter: { (_: UIControl, _) in\n                fatalError()\n            }\n        )\n\n        value = \"a\"\n\n        XCTAssertEqual(receivedValues, [])\n\n        let d1 = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n        let d2 = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\"])\n\n        value = \"b\"\n\n        control.forceSendActions(for: .editingChanged)\n        XCTAssertEqual(receivedValues, [\"a\", \"a\"])\n\n        control.forceSendActions(for: .valueChanged)\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\"])\n\n        d1.dispose()\n        d2.dispose()\n\n        _ = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n        _ = property.asObservable().subscribe(onNext: { receivedValues.append($0) })\n\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\", \"b\", \"b\"])\n\n        value = \"c\"\n\n        control.forceSendActions(for: .editingChanged)\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\", \"b\", \"b\"])\n\n        control.forceSendActions(for: .valueChanged)\n        XCTAssertEqual(receivedValues, [\"a\", \"a\", \"b\", \"b\", \"b\", \"b\", \"c\", \"c\"])\n    }\n\n    func testSubscribeEnabledToTrue() {\n        let subject = UIControl()\n        let disposable = Observable.just(true).subscribe(subject.rx.isEnabled)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isEnabled == true, \"Expected enabled set to true\")\n    }\n\n    func testSubscribeEnabledToFalse() {\n        let subject = UIControl()\n        let disposable = Observable<Bool>.just(false).subscribe(subject.rx.isEnabled)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isEnabled == false, \"Expected enabled set to false\")\n    }\n\n    func testSubscribedSelectedToTrue() {\n        let subject = UIControl()\n        let disposable = Observable<Bool>.just(true).subscribe(subject.rx.isSelected)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isSelected == true, \"Expected selected set to true\")\n    }\n\n    func testSubscribeSelectedToFalse() {\n        let subject = UIControl()\n        let disposable = Observable.just(false).subscribe(subject.rx.isSelected)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isSelected == false, \"Expected selected set to false\")\n    }\n\n    func testSubscribeHighlightedToTrue() {\n        let subject = UIControl()\n        let disposable = Observable<Bool>.just(true).subscribe(subject.rx.isHighlighted)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isHighlighted == true, \"Expected highlighted set to true\")\n    }\n\n    func testSubscribeHighlightedToFalse() {\n        let subject = UIControl()\n        let disposable = Observable.just(false).subscribe(subject.rx.isHighlighted)\n        defer { disposable.dispose() }\n\n        XCTAssert(subject.isHighlighted == false, \"Expected highlighted set to false\")\n    }\n}\n\nprivate extension UIControl {\n    func forceSendActions(for: UIControl.Event) {\n        for target in allTargets {\n            for selector in actions(forTarget: target, forControlEvent: `for`) ?? [] {\n                (target.base as! NSObject).perform(NSSelectorFromString(selector), with: self)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIDatePicker+RxTests.swift",
    "content": "//\n//  UIDatePicker+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(iOS)\n\nfinal class UIDatePickerTests: RxTest {}\n\nextension UIDatePickerTests {\n    func testDatePicker_DateCompletesOnDealloc() {\n        let createView: () -> UIDatePicker = { UIDatePicker(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, Date()) { (view: UIDatePicker) in view.rx.date }\n    }\n\n    func testDatePicker_ValueCompletesOnDealloc() {\n        let createView: () -> UIDatePicker = { UIDatePicker(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, Date()) { (view: UIDatePicker) in view.rx.value }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIGestureRecognizer+RxTests.swift",
    "content": "//\n//  UIGestureRecognizer+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UIGestureRecognizerTests: RxTest {}\n\nextension UIGestureRecognizerTests {\n    func testGestureRecognizer_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UIGestureRecognizer = { UIGestureRecognizer(target: nil, action: NSSelectorFromString(\"s\")) }\n        ensureEventDeallocated(createView) { (view: UIGestureRecognizer) in view.rx.event }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UILabel+RxTests.swift",
    "content": "//\n//  UILabel+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UILabelTests: RxTest {}\n\nextension UILabelTests {\n    func testLabel_attributedTextObserver() {\n        let label = UILabel()\n        XCTAssertEqual(label.attributedText, nil)\n        let text = NSAttributedString(string: \"Hello!\")\n        _ = Observable.just(text).bind(to: label.rx.attributedText)\n\n        XCTAssertEqual(label.attributedText, text)\n    }\n\n    func testLabel_textObserver() {\n        let label = UILabel()\n        XCTAssertEqual(label.text, nil)\n        let text = \"Hello!\"\n        _ = Observable.just(text).bind(to: label.rx.text)\n\n        XCTAssertEqual(label.text, text)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UINavigationController+RxTests.swift",
    "content": "//\n//  UINavigationController+RxTests.swift\n//  Tests\n//\n//  Created by Diogo on 13/04/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UINavigationControllerTests: RxTest {}\n\nextension UINavigationControllerTests {\n    func testWillShow() {\n        let navigationController = UINavigationController()\n\n        let viewController = UIViewController()\n        var presentedViewController = UIViewController()\n\n        XCTAssertNotEqual(viewController, presentedViewController)\n\n        let animated = true\n        var presentedAnimated = false\n\n        XCTAssertNotEqual(animated, presentedAnimated)\n\n        _ = navigationController.rx.willShow\n            .subscribe(onNext: { showEvent in\n                let (viewController, animated) = showEvent\n                presentedViewController = viewController\n                presentedAnimated = animated\n            })\n\n        _ = navigationController.rx.didShow\n            .subscribe(onNext: { _ in\n                XCTFail(\"Should not be called\")\n            })\n\n        navigationController.delegate!.navigationController!(\n            navigationController,\n            willShow: viewController,\n            animated: animated\n        )\n\n        XCTAssertEqual(viewController, presentedViewController)\n        XCTAssertEqual(animated, presentedAnimated)\n    }\n\n    func testDidShow() {\n        let navigationController = UINavigationController()\n\n        let viewController = UIViewController()\n        var presentedViewController = UIViewController()\n\n        XCTAssertNotEqual(viewController, presentedViewController)\n\n        let animated = true\n        var presentedAnimated = false\n\n        XCTAssertNotEqual(animated, presentedAnimated)\n\n        _ = navigationController.rx.willShow\n            .subscribe(onNext: { _ in\n                XCTFail(\"Should not be called\")\n            })\n\n        _ = navigationController.rx.didShow\n            .subscribe(onNext: { showEvent in\n                let (viewController, animated) = showEvent\n                presentedViewController = viewController\n                presentedAnimated = animated\n            })\n\n        navigationController.delegate!.navigationController!(\n            navigationController,\n            didShow: viewController,\n            animated: animated\n        )\n\n        XCTAssertEqual(viewController, presentedViewController)\n        XCTAssertEqual(animated, presentedAnimated)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UINavigationItem+RxTests.swift.swift",
    "content": "//\n//  UINavigationItem+RxTests.swift.swift\n//  Tests\n//\n//  Created by kumapo on 2016/05/11.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UINavigationItemTests: RxTest {}\n\nextension UINavigationItemTests {\n    func testTitle_Text() {\n        let subject = UINavigationItem()\n        Observable.just(\"Editing\").subscribe(subject.rx.title).dispose()\n\n        XCTAssertTrue(subject.title == \"Editing\")\n    }\n\n    func testTitle_Empty() {\n        let subject = UINavigationItem()\n        Observable.just(nil).subscribe(subject.rx.title).dispose()\n\n        XCTAssertTrue(subject.title == nil)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIPageControl+RxTest.swift",
    "content": "//\n//  UIPageControl+RxTest.swift\n//  Tests\n//\n//  Created by Francesco Puntillo on 25/04/2016.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIPageControlTest: RxTest {}\n\nextension UIPageControlTest {\n    func testPageControl_CurrentPage() {\n        let pageControl = UIPageControl(frame: CGRect.zero)\n        pageControl.numberOfPages = 10\n        Observable.just(5).bind(to: pageControl.rx.currentPage).dispose()\n        XCTAssertTrue(pageControl.currentPage == 5)\n    }\n\n    func testPageControl_NumberOfPages() {\n        let pageControl = UIPageControl(frame: CGRect.zero)\n        Observable.just(10).bind(to: pageControl.rx.numberOfPages).dispose()\n        XCTAssertTrue(pageControl.numberOfPages == 10)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIPickerView+RxTests.swift",
    "content": "//\n//  UIPickerView+RxTests.swift\n//  Tests\n//\n//  Created by Segii Shulga on 5/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIPickerViewTests: RxTest {\n    func testPickerView_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UIPickerView = { UIPickerView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n\n        ensureEventDeallocated(createView) { (view: UIPickerView) in view.rx.itemSelected }\n        ensureEventDeallocated(createView) { (view: UIPickerView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func testPickerView_itemSelected() {\n        let pickerView = UIPickerView()\n        let row = 0\n        let component = 0\n        var result: (row: Int, component: Int)?\n\n        autoreleasepool {\n            _ = pickerView.rx.itemSelected.subscribe(onNext: { element in\n                result = element\n            })\n            pickerView.delegate!.pickerView!(\n                pickerView,\n                didSelectRow: row,\n                inComponent: component\n            )\n        }\n        XCTAssertEqual(result?.row, row)\n        XCTAssertEqual(result?.component, component)\n    }\n\n    func testItUsesAdapterToDisplayItems() {\n        var titleForRowCalled = false\n        let items = Observable.just([[1, 2], [1, 2, 3]])\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n        let adapter = StubPickerViewAdapter()\n\n        adapter.titleForRow = { _, _, _ in\n            titleForRowCalled = true\n            return \"\"\n        }\n\n        _ = items.bind(to: pickerView.rx.items(adapter: adapter))\n\n        XCTAssertTrue(titleForRowCalled)\n    }\n\n    func testAdapterIsBeingRetainedUntilPickerViewDealloc() {\n        var adapterDeallocated = false\n\n        autoreleasepool {\n            let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let items = Observable.just([[1, 2], [1, 2, 3]])\n            let adapter = TestPickerViewAdapter()\n\n            _ = items.bind(to: pickerView.rx.items(adapter: adapter))\n\n            _ = adapter.rx.deallocated.subscribe(onNext: { _ in\n                adapterDeallocated = true\n            })\n\n            XCTAssertFalse(adapterDeallocated)\n        }\n\n        XCTAssertTrue(adapterDeallocated)\n    }\n\n    func testAdapterIsBeingRetainedUntilDisposed() {\n        var adapterDeallocated = false\n        var outerPicker: UIPickerView?\n        var adapterSubscription: Disposable!\n\n        autoreleasepool {\n            let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let items = Observable.just([[1, 2], [1, 2, 3]])\n            let adapter = TestPickerViewAdapter()\n\n            outerPicker = pickerView\n            _ = outerPicker\n\n            adapterSubscription = items.bind(to: pickerView.rx.items(adapter: adapter))\n\n            _ = adapter.rx.deallocated.subscribe(onNext: { _ in\n                adapterDeallocated = true\n            })\n        }\n\n        XCTAssertFalse(adapterDeallocated)\n        autoreleasepool { adapterSubscription.dispose() }\n        XCTAssertTrue(adapterDeallocated)\n    }\n\n    func testReceiveSelectionEventsAfterBindingAdapter() {\n        var selectedItem: (Int, Int)!\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        let items = Observable.just([[1, 2], [1, 2, 3]])\n        let adapter = TestPickerViewAdapter()\n\n        _ = pickerView.rx.itemSelected.subscribe(onNext: { item in\n            selectedItem = item\n        })\n\n        _ = items.bind(to: pickerView.rx.items(adapter: adapter))\n\n        pickerView.delegate!.pickerView!(pickerView, didSelectRow: 0, inComponent: 1)\n\n        XCTAssertEqual(selectedItem.0, 0)\n        XCTAssertEqual(selectedItem.1, 1)\n    }\n\n    func testDisplayItemsAfterItemSelectionSubscription() {\n        var titleForRowCalled = false\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n        let items = PublishSubject<[[Int]]>()\n        let stubAdapter = StubPickerViewAdapter()\n\n        stubAdapter.titleForRow = { _, _, _ in\n            titleForRowCalled = true\n            return \"\"\n        }\n        _ = items.bind(to: pickerView.rx.items(adapter: stubAdapter))\n        _ = pickerView.rx.itemSelected.subscribe(onNext: { _ in\n        })\n\n        items.onNext([[1, 2], [1, 2, 3]])\n\n        XCTAssertTrue(titleForRowCalled)\n    }\n\n    func test_ModelSelected_itemTitles() {\n        var selectedItem: [Int]!\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable.just([1, 2, 3]).bind(to: pickerView.rx.itemTitles) { _, _ in\n            \"\"\n        }\n        _ = pickerView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n        pickerView.selectRow(1, inComponent: 0, animated: false)\n        pickerView.delegate!.pickerView!(pickerView, didSelectRow: 1, inComponent: 0)\n\n        XCTAssertEqual(selectedItem, [2])\n    }\n\n    func test_ModelSelected_itemAttributedTitles() {\n        var selectedItem: [Int]!\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable.just([1, 2, 3]).bind(to: pickerView.rx.itemAttributedTitles) { _, _ in\n            NSAttributedString()\n        }\n        _ = pickerView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        pickerView.selectRow(2, inComponent: 0, animated: false)\n        pickerView.delegate!.pickerView!(pickerView, didSelectRow: 2, inComponent: 0)\n\n        XCTAssertEqual(selectedItem, [3])\n    }\n\n    func test_ModelSelected_items() {\n        var selectedItem: [Int]!\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable.just([1, 2, 3])\n            .bind(to: pickerView.rx.items) { _, _, _ in\n                UIView()\n            }\n        _ = pickerView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        pickerView.delegate!.pickerView!(pickerView, didSelectRow: 0, inComponent: 0)\n\n        XCTAssertEqual(selectedItem, [1])\n    }\n\n    func test_ModelSelected_itemsWithCustomAdapter() {\n        var selectedItem: [Int]!\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable.just([[1, 2, 3]])\n            .bind(to: pickerView.rx.items(adapter: TestPickerViewAdapter()))\n        _ = pickerView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        pickerView.delegate!.pickerView!(pickerView, didSelectRow: 0, inComponent: 0)\n\n        XCTAssertEqual(selectedItem, [1])\n    }\n\n    func test_modelAtIdexPath_ThrowsError_itemTitles() {\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable<[Int]>.never().bind(to: pickerView.rx.itemTitles) { _, _ in\n            \"\"\n        }\n\n        do {\n            let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))\n            XCTFail()\n        } catch let error as RxCocoaError {\n            XCTAssertTrue(error.isItemsNotYetBound)\n        } catch {\n            XCTFail()\n        }\n    }\n\n    func test_modelAtIdexPath_ThrowsError_itemAttributedTitles() {\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable<[Int]>.never().bind(to: pickerView.rx.itemAttributedTitles) { _, _ in\n            NSAttributedString()\n        }\n\n        do {\n            let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))\n            XCTFail()\n        } catch let error as RxCocoaError {\n            XCTAssertTrue(error.isItemsNotYetBound)\n        } catch {\n            XCTFail()\n        }\n    }\n\n    func test_modelAtIdexPath_ThrowsError_items() {\n        let pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 50))\n\n        _ = Observable<[Int]>.never().bind(to: pickerView.rx.items) { _, _, _ in\n            UIView()\n        }\n\n        do {\n            let _: Int = try pickerView.rx.model(at: IndexPath(item: 0, section: 0))\n            XCTFail()\n        } catch let error as RxCocoaError {\n            XCTAssertTrue(error.isItemsNotYetBound)\n        } catch {\n            XCTFail()\n        }\n    }\n}\n\nprivate extension RxCocoaError {\n    var isItemsNotYetBound: Bool {\n        switch self {\n        case .itemsNotYetBound(object: _):\n            true\n        default:\n            false\n        }\n    }\n}\n\nfinal class StubPickerViewAdapter: TestPickerViewAdapter {\n    var titleForRow: ((UIPickerView, Int, Int) -> String?)!\n\n    override func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {\n        titleForRow(pickerView, row, component)\n    }\n}\n\nclass TestPickerViewAdapter: NSObject, RxPickerViewDataSourceType, UIPickerViewDataSource, UIPickerViewDelegate, SectionedViewDataSourceType {\n    typealias Element = [[Int]]\n    private var items: [[Int]] = []\n\n    func model(at indexPath: IndexPath) throws -> Any {\n        items[indexPath.section][indexPath.row]\n    }\n\n    func numberOfComponents(in _: UIPickerView) -> Int {\n        items.count\n    }\n\n    func pickerView(_: UIPickerView, numberOfRowsInComponent component: Int) -> Int {\n        items[component].count\n    }\n\n    func pickerView(_: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {\n        \"\\(items[component][row])\"\n    }\n\n    func pickerView(_ pickerView: UIPickerView, observedEvent: Event<Element>) {\n        switch observedEvent {\n        case let .next(items):\n            self.items = items\n            pickerView.reloadAllComponents()\n            pickerView.setNeedsLayout()\n            pickerView.layoutIfNeeded() // force layout in test\n        default:\n            break\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIProgressView+RxTests.swift",
    "content": "//\n//  UIProgressView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UIProgressViewTests: RxTest {}\n\nextension UIProgressViewTests {\n    func testProgressView_HasWeakReference() {\n        ensureControlObserverHasWeakReference(UIProgressView(), { (progressView: UIProgressView) -> AnyObserver<Float> in progressView.rx.progress.asObserver() }, { BehaviorRelay<Float>(value: 0.0).asObservable() })\n    }\n\n    func testProgressView_NextElementsSetsValue() {\n        let subject = UIProgressView()\n        let progressSequence = BehaviorRelay<Float>(value: 0.0)\n        let disposable = progressSequence.asObservable().bind(to: subject.rx.progress)\n        defer { disposable.dispose() }\n\n        progressSequence.accept(1.0)\n        XCTAssert(subject.progress == progressSequence.value, \"Expected progress to have been set\")\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIScrollView+RxTests.swift",
    "content": "//\n//  UIScrollView+RxTests.swift\n//  Tests\n//\n//  Created by Suyeol Jeon on 6/8/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport UIKit\nimport XCTest\n\nfinal class UIScrollViewTests: RxTest {}\n\nextension UIScrollViewTests {\n    func testScrollEnabled_False() {\n        let scrollView = UIScrollView()\n        scrollView.isScrollEnabled = true\n\n        Observable.just(false).bind(to: scrollView.rx.isScrollEnabled).dispose()\n        XCTAssertTrue(scrollView.isScrollEnabled == false)\n    }\n\n    func testScrollEnabled_True() {\n        let scrollView = UIScrollView(frame: CGRect.zero)\n        scrollView.isScrollEnabled = false\n\n        Observable.just(true).bind(to: scrollView.rx.isScrollEnabled).dispose()\n        XCTAssertTrue(scrollView.isScrollEnabled == true)\n    }\n\n    func testScrollView_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UIScrollView = { UIScrollView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, CGPoint(x: 1, y: 1)) { (view: UIScrollView) in view.rx.contentOffset }\n    }\n\n    func testScrollViewDidScroll() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var didScroll = false\n\n            _ = scrollView.rx.didScroll.subscribe(onNext: { _ in\n                didScroll = true\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertFalse(didScroll)\n\n            scrollView.delegate!.scrollViewDidScroll!(scrollView)\n\n            XCTAssertTrue(didScroll)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewWillBeginDecelerating() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var willBeginDecelerating = false\n\n            _ = scrollView.rx.willBeginDecelerating.subscribe(onNext: { _ in\n                willBeginDecelerating = true\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertFalse(willBeginDecelerating)\n\n            scrollView.delegate!.scrollViewWillBeginDecelerating!(scrollView)\n\n            XCTAssertTrue(willBeginDecelerating)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewDidEndDecelerating() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var didEndDecelerating = false\n\n            _ = scrollView.rx.didEndDecelerating.subscribe(onNext: { _ in\n                didEndDecelerating = true\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertFalse(didEndDecelerating)\n\n            scrollView.delegate!.scrollViewDidEndDecelerating!(scrollView)\n\n            XCTAssertTrue(didEndDecelerating)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewWillBeginDragging() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var willBeginDragging = false\n\n            _ = scrollView.rx.willBeginDragging.subscribe(onNext: { _ in\n                willBeginDragging = true\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertFalse(willBeginDragging)\n\n            scrollView.delegate!.scrollViewWillBeginDragging!(scrollView)\n\n            XCTAssertTrue(willBeginDragging)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewWillEndDragging() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n\n            let positiveVelocity = CGPoint(x: 1.5, y: 2.5)\n            var positiveOffset = CGPoint(x: 27.4, y: 853.0)\n\n            let negativeVelocity = CGPoint(x: 1.5, y: 2.5)\n            var zeroOffset = CGPoint.zero\n\n            var velocity: CGPoint? = nil\n            var offset: CGPoint? = nil\n\n            _ = scrollView.rx.willEndDragging.subscribe(onNext: {\n                velocity = $0\n                offset = $1.pointee\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertNil(velocity)\n            XCTAssertNil(offset)\n\n            scrollView.delegate!.scrollViewWillEndDragging!(scrollView, withVelocity: positiveVelocity, targetContentOffset: &positiveOffset)\n\n            XCTAssertEqual(positiveVelocity, velocity)\n            XCTAssertEqual(positiveOffset, offset)\n\n            scrollView.delegate!.scrollViewWillEndDragging!(scrollView, withVelocity: negativeVelocity, targetContentOffset: &zeroOffset)\n\n            XCTAssertEqual(negativeVelocity, velocity)\n            XCTAssertEqual(zeroOffset, offset)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewWillEndDraggingWithModifyingOffset() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n\n            var initialOffset = CGPoint(x: 27.4, y: 853.0)\n            let changedOffset = CGPoint(x: 42.5, y: 97.4)\n\n            _ = scrollView.rx.willEndDragging.subscribe(onNext: {\n                $1.pointee = changedOffset\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertNotEqual(changedOffset, initialOffset)\n\n            scrollView.delegate!.scrollViewWillEndDragging!(scrollView, withVelocity: CGPoint.zero, targetContentOffset: &initialOffset)\n\n            XCTAssertEqual(changedOffset, initialOffset)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewDidEndDragging() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var results: [Bool] = []\n\n            _ = scrollView.rx.didEndDragging.subscribe(onNext: {\n                results.append($0)\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertTrue(results.isEmpty)\n\n            scrollView.delegate!.scrollViewDidEndDragging!(scrollView, willDecelerate: false)\n            scrollView.delegate!.scrollViewDidEndDragging!(scrollView, willDecelerate: true)\n\n            XCTAssertEqual(results, [false, true])\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewContentOffset() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            scrollView.contentOffset = .zero\n\n            var contentOffset = CGPoint(x: -1, y: -1)\n\n            _ = scrollView.rx.contentOffset.subscribe(onNext: { value in\n                contentOffset = value\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertEqual(contentOffset, .zero)\n\n            scrollView.contentOffset = CGPoint(x: 2, y: 2)\n            scrollView.delegate!.scrollViewDidScroll!(scrollView)\n\n            XCTAssertEqual(contentOffset, CGPoint(x: 2, y: 2))\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewDidZoom() {\n        let scrollView = UIScrollView()\n        var didZoom = false\n\n        let subscription = scrollView.rx.didZoom.subscribe(onNext: { _ in\n            didZoom = true\n        })\n\n        XCTAssertFalse(didZoom)\n\n        scrollView.delegate!.scrollViewDidZoom!(scrollView)\n\n        XCTAssertTrue(didZoom)\n        subscription.dispose()\n    }\n\n    func testScrollToTop() {\n        let scrollView = UIScrollView()\n        var didScrollToTop = false\n\n        let subscription = scrollView.rx.didScrollToTop.subscribe(onNext: { _ in\n            didScrollToTop = true\n        })\n\n        XCTAssertFalse(didScrollToTop)\n\n        scrollView.delegate!.scrollViewDidScrollToTop!(scrollView)\n\n        XCTAssertTrue(didScrollToTop)\n        subscription.dispose()\n    }\n\n    func testDidEndScrollingAnimation() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            var didEndScrollingAnimation = false\n\n            _ = scrollView.rx.didEndScrollingAnimation.subscribe(onNext: { _ in\n                didEndScrollingAnimation = true\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertFalse(didEndScrollingAnimation)\n\n            scrollView.delegate!.scrollViewDidEndScrollingAnimation!(scrollView)\n\n            XCTAssertTrue(didEndScrollingAnimation)\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewWillBeginZooming() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            let zoomView = UIView()\n            var results: [UIView?] = []\n\n            _ = scrollView.rx.willBeginZooming.subscribe(onNext: { value in\n                results.append(value)\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertTrue(results.isEmpty)\n\n            scrollView.delegate!.scrollViewWillBeginZooming!(scrollView, with: zoomView)\n            scrollView.delegate!.scrollViewWillBeginZooming!(scrollView, with: nil)\n\n            XCTAssertEqual(results[0], zoomView)\n            XCTAssertNil(results[1])\n        }\n\n        XCTAssertTrue(completed)\n    }\n\n    func testScrollViewDidEndZooming() {\n        var completed = false\n\n        autoreleasepool {\n            let scrollView = UIScrollView()\n            let zoomView = UIView()\n            var viewResults: [UIView?] = []\n            var scaleResults: [CGFloat] = []\n\n            _ = scrollView.rx.didEndZooming.subscribe(onNext: {\n                let (view, scale) = $0\n                viewResults.append(view)\n                scaleResults.append(scale)\n            }, onCompleted: {\n                completed = true\n            })\n\n            XCTAssertTrue(viewResults.isEmpty)\n            XCTAssertTrue(scaleResults.isEmpty)\n\n            scrollView.delegate!.scrollViewDidEndZooming!(scrollView, with: zoomView, atScale: 0)\n            scrollView.delegate!.scrollViewDidEndZooming!(scrollView, with: nil, atScale: 2)\n\n            XCTAssertEqual(viewResults[0], zoomView)\n            XCTAssertNil(viewResults[1])\n            XCTAssertEqual(scaleResults, [0, 2])\n        }\n\n        XCTAssertTrue(completed)\n    }\n}\n\n@objc final class MockScrollViewDelegate:\n    NSObject,\n    UIScrollViewDelegate {}\n\nextension UIScrollViewTests {\n    func testSetDelegateUsesWeakReference() {\n        let scrollView = UIScrollView()\n\n        var delegateDeallocated = false\n\n        autoreleasepool {\n            let delegate = MockScrollViewDelegate()\n            _ = scrollView.rx.setDelegate(delegate)\n\n            _ = delegate.rx.deallocated.subscribe(onNext: { _ in\n                delegateDeallocated = true\n            })\n\n            XCTAssert(delegateDeallocated == false)\n        }\n        XCTAssert(delegateDeallocated == true)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UISearchBar+RxTests.swift",
    "content": "//\n//  UISearchBar+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/12/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UISearchBarTests: RxTest {}\n\nextension UISearchBarTests {\n    func testText_completesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensurePropertyDeallocated(createView, \"a\") { (view: UISearchBar) in view.rx.text.orEmpty }\n    }\n\n    func testValue_completesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensurePropertyDeallocated(createView, \"a\") { (view: UISearchBar) in view.rx.value.orEmpty }\n    }\n\n    func testText_changeEventWorksForTextDidChange() {\n        let searchBar = newSearchBar()\n\n        var latestText: String! = nil\n\n        // search bar should dispose this itself\n        _ = searchBar.rx.text.subscribe(onNext: { text in\n            latestText = text\n        })\n\n        XCTAssertEqual(latestText, \"\")\n\n        searchBar.text = \"newValue\"\n        searchBar.delegate!.searchBar!(searchBar, textDidChange: \"doesntMatter\")\n\n        XCTAssertEqual(latestText, \"newValue\")\n    }\n\n    func testText_changeEventWorksForDidEndEditing() {\n        let searchBar = newSearchBar()\n\n        var latestText: String! = nil\n\n        // search bar should dispose this itself\n        _ = searchBar.rx.text.subscribe(onNext: { text in\n            latestText = text\n        })\n\n        XCTAssertEqual(latestText, \"\")\n\n        searchBar.text = \"newValue\"\n        searchBar.delegate!.searchBarTextDidEndEditing!(searchBar)\n\n        XCTAssertEqual(latestText, \"newValue\")\n    }\n\n    func testText_binding() {\n        let searchBar = newSearchBar()\n\n        XCTAssertNotEqual(searchBar.text, \"value\")\n        _ = Observable.just(\"value\").bind(to: searchBar.rx.text)\n        XCTAssertEqual(searchBar.text, \"value\")\n    }\n\n    func testSelectedScopeButtonIndex_completesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensurePropertyDeallocated(createView, 1) { (view: UISearchBar) in view.rx.selectedScopeButtonIndex }\n    }\n\n    func testSelectedScopeButtonIndex_changeEventWorks() {\n        let searchBar = newSearchBar()\n        searchBar.scopeButtonTitles = [\"One\", \"Two\", \"Three\"]\n\n        var latestSelectedScopeIndex: Int = -1\n\n        _ = searchBar.rx.selectedScopeButtonIndex.subscribe(onNext: { index in\n            latestSelectedScopeIndex = index\n        })\n\n        XCTAssertEqual(latestSelectedScopeIndex, 0)\n\n        searchBar.selectedScopeButtonIndex = 1\n        searchBar.delegate!.searchBar!(searchBar, selectedScopeButtonIndexDidChange: 1)\n\n        XCTAssertEqual(latestSelectedScopeIndex, 1)\n    }\n\n    func testSelectedScopeButtonIndex_binding() {\n        let searchBar = newSearchBar()\n        searchBar.scopeButtonTitles = [\"One\", \"Two\", \"Three\"]\n\n        XCTAssertNotEqual(searchBar.selectedScopeButtonIndex, 1)\n        _ = Observable.just(1).bind(to: searchBar.rx.selectedScopeButtonIndex)\n        XCTAssertEqual(searchBar.selectedScopeButtonIndex, 1)\n    }\n\n    #if os(iOS)\n    func testCancelButtonClicked() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n\n        _ = searchBar.rx.cancelButtonClicked.subscribe(onNext: { _ in\n            tapped = true\n        })\n\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarCancelButtonClicked!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testCancelButtonClicked_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.cancelButtonClicked }\n    }\n\n    func testBookmarkButtonClicked() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n\n        _ = searchBar.rx.bookmarkButtonClicked.subscribe(onNext: { _ in\n            tapped = true\n        })\n\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarBookmarkButtonClicked!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testBookmarkButtonClicked_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.bookmarkButtonClicked }\n    }\n\n    func testResultsListButtonClicked() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n\n        _ = searchBar.rx.resultsListButtonClicked.subscribe(onNext: { _ in\n            tapped = true\n        })\n\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarResultsListButtonClicked!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testResultsListButtonClicked_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.resultsListButtonClicked }\n    }\n\n    #endif\n\n    func testSearchButtonClicked() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n\n        _ = searchBar.rx.searchButtonClicked.subscribe(onNext: { _ in\n            tapped = true\n        })\n\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarSearchButtonClicked!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testSearchButtonClicked_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.searchButtonClicked }\n    }\n\n    func testSearchBarTextDidBeginEditing() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n        _ = searchBar.rx.textDidBeginEditing.subscribe(onNext: { _ in\n            tapped = true\n        })\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarTextDidBeginEditing!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testSearchBarTextDidBeginEditing_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.textDidBeginEditing }\n    }\n\n    func testSearchBarTextDidEndEditing() {\n        let searchBar = newSearchBar()\n\n        var tapped = false\n        _ = searchBar.rx.textDidEndEditing.subscribe(onNext: { _ in\n            tapped = true\n        })\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarTextDidBeginEditing!(searchBar)\n        XCTAssertFalse(tapped)\n        searchBar.delegate!.searchBarTextDidEndEditing!(searchBar)\n        XCTAssertTrue(tapped)\n    }\n\n    func testSearchBarTextDidEndEditing_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISearchBar = { self.newSearchBar() }\n        ensureEventDeallocated(createView) { (view: UISearchBar) in view.rx.textDidEndEditing }\n    }\n}\n\n@objc final class MockSearchBarViewDelegate:\n    NSObject,\n    UISearchBarDelegate {}\n\nextension UISearchBarTests {\n    func newSearchBar() -> UISearchBar {\n        autoreleasepool {\n            let vc = UIViewController()\n            let searchController = UISearchController(searchResultsController: vc)\n            return searchController.searchBar\n        }\n    }\n\n    func testSetDelegateUsesWeakReference() {\n        let searchBar = newSearchBar()\n\n        var delegateDeallocated = false\n\n        autoreleasepool {\n            let delegate = MockSearchBarViewDelegate()\n            _ = searchBar.rx.setDelegate(delegate)\n\n            _ = delegate.rx.deallocated.subscribe(onNext: { _ in\n                delegateDeallocated = true\n            })\n\n            XCTAssert(delegateDeallocated == false)\n        }\n        XCTAssert(delegateDeallocated == true)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UISearchController+RxTests.swift",
    "content": "//\n//  UISearchController+RxTests.swift\n//  Tests\n//\n//  Created by Segii Shulga on 3/17/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UISearchController_RxTests: RxTest {\n    func testDidDismissSearchController() {\n        var completed = false\n        var didDismissed = false\n\n        autoreleasepool {\n            let searchController = UISearchController()\n\n            _ = searchController.rx.didDismiss\n                .subscribe(onNext: { _ in\n                    didDismissed = true\n                }, onCompleted: {\n                    completed = true\n                })\n            searchController.delegate!.didDismissSearchController!(searchController)\n        }\n\n        XCTAssertTrue(completed)\n        XCTAssertTrue(didDismissed)\n    }\n\n    func testDidPresentSearchController() {\n        var completed = false\n        var didPresent = false\n\n        autoreleasepool {\n            let searchController = UISearchController()\n\n            _ = searchController.rx.didPresent\n                .subscribe(onNext: { _ in\n                    didPresent = true\n                }, onCompleted: {\n                    completed = true\n                })\n            searchController.delegate!.didPresentSearchController!(searchController)\n        }\n\n        XCTAssertTrue(completed)\n        XCTAssertTrue(didPresent)\n    }\n\n    func testPresentSearchController() {\n        var completed = false\n        var presented = false\n\n        autoreleasepool {\n            let searchController = UISearchController()\n\n            _ = searchController.rx.present\n                .subscribe(onNext: { _ in\n                    presented = true\n                }, onCompleted: {\n                    completed = true\n                })\n            searchController.delegate!.presentSearchController!(searchController)\n        }\n\n        XCTAssertTrue(completed)\n        XCTAssertTrue(presented)\n    }\n\n    func testWillDismissSearchController() {\n        var completed = false\n        var willDismiss = false\n\n        autoreleasepool {\n            let searchController = UISearchController()\n\n            _ = searchController.rx.willDismiss\n                .subscribe(onNext: { _ in\n                    willDismiss = true\n                }, onCompleted: {\n                    completed = true\n                })\n            searchController.delegate!.willDismissSearchController!(searchController)\n        }\n\n        XCTAssertTrue(completed)\n        XCTAssertTrue(willDismiss)\n    }\n\n    func testWillPresentSearchController() {\n        var completed = false\n        var willPresent = false\n\n        autoreleasepool {\n            let searchController = UISearchController()\n\n            _ = searchController.rx.willPresent\n                .subscribe(onNext: { _ in\n                    willPresent = true\n                }, onCompleted: {\n                    completed = true\n                })\n            searchController.delegate!.willPresentSearchController!(searchController)\n        }\n\n        XCTAssertTrue(completed)\n        XCTAssertTrue(willPresent)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UISegmentedControl+RxTests.swift",
    "content": "//\n//  UISegmentedControl+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfinal class UISegmentedControlTests: RxTest {}\n\nextension UISegmentedControlTests {\n    func testSegmentedControl_ValueCompletesOnDealloc() {\n        let createView: () -> UISegmentedControl = { UISegmentedControl(items: [\"a\", \"b\", \"c\"]) }\n        ensurePropertyDeallocated(createView, 1) { (view: UISegmentedControl) in view.rx.value }\n    }\n\n    func testSegmentedControl_SelectedSegmentIndexCompletesOnDealloc() {\n        let createView: () -> UISegmentedControl = { UISegmentedControl(items: [\"a\", \"b\", \"c\"]) }\n        ensurePropertyDeallocated(createView, 1) { (view: UISegmentedControl) in view.rx.selectedSegmentIndex }\n    }\n\n    func testSegmentedControl_SegmentDisabled() {\n        let segmentedControl = UISegmentedControl(items: [\"a\", \"b\", \"c\"])\n\n        XCTAssertTrue(segmentedControl.isEnabledForSegment(at: 0))\n        _ = Observable.just(false).subscribe(segmentedControl.rx.enabledForSegment(at: 0))\n        XCTAssertFalse(segmentedControl.isEnabledForSegment(at: 0))\n    }\n\n    func testSegmentedControl_SegmentTitle() {\n        let segmentedControl = UISegmentedControl(items: [\"a\", \"b\", \"c\"])\n\n        XCTAssertEqual(segmentedControl.titleForSegment(at: 0), \"a\")\n        _ = Observable.just(\"d\").subscribe(segmentedControl.rx.titleForSegment(at: 0))\n        XCTAssertEqual(segmentedControl.titleForSegment(at: 0), \"d\")\n    }\n\n    func testSegmentedControl_SegmentImage() {\n        let segmentedControl = UISegmentedControl(items: [UIImage()])\n        segmentedControl.insertSegment(with: nil, at: 1, animated: false)\n        XCTAssertNil(segmentedControl.imageForSegment(at: 1))\n        _ = Observable.just(UIImage()).subscribe(segmentedControl.rx.imageForSegment(at: 1))\n        XCTAssertNotNil(segmentedControl.imageForSegment(at: 1))\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UISlider+RxTests.swift",
    "content": "//\n//  UISlider+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(iOS)\n\nfinal class UISliderTests: RxTest {}\n\nextension UISliderTests {\n    func testSlider_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UISlider = { UISlider(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n        ensurePropertyDeallocated(createView, 0.5) { (view: UISlider) in view.rx.value }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIStepper+RxTests.swift",
    "content": "//\n//  UIStepper+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(iOS)\n\nfinal class UIStepperTests: RxTest {}\n\nextension UIStepperTests {\n    func testStepper_stepValueObserver() {\n        let stepper = UIStepper()\n        let stepValue = 0.42\n\n        stepper.stepValue = 1.0\n        XCTAssertEqual(stepper.stepValue, 1.0, accuracy: 0.0001)\n\n        Observable.just(stepValue).bind(to: stepper.rx.stepValue).dispose()\n        XCTAssertEqual(stepper.stepValue, stepValue, accuracy: 0.0001)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UISwitch+RxTests.swift",
    "content": "//\n//  UISwitch+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/26/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(iOS)\n\nfinal class UISwitchTests: RxTest {}\n\n// there was a leak on versions prior to 10.2\nextension UISwitchTests {\n    func testSwitch_ValueCompletesOnDealloc() {\n        if #available(iOS 10.2, *) {\n            let createView: () -> UISwitch = { UISwitch(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n            ensurePropertyDeallocated(createView, true) { (view: UISwitch) in view.rx.value }\n        }\n    }\n\n    func testSwitch_isOnCompletesOnDealloc() {\n        if #available(iOS 10.2, *) {\n            let createView: () -> UISwitch = { UISwitch(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n            ensurePropertyDeallocated(createView, true) { (view: UISwitch) in view.rx.isOn }\n        }\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITabBar+RxTests.swift",
    "content": "//\n//  UITabBar+RxTests.swift\n//  Tests\n//\n//  Created by Jesse Farless on 5/13/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UITabBarTests: RxTest {\n    let createSubject: () -> UITabBar = { UITabBar(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n}\n\n/**\n iOS only\n */\n#if os(iOS)\nextension UITabBarTests {\n    func testWillBeginCustomizing() {\n        let subject = createSubject()\n\n        let items = [UITabBarItem()]\n        var returnedItems: [UITabBarItem]!\n\n        _ = subject.rx.willBeginCustomizing\n            .subscribe(onNext: { i in\n                returnedItems = i\n            })\n        subject.delegate!.tabBar!(subject, willBeginCustomizing: items)\n\n        XCTAssertEqual(returnedItems, items)\n    }\n\n    func testDidBeginCustomizing() {\n        let subject = createSubject()\n\n        let items = [UITabBarItem()]\n        var returnedItems: [UITabBarItem]!\n\n        _ = subject.rx.didBeginCustomizing\n            .subscribe(onNext: { i in\n                returnedItems = i\n            })\n\n        subject.delegate!.tabBar!(subject, didBeginCustomizing: items)\n\n        XCTAssertEqual(returnedItems, items)\n    }\n\n    func testWillEndCustomizing() {\n        let subject = createSubject()\n\n        let items = [UITabBarItem()]\n        var returnedItems: [UITabBarItem]!\n        var changed: Bool!\n\n        _ = subject.rx.willEndCustomizing\n            .subscribe(onNext: { value in\n                let (i, c) = value\n                returnedItems = i\n                changed = c\n            })\n        subject.delegate!.tabBar!(subject, willEndCustomizing: items, changed: true)\n\n        XCTAssertEqual(returnedItems, items)\n        XCTAssertEqual(changed, true)\n    }\n\n    func testDidEndCustomizing() {\n        let subject = createSubject()\n\n        let items = [UITabBarItem()]\n        var returnedItems: [UITabBarItem]!\n        var changed: Bool!\n\n        _ = subject.rx.didEndCustomizing\n            .subscribe(onNext: { value in\n                let (i, c) = value\n                returnedItems = i\n                changed = c\n            })\n\n        subject.delegate!.tabBar!(subject, didEndCustomizing: items, changed: true)\n\n        XCTAssertEqual(returnedItems, items)\n        XCTAssertEqual(changed, true)\n    }\n}\n#endif\n\n/**\n iOS and tvOS\n */\nextension UITabBarTests {\n    func testDidSelectItem() {\n        let subject = createSubject()\n\n        let item = UITabBarItem()\n        var returnedItem: UITabBarItem!\n\n        _ = subject.rx.didSelectItem\n            .subscribe(onNext: { i in\n                returnedItem = i\n            })\n\n        subject.delegate!.tabBar!(subject, didSelect: item)\n\n        XCTAssertEqual(returnedItem, item)\n    }\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITabBarController+RxTests.swift",
    "content": "//\n//  UITabBarController+RxTests.swift\n//  Tests\n//\n//  Created by Yusuke Kita on 2016/12/07.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(tvOS)\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UITabBarControllerTests: RxTest {\n    let createSubject: () -> UITabBarController = { UITabBarController() }\n}\n\n/**\n iOS only\n */\n#if os(iOS)\nextension UITabBarControllerTests {\n    func testWillBeginCustomizing() {\n        let subject = createSubject()\n\n        let viewControllers = [UIViewController()]\n        var returnedViewControllers = [UIViewController]()\n\n        XCTAssertNotEqual(returnedViewControllers, viewControllers)\n\n        _ = subject.rx.willBeginCustomizing\n            .subscribe(onNext: { vc in\n                returnedViewControllers = vc\n            })\n\n        subject.delegate!.tabBarController!(subject, willBeginCustomizing: viewControllers)\n\n        XCTAssertEqual(returnedViewControllers, viewControllers)\n    }\n\n    func testWillEndCustomizing() {\n        let subject = createSubject()\n\n        let viewControllers = [UIViewController()]\n        var returnedViewControllers = [UIViewController]()\n        var changed: Bool!\n\n        XCTAssertNotEqual(returnedViewControllers, viewControllers)\n        XCTAssertNotEqual(changed, true)\n\n        _ = subject.rx.willEndCustomizing\n            .subscribe(onNext: { value in\n                let (vc, c) = value\n                returnedViewControllers = vc\n                changed = c\n            })\n\n        subject.delegate!.tabBarController!(subject, willEndCustomizing: viewControllers, changed: true)\n\n        XCTAssertEqual(returnedViewControllers, viewControllers)\n        XCTAssertEqual(changed, true)\n    }\n\n    func testDidEndCustomizing() {\n        let subject = createSubject()\n\n        let viewControllers = [UIViewController()]\n        var returnedViewControllers = [UIViewController]()\n        var changed: Bool!\n\n        XCTAssertNotEqual(returnedViewControllers, viewControllers)\n        XCTAssertNotEqual(changed, true)\n\n        _ = subject.rx.didEndCustomizing\n            .subscribe(onNext: { value in\n                let (vc, c) = value\n                returnedViewControllers = vc\n                changed = c\n            })\n\n        subject.delegate!.tabBarController!(subject, didEndCustomizing: viewControllers, changed: true)\n\n        XCTAssertEqual(returnedViewControllers, viewControllers)\n        XCTAssertEqual(changed, true)\n    }\n}\n#endif\n\n/**\n iOS and tvOS\n */\nextension UITabBarControllerTests {\n    func testDidSelect() {\n        let subject = createSubject()\n\n        let viewController = UIViewController()\n        var returnedViewController = UIViewController()\n\n        XCTAssertNotEqual(returnedViewController, viewController)\n\n        _ = subject.rx.didSelect\n            .subscribe(onNext: { vc in\n                returnedViewController = vc\n            })\n\n        subject.delegate!.tabBarController!(subject, didSelect: viewController)\n\n        XCTAssertEqual(returnedViewController, viewController)\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITabBarItem+RxTests.swift",
    "content": "//\n//  UITabBarItem+RxTests.swift\n//  Tests\n//\n//  Created by Mateusz Derks on 04/03/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UITabBarItemTests: RxTest {}\n\nextension UITabBarItemTests {\n    func testBadgeValue_Text() {\n        let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0)\n        Observable.just(\"5\").subscribe(subject.rx.badgeValue).dispose()\n\n        XCTAssertEqual(subject.badgeValue, \"5\")\n    }\n\n    func testBadgeValue_Empty() {\n        let subject = UITabBarItem(tabBarSystemItem: .more, tag: 0)\n        Observable.just(nil).subscribe(subject.rx.badgeValue).dispose()\n\n        XCTAssertNil(subject.badgeValue)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITableView+RxTests.swift",
    "content": "//\n//  UITableView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/8/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n\nfinal class UITableViewTests: RxTest {\n    func test_DelegateEventCompletesOnDealloc() {\n        let createView: () -> UITableView = { UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemSelected }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemDeselected }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemAccessoryButtonTapped }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelSelected(Int.self) }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemDeleted }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemMoved }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.itemInserted }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelSelected(Int.self) }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelDeselected(Int.self) }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelDeleted(Int.self) }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.willDisplayCell }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.didEndDisplayingCell }\n        #if os(tvOS)\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.didUpdateFocusInContextWithAnimationCoordinator }\n        #endif\n    }\n\n    func test_itemSelected() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemSelected\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.delegate!.tableView!(tableView, didSelectRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemDeselected() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemDeselected\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.delegate!.tableView!(tableView, didDeselectRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemHighlighted() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemHighlighted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.delegate!.tableView!(tableView, didHighlightRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemUnhighlighted() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemUnhighlighted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.delegate!.tableView!(tableView, didUnhighlightRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemAccessoryButtonTapped() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemAccessoryButtonTapped\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.delegate!.tableView!(tableView, accessoryButtonTappedForRowWith: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n    }\n\n    func test_itemDeleted() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemDeleted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.dataSource!.tableView!(tableView, commit: .delete, forRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n        dataSourceSubscription.dispose()\n    }\n\n    func test_itemInserted() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var resultIndexPath: IndexPath? = nil\n\n        let subscription = tableView.rx.itemInserted\n            .subscribe(onNext: { indexPath in\n                resultIndexPath = indexPath\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        tableView.dataSource!.tableView!(tableView, commit: .insert, forRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        subscription.dispose()\n        dataSourceSubscription.dispose()\n    }\n\n    func test_willDisplayCell() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n        var resultCell: UITableViewCell? = nil\n\n        let subscription = tableView.rx.willDisplayCell\n            .subscribe(onNext: { cellInfo in\n                let (cell, indexPath) = cellInfo\n                resultIndexPath = indexPath\n                resultCell = cell\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        let testCell = UITableViewCell()\n        tableView.delegate!.tableView!(tableView, willDisplay: testCell, forRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        XCTAssertEqual(resultCell, testCell)\n        subscription.dispose()\n    }\n\n    func test_didEndDisplayingCell() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var resultIndexPath: IndexPath? = nil\n        var resultCell: UITableViewCell? = nil\n\n        let subscription = tableView.rx.didEndDisplayingCell\n            .subscribe(onNext: { cellInfo in\n                let (cell, indexPath) = cellInfo\n                resultIndexPath = indexPath\n                resultCell = cell\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        let testCell = UITableViewCell()\n        tableView.delegate!.tableView!(tableView, didEndDisplaying: testCell, forRowAt: testRow)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        XCTAssertEqual(resultCell, testCell)\n        subscription.dispose()\n    }\n\n    func test_itemMoved() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var resultIndexPath: IndexPath? = nil\n        var resultIndexPath2: IndexPath? = nil\n\n        let subscription = tableView.rx.itemMoved\n            .subscribe(onNext: { indexPaths in\n                let (indexPath, indexPath2) = indexPaths\n                resultIndexPath = indexPath\n                resultIndexPath2 = indexPath2\n            })\n\n        let testRow = IndexPath(row: 1, section: 0)\n        let testRow2 = IndexPath(row: 1, section: 0)\n        tableView.dataSource!.tableView!(tableView, moveRowAt: testRow, to: testRow2)\n\n        XCTAssertEqual(resultIndexPath, testRow)\n        XCTAssertEqual(resultIndexPath2, testRow2)\n        subscription.dispose()\n        dataSourceSubscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_prefetchRows() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var indexPaths: [IndexPath] = []\n\n        let subscription = tableView.rx.prefetchRows\n            .subscribe(onNext: {\n                indexPaths = $0\n            })\n\n        let testIndexPaths = [IndexPath(item: 1, section: 0), IndexPath(item: 2, section: 0)]\n        tableView.prefetchDataSource!.tableView(tableView, prefetchRowsAt: testIndexPaths)\n\n        XCTAssertEqual(indexPaths, testIndexPaths)\n        subscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_cancelPrefetchingForRows() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n        var indexPaths: [IndexPath] = []\n\n        let subscription = tableView.rx.cancelPrefetchingForRows\n            .subscribe(onNext: {\n                indexPaths = $0\n            })\n\n        let testIndexPaths = [IndexPath(item: 1, section: 0), IndexPath(item: 2, section: 0)]\n        tableView.prefetchDataSource!.tableView!(tableView, cancelPrefetchingForRowsAt: testIndexPaths)\n\n        XCTAssertEqual(indexPaths, testIndexPaths)\n        subscription.dispose()\n    }\n\n    @available(iOS 10.0, tvOS 10.0, *)\n    func test_PrefetchDataSourceEventCompletesOnDealloc() {\n        let createView: () -> UITableView = { UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.prefetchRows }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.cancelPrefetchingForRows }\n    }\n\n    func test_delegateEventCompletesOnDealloc1() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func test_delegateEventCompletesOnDealloc2() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func test_delegateEventCompletesOnDealloc2_cellType() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(cellIdentifier: \"a\", cellType: UITableViewCell.self)) { (_: Int, _: Int, _) in\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n        ensureEventDeallocated(createView) { (view: UITableView) in view.rx.modelSelected(Int.self) }\n    }\n\n    func testx_modelSelected_rx_itemsWithCellFactory() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = tableView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        tableView.delegate!.tableView!(tableView, didSelectRowAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_modelSelected_itemsWithCellIdentifier() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = tableView.rx.modelSelected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        tableView.delegate!.tableView!(tableView, didSelectRowAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_modelDeselected_rx_itemsWithCellFactory() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = tableView.rx.modelDeselected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        tableView.delegate!.tableView!(tableView, didDeselectRowAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_ModelDeleted_rx_itemsWithCellFactory() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            let dataSourceSubscription = items.bind(to: tableView.rx.items) { (_, _: Int, _: Int) -> UITableViewCell in\n                return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var deletedItem: Int? = nil\n\n        let s = tableView.rx.modelDeleted(Int.self)\n            .subscribe(onNext: { item in\n                deletedItem = item\n            })\n\n        tableView.dataSource?.tableView!(tableView, commit: .delete, forRowAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(deletedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_ModelDeselected_itemsWithCellIdentifier() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(cellIdentifier: \"a\")) { (_: Int, _: Int, _) in\n            }\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        var selectedItem: Int? = nil\n\n        let s = tableView.rx.modelDeselected(Int.self)\n            .subscribe(onNext: { item in\n                selectedItem = item\n            })\n\n        tableView.delegate!.tableView!(tableView, didDeselectRowAt: IndexPath(row: 1, section: 0))\n\n        XCTAssertEqual(selectedItem, 2)\n\n        dataSourceSubscription.dispose()\n        s.dispose()\n    }\n\n    func test_modelAtIndexPath_normal() {\n        let items: Observable<[Int]> = Observable.just([1, 2, 3])\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(dataSource: dataSource))\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        let model: Int = try! tableView.rx.model(at: IndexPath(item: 1, section: 0))\n\n        XCTAssertEqual(model, 2)\n\n        dataSourceSubscription.dispose()\n    }\n\n//    #if os(tvOS)\n//        func test_didUpdateFocusInContextWithAnimationCoordinator() {\n//            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n//\n//            let createView: () -> (UITableView, Disposable) = {\n//                let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n//                let dataSourceSubscription = items.bind(to: tableView.rx.items) { (tv, index: Int, item: Int) -> UITableViewCell in\n//                    return UITableViewCell(style: .default, reuseIdentifier: \"Identity\")\n//                }\n//\n//                return (tableView, dataSourceSubscription)\n//            }\n//\n//            let (tableView, dataSourceSubscription) = createView()\n//\n//            var resultContext: UITableViewFocusUpdateContext? = nil\n//            var resultAnimationCoordinator: UIFocusAnimationCoordinator? = nil\n//\n//            let subscription = tableView.rx.didUpdateFocusInContextWithAnimationCoordinator\n//                .subscribe(onNext: { args in\n//                    let (context, animationCoordinator) = args\n//                    resultContext = context\n//                    resultAnimationCoordinator = animationCoordinator\n//                })\n//            /// => This initializer throws an Objective-C exception.\n//            ///    Might need a radar\n//            let context = UITableViewFocusUpdateContext()\n//            let animationCoordinator = UIFocusAnimationCoordinator()\n//\n//            XCTAssertEqual(resultContext, nil)\n//            XCTAssertEqual(resultAnimationCoordinator, nil)\n//\n//            tableView.delegate!.tableView!(tableView, didUpdateFocusIn: context, with: animationCoordinator)\n//\n//            XCTAssertEqual(resultContext, context)\n//            XCTAssertEqual(resultAnimationCoordinator, animationCoordinator)\n//\n//            subscription.dispose()\n//            dataSourceSubscription.dispose()\n//        }\n//    #endif\n}\n\nextension UITableViewTests {\n    func testDataSourceIsBeingRetainedUntilDispose() {\n        var dataSourceDeallocated = false\n\n        var outerTableView: UITableView? = nil\n        outerTableView?.beginUpdates()\n\n        var dataSourceSubscription: Disposable!\n        autoreleasepool {\n            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n            let dataSource = SectionedViewDataSourceMock()\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            outerTableView = tableView\n            dataSourceSubscription = items.bind(to: tableView.rx.items(dataSource: dataSource))\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n        }\n        XCTAssert(dataSourceDeallocated == false)\n        autoreleasepool { dataSourceSubscription.dispose() }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testDataSourceIsBeingRetainedUntilTableViewDealloc() {\n        var dataSourceDeallocated = false\n\n        autoreleasepool {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(UITableViewCell.self, forCellReuseIdentifier: \"a\")\n\n            let items: Observable<[Int]> = Observable.just([1, 2, 3])\n            let dataSource = SectionedViewDataSourceMock()\n            _ = items.bind(to: tableView.rx.items(dataSource: dataSource))\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n\n            XCTAssert(dataSourceDeallocated == false)\n        }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testSetDataSourceUsesWeakReference() {\n        var dataSourceDeallocated = false\n\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        tableView.register(UITableViewCell.self, forCellReuseIdentifier: \"a\")\n\n        autoreleasepool {\n            let dataSource = SectionedViewDataSourceMock()\n            _ = tableView.rx.setDataSource(dataSource)\n\n            _ = dataSource.rx.deallocated.subscribe(onNext: { _ in\n                dataSourceDeallocated = true\n            })\n\n            XCTAssert(dataSourceDeallocated == false)\n        }\n        XCTAssert(dataSourceDeallocated == true)\n    }\n\n    func testDataSourceIsResetOnDispose() {\n        var disposeEvents: [String] = []\n\n        let items: Observable<[Int]> = Observable.just([1, 2, 3]).concat(Observable.never())\n            .do(onDispose: {\n                disposeEvents.append(\"disposed\")\n            })\n\n        let createView: () -> (UITableView, Disposable) = {\n            let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n            tableView.register(NSClassFromString(\"UITableViewCell\"), forCellReuseIdentifier: \"a\")\n            let dataSource = SectionedViewDataSourceMock()\n            let dataSourceSubscription = items.bind(to: tableView.rx.items(dataSource: dataSource))\n\n            let fakeVC = UIViewController()\n            fakeVC.view.addSubview(tableView)\n\n            let window = UIWindow(frame: UIScreen.main.bounds)\n            window.rootViewController = fakeVC\n            window.makeKeyAndVisible()\n\n            return (tableView, dataSourceSubscription)\n        }\n\n        let (tableView, dataSourceSubscription) = createView()\n\n        XCTAssertTrue(tableView.dataSource === RxTableViewDataSourceProxy.proxy(for: tableView))\n\n        _ = tableView.rx.sentMessage(#selector(UITableView.layoutIfNeeded)).subscribe(onNext: { _ in\n            disposeEvents.append(\"layoutIfNeeded\")\n        })\n        _ = tableView.rx.sentMessage(NSSelectorFromString(\"setDataSource:\")).subscribe(onNext: { arguments in\n            let isNull = NSNull().isEqual(arguments[0])\n            disposeEvents.append(\"setDataSource:\\(isNull ? \"nil\" : \"nn\")\")\n        })\n\n        XCTAssertEqual(disposeEvents, [])\n        dataSourceSubscription.dispose()\n        XCTAssertEqual(disposeEvents, [\"disposed\", \"layoutIfNeeded\", \"setDataSource:nil\", \"setDataSource:nn\"])\n\n        XCTAssertTrue(tableView.dataSource === tableView.rx.dataSource)\n    }\n}\n\n// test #selector(UITableViewDataSource.tableView(_:commit:forRowAt:)\n// https://github.com/ReactiveX/RxSwift/issues/907\nextension UITableViewTests {\n    func testDataSource_commitForRowAt_sentMessage() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        tableView.register(UITableViewCell.self, forCellReuseIdentifier: \"a\")\n\n        let dataSource = SectionedViewDataSourceMock()\n        _ = tableView.rx.setDataSource(dataSource)\n\n        var setDataSources: [UITableViewDataSource?] = []\n\n        _ = tableView.rx.observeWeakly(UITableViewDataSource.self, \"dataSource\")\n            .subscribe(onNext: { dataSource in\n                setDataSources.append(dataSource)\n            })\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n\n        let commitedEvents = tableView.rx.dataSource.sentMessage(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource!] as [UITableViewDataSource?]) { $0 === $1 }\n\n        var firstEvents: [Arguments] = []\n        var secondEvents: [Arguments] = []\n\n        let subscription1 = commitedEvents.subscribe(onNext: { event in\n            firstEvents.append(Arguments(values: event))\n        })\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        let subscription2 = commitedEvents.subscribe(onNext: { event in\n            secondEvents.append(Arguments(values: event))\n        })\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        let deleteEditingStyle = NSNumber(value: UITableViewCell.EditingStyle.delete.rawValue)\n        let indexPath = NSIndexPath(item: 0, section: 0)\n        XCTAssertEqual(firstEvents, [] as [Arguments]) { $0 == $1 }\n        XCTAssertEqual(secondEvents, [] as [Arguments]) { $0 == $1 }\n        tableView.dataSource!.tableView!(tableView, commit: .delete, forRowAt: indexPath as IndexPath)\n        XCTAssertEqual(firstEvents, [Arguments(values: [tableView, deleteEditingStyle, indexPath])])\n        XCTAssertEqual(secondEvents, [Arguments(values: [tableView, deleteEditingStyle, indexPath])])\n\n        subscription1.dispose()\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        subscription2.dispose()\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource, nil, tableView.dataSource]) { $0 === $1 }\n    }\n\n    func testDataSource_commitForRowAt_methodInvoked() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        tableView.register(UITableViewCell.self, forCellReuseIdentifier: \"a\")\n\n        let dataSource = SectionedViewDataSourceMock()\n        _ = tableView.rx.setDataSource(dataSource)\n\n        var setDataSources: [UITableViewDataSource?] = []\n\n        _ = tableView.rx.observeWeakly(UITableViewDataSource.self, \"dataSource\")\n            .subscribe(onNext: { dataSource in\n                setDataSources.append(dataSource)\n            })\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n\n        let commitedEvents = tableView.rx.dataSource.methodInvoked(#selector(UITableViewDataSource.tableView(_:commit:forRowAt:)))\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource!] as [UITableViewDataSource?]) { $0 === $1 }\n\n        var firstEvents: [Arguments] = []\n        var secondEvents: [Arguments] = []\n\n        let subscription1 = commitedEvents.subscribe(onNext: { event in\n            firstEvents.append(Arguments(values: event))\n        })\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        let subscription2 = commitedEvents.subscribe(onNext: { event in\n            secondEvents.append(Arguments(values: event))\n        })\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        let deleteEditingStyle = NSNumber(value: UITableViewCell.EditingStyle.delete.rawValue)\n        let indexPath = NSIndexPath(item: 0, section: 0)\n        XCTAssertEqual(firstEvents, [] as [Arguments]) { $0 == $1 }\n        XCTAssertEqual(secondEvents, [] as [Arguments]) { $0 == $1 }\n        tableView.dataSource!.tableView!(tableView, commit: .delete, forRowAt: indexPath as IndexPath)\n        XCTAssertEqual(firstEvents, [Arguments(values: [tableView, deleteEditingStyle, indexPath])])\n        XCTAssertEqual(secondEvents, [Arguments(values: [tableView, deleteEditingStyle, indexPath])])\n\n        subscription1.dispose()\n\n        XCTAssertTrue(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource] as [UITableViewDataSource?]) { $0 === $1 }\n\n        subscription2.dispose()\n\n        XCTAssertFalse(tableView.dataSource!.responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n        XCTAssertArraysEqual(setDataSources, [tableView.dataSource, nil, tableView.dataSource, nil, tableView.dataSource]) { $0 === $1 }\n    }\n\n    func testDataSource_commitForRowAt_respondsWhenDataSourceImplementsCommitForRowAt() {\n        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n        tableView.register(UITableViewCell.self, forCellReuseIdentifier: \"a\")\n\n        let dataSource = TableViewDataSourceThatImplementsCommitForRowAt()\n        _ = tableView.rx.setDataSource(dataSource)\n\n        XCTAssertTrue((tableView.dataSource!).responds(to: #selector(UITableViewDataSource.tableView(_:commit:forRowAt:))))\n    }\n}\n\n@objc final class TableViewDataSourceThatImplementsCommitForRowAt: NSObject, UITableViewDataSource {\n    func tableView(_: UITableView, commit _: UITableViewCell.EditingStyle, forRowAt _: IndexPath) {\n        arc4random_stir()\n    }\n\n    func tableView(_: UITableView, numberOfRowsInSection _: Int) -> Int {\n        0\n    }\n\n    func tableView(_: UITableView, cellForRowAt _: IndexPath) -> UITableViewCell {\n        UITableViewCell()\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITextField+RxTests.swift",
    "content": "//\n//  UITextField+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/13/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\n// UITextField\nfinal class UITextFieldTests: RxTest {\n    func test_completesOnDealloc() {\n        // because of leak in iOS 11.2\n        if #available(iOS 11.3, tvOS 11.3, *) {\n            ensurePropertyDeallocated({ UITextField() }, \"a\", comparer: { $0 == $1 }) { (view: UITextField) in view.rx.text }\n            ensurePropertyDeallocated({ UITextField() }, \"a\", comparer: { $0 == $1 }) { (view: UITextField) in view.rx.value }\n            ensurePropertyDeallocated({ UITextField() }, \"a\".enrichedWithTextFieldAttributes, comparer: { $0 == $1 }) { (view: UITextField) in view.rx.attributedText }\n        }\n    }\n\n    func test_settingTextDoesntClearMarkedText() {\n        // because of leak in iOS 11.2\n        if #available(iOS 11.3, tvOS 11.3, *) {\n            let textField = UITextFieldSubclass(frame: CGRect.zero)\n            textField.text = \"Text1\"\n            textField.didSetText = false\n            textField.rx.text.on(.next(\"Text1\"))\n            XCTAssertTrue(!textField.didSetText)\n            textField.rx.text.on(.next(\"Text2\"))\n            XCTAssertTrue(textField.didSetText)\n        }\n    }\n\n    func test_attributedTextObserver() {\n        // because of leak in iOS 11.2\n        if #available(iOS 11.3, tvOS 11.3, *) {\n            let textField = UITextField()\n            XCTAssertEqual(textField.attributedText, \"\".enrichedWithTextFieldAttributes)\n            let attributedText = \"Hello!\".enrichedWithTextFieldAttributes\n            textField.rx.attributedText.onNext(attributedText)\n            XCTAssertEqual(textField.attributedText!, attributedText)\n        }\n    }\n\n    func test_isSecureTextEntryObserver() {\n        // because of leak in iOS 11.2\n        if #available(iOS 11.3, tvOS 11.3, *) {\n            let textField = UITextField()\n            XCTAssertFalse(textField.isSecureTextEntry)\n            textField.rx.isSecureTextEntry.onNext(true)\n            XCTAssertTrue(textField.isSecureTextEntry)\n        }\n    }\n}\n\nprivate extension String {\n    var enrichedWithTextFieldAttributes: NSAttributedString {\n        let tf = UITextField()\n        tf.attributedText = NSAttributedString(string: self)\n        return tf.attributedText!\n    }\n}\n\nfinal class UITextFieldSubclass: UITextField {\n    var didSetText = false\n\n    override var text: String? {\n        get {\n            super.text\n        }\n        set {\n            didSetText = true\n            super.text = newValue\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UITextView+RxTests.swift",
    "content": "//\n//  UITextView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/13/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\n// UITextView\nfinal class UITextViewTests: RxTest {\n    func test_completesOnDealloc() {\n        let createView: () -> UITextView = { UITextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1)) }\n\n        ensurePropertyDeallocated(createView, \"text\", comparer: { $0 == $1 }) { (view: UITextView) in view.rx.text }\n        ensurePropertyDeallocated(createView, \"text\", comparer: { $0 == $1 }) { (view: UITextView) in view.rx.value }\n        ensurePropertyDeallocated(createView, \"text\".enrichedWithTextFieldAttributes, comparer: { $0 == $1 }) { (view: UITextView) in view.rx.attributedText }\n    }\n\n    func testSettingTextDoesntClearMarkedText() {\n        let textView = UITextViewSubclass2(frame: CGRect.zero)\n\n        textView.text = \"Text1\"\n        textView.didSetText = false\n        textView.rx.text.on(.next(\"Text1\"))\n        XCTAssertTrue(!textView.didSetText)\n        textView.rx.text.on(.next(\"Text2\"))\n        XCTAssertTrue(textView.didSetText)\n    }\n\n    func testSettingTextDoesntClearMarkedAttributtedText() {\n        let textView = UITextViewSubclass2(frame: CGRect.zero)\n\n        let testAttributedString = \"Test1\".enrichedWithTextFieldAttributes\n        let test2AttributedString = \"Test2\".enrichedWithTextFieldAttributes\n\n        textView.attributedText = testAttributedString\n        textView.didSetAttributedText = false\n        textView.rx.attributedText.on(.next(testAttributedString))\n        XCTAssertTrue(!textView.didSetAttributedText)\n        textView.rx.attributedText.on(.next(test2AttributedString))\n        XCTAssertTrue(textView.didSetAttributedText)\n    }\n\n    func testDidBeginEditing() {\n        var completed = false\n        var value: ()?\n\n        autoreleasepool {\n            let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n            _ = textView.rx.didBeginEditing.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            textView.delegate!.textViewDidBeginEditing!(textView)\n        }\n\n        XCTAssertNotNil(value)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidEndEditing() {\n        var completed = false\n        var value: ()?\n\n        autoreleasepool {\n            let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n            _ = textView.rx.didEndEditing.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            textView.delegate!.textViewDidEndEditing!(textView)\n        }\n\n        XCTAssertNotNil(value)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidChange() {\n        var completed = false\n        var value: ()?\n\n        autoreleasepool {\n            let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n            _ = textView.rx.didChange.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            textView.delegate!.textViewDidChange!(textView)\n        }\n\n        XCTAssertNotNil(value)\n        XCTAssertTrue(completed)\n    }\n\n    func testDidChangeSelection() {\n        var completed = false\n        var value: ()?\n\n        autoreleasepool {\n            let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 1, height: 1))\n\n            _ = textView.rx.didChangeSelection.subscribe(onNext: { n in\n                value = n\n            }, onCompleted: {\n                completed = true\n            })\n\n            textView.delegate!.textViewDidChangeSelection!(textView)\n        }\n\n        XCTAssertNotNil(value)\n        XCTAssertTrue(completed)\n    }\n}\n\nprivate extension String {\n    var enrichedWithTextFieldAttributes: NSAttributedString? {\n        let tf = UITextView()\n        tf.attributedText = NSAttributedString(string: self)\n        return tf.attributedText!\n    }\n}\n\nfinal class UITextViewSubclass2: UITextView {\n    var didSetText = false\n    var didSetAttributedText = false\n\n    override var text: String? {\n        get {\n            super.text\n        }\n        set {\n            didSetText = true\n            super.text = newValue\n        }\n    }\n\n    override var attributedText: NSAttributedString? {\n        get {\n            super.attributedText\n        }\n        set {\n            didSetAttributedText = true\n            super.attributedText = newValue\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIView+RxTests.swift",
    "content": "//\n//  UIView+RxTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/6/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIViewTests: RxTest {}\n\nextension UIViewTests {\n    func testHidden_True() {\n        let subject = UIView(frame: .zero)\n        Observable.just(true).subscribe(subject.rx.isHidden).dispose()\n\n        XCTAssertEqual(subject.isHidden, true)\n    }\n\n    func testEnabled_False() {\n        let subject = UIView(frame: .zero)\n        Observable.just(false).subscribe(subject.rx.isHidden).dispose()\n\n        XCTAssertEqual(subject.isHidden, false)\n    }\n}\n\nextension UIViewTests {\n    func testAlpha_0() {\n        let subject = UIView(frame: .zero)\n        Observable.just(0).subscribe(subject.rx.alpha).dispose()\n\n        XCTAssertEqual(subject.alpha, 0.0)\n    }\n\n    func testAlpha_1() {\n        let subject = UIView(frame: .zero)\n        Observable.just(1).subscribe(subject.rx.alpha).dispose()\n\n        XCTAssertEqual(subject.alpha, 1.0)\n    }\n}\n\nextension UIViewTests {\n    func testBackgroundColor() {\n        let subject = UIView(frame: .zero)\n        let color: UIColor = .red\n\n        Observable.just(color).subscribe(subject.rx.backgroundColor).dispose()\n\n        XCTAssertEqual(subject.backgroundColor, color)\n    }\n\n    func testBackgroundColor_optionalSome() {\n        let subject = UIView(frame: .zero)\n        let color: UIColor? = .red\n\n        Observable.just(color).subscribe(subject.rx.backgroundColor).dispose()\n\n        XCTAssertEqual(subject.backgroundColor, color)\n    }\n\n    func testBackgroundColor_optionalNil() {\n        let subject = UIView(frame: .zero)\n        let color: UIColor? = nil\n\n        Observable.just(color).subscribe(subject.rx.backgroundColor).dispose()\n\n        XCTAssertEqual(subject.backgroundColor, color)\n    }\n}\n\nextension UIViewTests {\n    func testUserInteractionEnabled_True() {\n        let subject = UIView(frame: .zero)\n        Observable.just(true).subscribe(subject.rx.isUserInteractionEnabled).dispose()\n\n        XCTAssertEqual(subject.isUserInteractionEnabled, true)\n    }\n\n    func testUserInteractionEnabled_False() {\n        let subject = UIView(frame: .zero)\n        Observable.just(false).subscribe(subject.rx.isUserInteractionEnabled).dispose()\n\n        XCTAssertEqual(subject.isUserInteractionEnabled, false)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/UIViewController+RxTests.swift",
    "content": "//\n//  UIViewController+RxTests.swift\n//  Tests\n//\n//  Created by Kyle Fuller on 30/05/2016.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport UIKit\nimport XCTest\n\nfinal class UIViewControllerTests: RxTest {}\n\nextension UIViewControllerTests {\n    func testRxTitle() {\n        let viewController = UIViewController()\n\n        _ = Observable.just(\"title\").bind(to: viewController.rx.title)\n\n        XCTAssertEqual(\"title\", viewController.title)\n    }\n}\n"
  },
  {
    "path": "Tests/RxCocoaTests/WKWebView+RxTests.swift",
    "content": "//\n//  WKWebView+RxTests.swift\n//  Tests\n//\n//  Created by Giuseppe Lanza on 14/02/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\n#if os(iOS) || os(macOS)\n\nimport RxBlocking\nimport RxCocoa\nimport RxSwift\nimport WebKit\nimport XCTest\n\n@available(iOS 10.0, macOSApplicationExtension 10.10, *)\nfinal class WKWebViewTests: RxTest {\n    override func setUp() {\n        super.setUp()\n        SafeWKNavigation.toggleSafeDealloc()\n    }\n\n    override func tearDown() {\n        SafeWKNavigation.toggleSafeDealloc()\n        super.tearDown()\n    }\n\n    func testDidCommit() {\n        let expectedNavigation = SafeWKNavigation()\n        let webView = WKWebView(frame: .zero)\n        var navigation: WKNavigation?\n\n        let subscription = webView.rx.didCommit.subscribe(onNext: { nav in\n            navigation = nav\n        })\n\n        webView.navigationDelegate!.webView?(webView, didCommit: expectedNavigation)\n\n        XCTAssertEqual(expectedNavigation, navigation)\n        subscription.dispose()\n    }\n\n    func testDidStartLoad() {\n        let expectedNavigation = SafeWKNavigation()\n        let webView = WKWebView(frame: .zero)\n        var navigation: WKNavigation?\n\n        let subscription = webView.rx.didStartLoad.subscribe(onNext: { nav in\n            navigation = nav\n        })\n\n        webView.navigationDelegate!.webView?(webView, didStartProvisionalNavigation: expectedNavigation)\n\n        XCTAssertEqual(expectedNavigation, navigation)\n        subscription.dispose()\n    }\n\n    func testDidFinishLoad() {\n        let expectedNavigation = SafeWKNavigation()\n        let webView = WKWebView(frame: .zero)\n        var navigation: WKNavigation?\n\n        let subscription = webView.rx.didFinishLoad.subscribe(onNext: { nav in\n            navigation = nav\n        })\n\n        webView.navigationDelegate!.webView?(webView, didFinish: expectedNavigation)\n\n        XCTAssertEqual(expectedNavigation, navigation)\n        subscription.dispose()\n    }\n\n    func testDidFail() {\n        let expectedNavigation = SafeWKNavigation()\n        let expectedError = MockError.error(\"Something horrible just happened\")\n        let webView = WKWebView(frame: .zero)\n        var navigation: WKNavigation?\n        var error: Error?\n\n        let subscription = webView.rx.didFailLoad.subscribe(onNext: { nav, err in\n            navigation = nav\n            error = err\n        })\n\n        webView.navigationDelegate!.webView?(webView, didFail: expectedNavigation, withError: expectedError)\n\n        XCTAssertEqual(expectedNavigation, navigation)\n        XCTAssertEqual(expectedError, error as? MockError)\n        subscription.dispose()\n    }\n}\n\n// MARK: - Test Helpers\n\n// Any WKNavigation object manually created on dealloc crashes the program.\n// This class overrides the deinit method of the WKNavition to avoid crashes.\n@available(iOS 10.0, macOSApplicationExtension 10.10, *)\nprivate class SafeWKNavigation: WKNavigation {\n    static func toggleSafeDealloc() {\n        guard let current_original = class_getInstanceMethod(SafeWKNavigation.self, NSSelectorFromString(\"dealloc\")),\n              let current_swizzled = class_getInstanceMethod(SafeWKNavigation.self, #selector(nonCrashingDealloc))\n        else { return }\n        method_exchangeImplementations(current_original, current_swizzled)\n    }\n\n    @objc func nonCrashingDealloc() {}\n}\n\nprivate enum MockError: Error, Equatable {\n    case error(String)\n}\n\n#endif\n"
  },
  {
    "path": "Tests/RxRelayTests/Observable+RelayBindTests.swift",
    "content": "//\n//  Observable+RelayBindTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 09/04/2019.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableRelayBindTest: RxTest {}\n\n// MARK: bind(to:) publish relay\n\nextension ObservableRelayBindTest {\n    func testBindToPublishRelay() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let relay = PublishRelay<Int>()\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n\n    func testBindToPublishRelays() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let relay1 = PublishRelay<Int>()\n        let relay2 = PublishRelay<Int>()\n\n        _ = relay1.subscribe { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        _ = relay2.subscribe { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay1, relay2)\n\n        XCTAssertEqual(events1, [\n            .next(1)\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1)\n        ])\n    }\n\n    func testBindToOptionalPublishRelay() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let relay = PublishRelay<Int?>()\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n\n    func testBindToOptionalPublishRelays() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let relay1 = PublishRelay<Int?>()\n        let relay2 = PublishRelay<Int?>()\n\n        _ = relay1.subscribe { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        _ = relay2.subscribe { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay1, relay2)\n\n        XCTAssertEqual(events1, [\n            .next(1)\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1)\n        ])\n    }\n\n    func testBindToPublishRelayNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let relay = PublishRelay<Int?>()\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n}\n\n// MARK: bind(to:) behavior relay\n\nextension ObservableRelayBindTest {\n    func testBindToBehaviorRelay() {\n        let relay = BehaviorRelay<Int>(value: 0)\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n\n    func testBindToBehaviorRelays() {\n        let relay1 = BehaviorRelay<Int>(value: 0)\n        let relay2 = BehaviorRelay<Int>(value: 0)\n\n        _ = Observable.just(1).bind(to: relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n    }\n\n    func testBindToOptionalBehaviorRelay() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n\n    func testBindToOptionalBehaviorRelays() {\n        let relay1 = BehaviorRelay<Int?>(value: 0)\n        let relay2 = BehaviorRelay<Int?>(value: 0)\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay1, relay2)\n\n        XCTAssertEqual(relay1.value, 1)\n        XCTAssertEqual(relay2.value, 1)\n    }\n\n    func testBindToBehaviorRelayNoAmbiguity() {\n        let relay = BehaviorRelay<Int?>(value: 0)\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(relay.value, 1)\n    }\n}\n\n// MARK: bind(to:) replay relay\n\nextension ObservableRelayBindTest {\n    func testBindToReplayRelay() {\n        var events: [Recorded<Event<Int>>] = []\n\n        let relay = ReplayRelay<Int>.create(bufferSize: 1)\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n\n    func testBindToReplayRelays() {\n        var events1: [Recorded<Event<Int>>] = []\n        var events2: [Recorded<Event<Int>>] = []\n\n        let relay1 = ReplayRelay<Int>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int>.create(bufferSize: 1)\n\n        _ = relay1.subscribe { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        _ = relay2.subscribe { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay1, relay2)\n\n        XCTAssertEqual(events1, [\n            .next(1)\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1)\n        ])\n    }\n\n    func testBindToOptionalReplayRelay() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n\n    func testBindToOptionalReplayRelays() {\n        var events1: [Recorded<Event<Int?>>] = []\n        var events2: [Recorded<Event<Int?>>] = []\n\n        let relay1 = ReplayRelay<Int?>.create(bufferSize: 1)\n        let relay2 = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        _ = relay1.subscribe { event in\n            events1.append(Recorded(time: 0, value: event))\n        }\n\n        _ = relay2.subscribe { event in\n            events2.append(Recorded(time: 0, value: event))\n        }\n\n        _ = (Observable.just(1) as Observable<Int>).bind(to: relay1, relay2)\n\n        XCTAssertEqual(events1, [\n            .next(1)\n        ])\n\n        XCTAssertEqual(events2, [\n            .next(1)\n        ])\n    }\n\n    func testBindToReplayRelayNoAmbiguity() {\n        var events: [Recorded<Event<Int?>>] = []\n\n        let relay = ReplayRelay<Int?>.create(bufferSize: 1)\n\n        _ = relay.subscribe { event in\n            events.append(Recorded(time: 0, value: event))\n        }\n\n        _ = Observable.just(1).bind(to: relay)\n\n        XCTAssertEqual(events, [\n            .next(1)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxRelayTests/ReplayRelayTests.swift",
    "content": "//\n//  ReplayRelayTests.swift\n//  Tests\n//\n//  Created by Zsolt Kovacs on 12/31/19.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ReplayRelayTests: RxTest {\n    func test_noEvents() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let relay = ReplayRelay<Int>.create(bufferSize: 3)\n        let result = scheduler.createObserver(Int.self)\n\n        _ = relay.subscribe(result)\n\n        XCTAssertTrue(result.events.isEmpty)\n    }\n\n    func test_fewerEventsThanBufferSize() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var relay: ReplayRelay<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { relay = ReplayRelay.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { relay.accept(1) }\n        scheduler.scheduleAt(200) { relay.accept(2) }\n        scheduler.scheduleAt(300) { subscription = relay.subscribe(result) }\n        scheduler.scheduleAt(350) {\n            XCTAssertEqual(result.events, [\n                .next(300, 1),\n                .next(300, 2)\n            ])\n        }\n        scheduler.scheduleAt(400) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_moreEventsThanBufferSize() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var relay: ReplayRelay<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { relay = ReplayRelay.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { relay.accept(1) }\n        scheduler.scheduleAt(200) { relay.accept(2) }\n        scheduler.scheduleAt(250) { relay.accept(3) }\n        scheduler.scheduleAt(300) { relay.accept(4) }\n        scheduler.scheduleAt(350) { relay.accept(5) }\n        scheduler.scheduleAt(400) { subscription = relay.subscribe(result) }\n        scheduler.scheduleAt(450) {\n            XCTAssertEqual(result.events, [\n                .next(400, 3),\n                .next(400, 4),\n                .next(400, 5)\n            ])\n        }\n        scheduler.scheduleAt(500) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_moreEventsThanBufferSizeMultipleObservers() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var relay: ReplayRelay<Int>! = nil\n        let result1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let result2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        scheduler.scheduleAt(100) { relay = ReplayRelay.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subscription1 = relay.subscribe(result1) }\n        scheduler.scheduleAt(200) { relay.accept(1) }\n        scheduler.scheduleAt(250) { relay.accept(2) }\n        scheduler.scheduleAt(300) { relay.accept(3) }\n        scheduler.scheduleAt(350) { relay.accept(4) }\n        scheduler.scheduleAt(400) { relay.accept(5) }\n        scheduler.scheduleAt(450) { subscription2 = relay.subscribe(result2) }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result1.events, [\n                .next(200, 1),\n                .next(250, 2),\n                .next(300, 3),\n                .next(350, 4),\n                .next(400, 5)\n            ])\n            XCTAssertEqual(result2.events, [\n                .next(450, 3),\n                .next(450, 4),\n                .next(450, 5)\n            ])\n        }\n        scheduler.scheduleAt(550) {\n            subscription1.dispose()\n            subscription2.dispose()\n        }\n\n        scheduler.start()\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Anomalies.swift",
    "content": "//\n//  Anomalies.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/22/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nimport Foundation\n\n/**\n Makes sure github anomalies and edge cases don't surface up again.\n */\nclass AnomaliesTest: RxTest {}\n\nextension AnomaliesTest {\n    func test936() {\n        func performSharingOperatorsTest(share: @escaping (Observable<Int>) -> Observable<Int>) {\n            let queue = DispatchQueue(\n                label: \"Test\",\n                attributes: .concurrent // commenting this to use a serial queue remove the issue\n            )\n\n            for _ in 0 ..< 10 {\n                let expectation = expectation(description: \"wait until sequence completes\")\n\n                queue.async {\n                    let scheduler: SchedulerType = ConcurrentDispatchQueueScheduler(queue: queue, leeway: .milliseconds(5))\n\n                    func makeSequence(label _: String, period: RxTimeInterval) -> Observable<Int> {\n                        share(Observable<Int>.interval(period, scheduler: scheduler))\n                    }\n\n                    _ = makeSequence(label: \"main\", period: .milliseconds(100))\n                        .flatMapLatest { (index: Int) -> Observable<(Int, Int)> in\n                            return makeSequence(label: \"nested\", period: .milliseconds(20)).map { (index, $0) }\n                        }\n                        .take(10)\n                        .enumerated().map { ($0, $1.0, $1.1) }\n                        .subscribe(\n                            onNext: { _ in },\n                            onCompleted: {\n                                expectation.fulfill()\n                            }\n                        )\n                }\n            }\n\n            waitForExpectations(timeout: 10.0) { e in\n                XCTAssertNil(e)\n            }\n        }\n\n        for op in [\n            { $0.share(replay: 1) },\n            { $0.replay(1).refCount() },\n            { $0.publish().refCount() }\n        ] as [(Observable<Int>) -> Observable<Int>] {\n            performSharingOperatorsTest(share: op)\n        }\n    }\n\n    func test1323() {\n        func performSharingOperatorsTest(share: @escaping (Observable<Int>) -> Observable<Int>) {\n            _ = share(Observable<Int>.create { observer in\n                observer.on(.next(1))\n                Thread.sleep(forTimeInterval: 0.1)\n                observer.on(.completed)\n                return Disposables.create()\n            }\n            .flatMap { int -> Observable<Int> in\n                return Observable.create { observer -> Disposable in\n                    DispatchQueue.global().async {\n                        observer.onNext(int)\n                        observer.onCompleted()\n                    }\n                    return Disposables.create()\n                }\n            })\n            .subscribe()\n        }\n\n        for op in [\n            { $0.share(replay: 0, scope: .whileConnected) },\n            { $0.share(replay: 0, scope: .forever) },\n            { $0.share(replay: 1, scope: .whileConnected) },\n            { $0.share(replay: 1, scope: .forever) },\n            { $0.share(replay: 2, scope: .whileConnected) },\n            { $0.share(replay: 2, scope: .forever) }\n        ] as [(Observable<Int>) -> Observable<Int>] {\n            performSharingOperatorsTest(share: op)\n        }\n    }\n\n    func test1344() {\n        let disposeBag = DisposeBag()\n        let foo = Observable<Int>.create { observer in\n            observer.on(.next(1))\n            Thread.sleep(forTimeInterval: 0.1)\n            observer.on(.completed)\n            return Disposables.create()\n        }\n        .flatMap { int -> Observable<[Int]> in\n            return Observable.create { observer -> Disposable in\n                DispatchQueue.global().async {\n                    observer.onNext([int])\n                }\n                self.sleep(0.1)\n                return Disposables.create()\n            }\n        }\n\n        Observable.merge(foo, .just([42]))\n            .subscribe()\n            .disposed(by: disposeBag)\n    }\n\n    func testSeparationBetweenOnAndSubscriptionLocks() {\n        func performSharingOperatorsTest(share: @escaping (Observable<Int>) -> Observable<Int>) {\n            for _ in 0 ..< 1 {\n                let expectation = expectation(description: \"wait until sequence completes\")\n\n                let queue = DispatchQueue(\n                    label: \"off main thread\",\n                    attributes: .concurrent\n                )\n\n                queue.async {\n                    func makeSequence(label _: String, period: RxTimeInterval) -> Observable<Int> {\n                        let schedulerQueue = DispatchQueue(\n                            label: \"Test\",\n                            attributes: .concurrent\n                        )\n\n                        let scheduler: SchedulerType = ConcurrentDispatchQueueScheduler(queue: schedulerQueue, leeway: .milliseconds(0))\n\n                        return share(Observable<Int>.interval(period, scheduler: scheduler))\n                    }\n\n                    _ = Observable.of(\n                        makeSequence(label: \"main\", period: .milliseconds(200)),\n                        makeSequence(label: \"nested\", period: .milliseconds(300))\n                    ).merge()\n                        .take(1)\n                        .subscribe(\n                            onNext: { _ in\n                                Thread.sleep(forTimeInterval: 0.4)\n                            },\n                            onCompleted: {\n                                expectation.fulfill()\n                            }\n                        )\n                }\n            }\n\n            waitForExpectations(timeout: 2.0) { e in\n                XCTAssertNil(e)\n            }\n        }\n\n        for op in [\n            { $0.share(replay: 0, scope: .whileConnected) },\n            { $0.share(replay: 0, scope: .forever) },\n            { $0.share(replay: 1, scope: .whileConnected) },\n            { $0.share(replay: 1, scope: .forever) },\n            { $0.share(replay: 2, scope: .whileConnected) },\n            { $0.share(replay: 2, scope: .forever) }\n        ] as [(Observable<Int>) -> Observable<Int>] {\n            performSharingOperatorsTest(share: op)\n        }\n    }\n\n    func test2653ShareReplayOneInitialEmissionDeadlock() {\n        let immediatelyEmittingSource = Observable<Void>.create { observer in\n            observer.on(.next(()))\n            return Disposables.create()\n        }\n        .share(replay: 1, scope: .whileConnected)\n\n        let exp = createInitialEmissionsDeadlockExpectation(\n            sourceName: \"`share(replay: 1, scope: .whileConnected)`\",\n            immediatelyEmittingSource: immediatelyEmittingSource\n        )\n\n        wait(for: [exp], timeout: 5)\n    }\n\n    func test2653ShareReplayMoreInitialEmissionDeadlock() {\n        let immediatelyEmittingSource = Observable<Void>.create { observer in\n            observer.on(.next(()))\n            return Disposables.create()\n        }\n        .share(replay: 2, scope: .whileConnected)\n\n        let exp = createInitialEmissionsDeadlockExpectation(\n            sourceName: \"`share(replay: 2, scope: .whileConnected)`\",\n            immediatelyEmittingSource: immediatelyEmittingSource\n        )\n\n        wait(for: [exp], timeout: 5)\n    }\n\n    func test2653ShareReplayOneForeverInitialEmissionDeadlock() {\n        let immediatelyEmittingSource = Observable<Void>.create { observer in\n            observer.on(.next(()))\n            return Disposables.create()\n        }\n        .share(replay: 1, scope: .forever)\n\n        let exp = createInitialEmissionsDeadlockExpectation(\n            sourceName: \"`share(replay: 1, scope: .forever)`\",\n            immediatelyEmittingSource: immediatelyEmittingSource\n        )\n\n        wait(for: [exp], timeout: 5)\n    }\n\n    func test2653ShareReplayMoreForeverInitialEmissionDeadlock() {\n        let immediatelyEmittingSource = Observable<Void>.create { observer in\n            observer.on(.next(()))\n            return Disposables.create()\n        }\n        .share(replay: 2, scope: .forever)\n\n        let exp = createInitialEmissionsDeadlockExpectation(\n            sourceName: \"`share(replay: 2, scope: .forever)`\",\n            immediatelyEmittingSource: immediatelyEmittingSource\n        )\n\n        wait(for: [exp], timeout: 5)\n    }\n\n    private func createInitialEmissionsDeadlockExpectation(\n        sourceName: String,\n        immediatelyEmittingSource: Observable<Void>\n    ) -> XCTestExpectation {\n        let exp = expectation(description: \"`\\(sourceName)` doesn't cause a deadlock in multithreaded environment because it doesn't keep its lock acquired to replay values upon subscription\")\n\n        let triggerRange = 0 ..< 1000\n\n        let multipleSubscriptions = Observable.zip(triggerRange.map { _ in\n            Observable.just(())\n                .observe(on: ConcurrentDispatchQueueScheduler(qos: .userInitiated))\n                .flatMap { _ in\n                    immediatelyEmittingSource\n                }\n                .take(1)\n        })\n\n        _ = multipleSubscriptions.subscribe(onCompleted: {\n            exp.fulfill()\n        })\n\n        return exp\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/AssumptionsTest.swift",
    "content": "//\n//  AssumptionsTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 2/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\nimport XCTest\n\nfinal class AssumptionsTest: RxTest {\n    func testResourceLeaksDetectionIsTurnedOn() {\n        #if TRACE_RESOURCES\n        let startResourceCount = Resources.total\n\n        var observable: Observable<Int>! = Observable.just(1)\n\n        XCTAssertTrue(observable != nil)\n        XCTAssertEqual(Resources.total, (startResourceCount + 1) as Int32)\n\n        observable = nil\n\n        XCTAssertEqual(Resources.total, startResourceCount)\n        #elseif RELEASE\n\n        #else\n        XCTAssert(false, \"Can't run unit tests in without tracing\")\n        #endif\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/AsyncSubjectTests.swift",
    "content": "//\n//  AsyncSubjectTests.swift\n//  Tests\n//\n//  Created by Victor Galán on 07/01/2017.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass AsyncSubjectTests: RxTest {\n    func test_hasObserversManyObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: AsyncSubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = AsyncSubject() }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(301) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(302) { subscription3 = subject.subscribe(results3) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(405) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(410) { subscription2.dispose() }\n        scheduler.scheduleAt(415) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(420) { subscription3.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_infinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .next(630, 8),\n            .next(710, 9),\n            .next(870, 10),\n            .next(940, 11),\n            .next(1020, 12)\n        ])\n\n        var subject: AsyncSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = AsyncSubject<Int>() }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [])\n\n        XCTAssertEqual(results2.events, [])\n\n        XCTAssertEqual(results3.events, [])\n    }\n\n    func test_finite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .completed(630),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: AsyncSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = AsyncSubject<Int>() }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [])\n\n        XCTAssertEqual(results2.events, [\n            .next(630, 7),\n            .completed(630)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .next(900, 7),\n            .completed(900)\n        ])\n    }\n\n    func test_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .error(630, testError),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: AsyncSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = AsyncSubject<Int>() }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [\n        ])\n\n        XCTAssertEqual(results2.events, [\n            .error(630, testError)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .error(900, testError)\n        ])\n    }\n\n    func test_empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .completed(630),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: AsyncSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = AsyncSubject<Int>() }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [])\n\n        XCTAssertEqual(results2.events, [\n            .completed(630)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .completed(900)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Atomic+Overrides.swift",
    "content": "//\n//  Atomic+Overrides.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/29/19.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\n/// This is a workaround for the overloaded `load` symbol.\n@inline(__always)\nfunc globalLoad(_ this: AtomicInt) -> Int32 {\n    load(this)\n}\n\n/// This is a workaround for the overloaded `add` symbol.\n@inline(__always)\n@discardableResult\nfunc globalAdd(_ this: AtomicInt, _ value: Int32) -> Int32 {\n    add(this, value)\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/AtomicTests.swift",
    "content": "//\n//  AtomicTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/29/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport XCTest\n\n#if true\ntypealias AtomicPrimitive = AtomicInt\n#else\nprivate struct AtomicIntSanityCheck {\n    var atom: Int32 = 0\n\n    init() {}\n\n    init(_ atom: Int32) {\n        self.atom = atom\n    }\n\n    mutating func add(_ value: Int32) -> Int32 {\n        defer { self.atom += value }\n        return atom\n    }\n\n    mutating func sub(_ value: Int32) -> Int32 {\n        defer { self.atom -= value }\n        return atom\n    }\n\n    mutating func fetchOr(_ value: Int32) -> Int32 {\n        defer { self.atom |= value }\n        return atom\n    }\n\n    func load() -> Int32 {\n        atom\n    }\n}\n\nprivate typealias AtomicPrimitive = AtomicIntSanityCheck\n#endif\n\nclass AtomicTests: RxTest {}\n\nextension AtomicTests {\n    func testAtomicInitialValue() {\n        let atomic = AtomicPrimitive(4)\n        XCTAssertEqual(globalLoad(atomic), 4)\n    }\n\n    func testAtomicInitialDefaultValue() {\n        let atomic = AtomicPrimitive()\n        XCTAssertEqual(globalLoad(atomic), 0)\n    }\n}\n\nextension AtomicTests {\n    private static let repeatCount = 100\n    private static let concurrency = 8\n\n    func testFetchOrSetsBits() {\n        let atomic = AtomicPrimitive()\n        XCTAssertEqual(fetchOr(atomic, 0), 0)\n        XCTAssertEqual(fetchOr(atomic, 4), 0)\n        XCTAssertEqual(fetchOr(atomic, 8), 4)\n        XCTAssertEqual(fetchOr(atomic, 0), 12)\n    }\n\n    func testFetchOrConcurrent() {\n        let queue = DispatchQueue.global(qos: .default)\n        for _ in 0 ..< AtomicTests.repeatCount {\n            let atomic = AtomicPrimitive(0)\n\n            let counter = AtomicPrimitive(0)\n\n            var expectations = [XCTestExpectation]()\n\n            for _ in 0 ..< AtomicTests.concurrency {\n                let expectation = expectation(description: \"wait until operation completes\")\n                queue.async {\n                    while globalLoad(atomic) == 0 {}\n\n                    if fetchOr(atomic, -1) == 1 {\n                        globalAdd(counter, 1)\n                    }\n\n                    expectation.fulfill()\n                }\n                expectations.append(expectation)\n            }\n            fetchOr(atomic, 1)\n\n            #if os(Linux)\n            waitForExpectations(timeout: 1.0) { _ in }\n            #else\n            XCTWaiter().wait(for: expectations, timeout: 1.0)\n            #endif\n            XCTAssertEqual(globalLoad(counter), 1)\n        }\n    }\n\n    func testAdd() {\n        let atomic = AtomicPrimitive(0)\n        XCTAssertEqual(globalAdd(atomic, 4), 0)\n        XCTAssertEqual(globalAdd(atomic, 3), 4)\n        XCTAssertEqual(globalAdd(atomic, 10), 7)\n    }\n\n    func testAddConcurrent() {\n        let queue = DispatchQueue.global(qos: .default)\n        for _ in 0 ..< AtomicTests.repeatCount {\n            let atomic = AtomicPrimitive(0)\n\n            let counter = AtomicPrimitive(0)\n\n            var expectations = [XCTestExpectation]()\n\n            for _ in 0 ..< AtomicTests.concurrency {\n                let expectation = expectation(description: \"wait until operation completes\")\n                queue.async {\n                    while globalLoad(atomic) == 0 {}\n\n                    globalAdd(counter, 1)\n\n                    expectation.fulfill()\n                }\n                expectations.append(expectation)\n            }\n            fetchOr(atomic, 1)\n\n            #if os(Linux)\n            waitForExpectations(timeout: 1.0) { _ in }\n            #else\n            XCTWaiter().wait(for: expectations, timeout: 1.0)\n            #endif\n\n            XCTAssertEqual(globalLoad(counter), 8)\n        }\n    }\n\n    func testSub() {\n        let atomic = AtomicPrimitive(0)\n        XCTAssertEqual(sub(atomic, -4), 0)\n        XCTAssertEqual(sub(atomic, -3), 4)\n        XCTAssertEqual(sub(atomic, -10), 7)\n    }\n\n    func testSubConcurrent() {\n        let queue = DispatchQueue.global(qos: .default)\n        for _ in 0 ..< AtomicTests.repeatCount {\n            let atomic = AtomicPrimitive(0)\n\n            let counter = AtomicPrimitive(0)\n\n            var expectations = [XCTestExpectation]()\n\n            for _ in 0 ..< AtomicTests.concurrency {\n                let expectation = expectation(description: \"wait until operation completes\")\n                queue.async {\n                    while globalLoad(atomic) == 0 {}\n\n                    sub(counter, 1)\n\n                    expectation.fulfill()\n                }\n                expectations.append(expectation)\n            }\n            fetchOr(atomic, 1)\n\n            #if os(Linux)\n            waitForExpectations(timeout: 1.0) { _ in }\n            #else\n            XCTWaiter().wait(for: expectations, timeout: 1.0)\n            #endif\n\n            XCTAssertEqual(globalLoad(counter), -8)\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/BagTest.swift",
    "content": "//\n//  BagTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 8/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n// testable import doesn't work well in Linux\n#if !os(Linux)\n@testable import RxSwift\nimport XCTest\n\nfinal class BagTest: RxTest {\n    override var accumulateStatistics: Bool {\n        false\n    }\n}\n\nextension BagTest {\n    typealias DoSomething = () -> Void\n    typealias KeyType = Bag<DoSomething>.KeyType\n\n    func numberOfActionsAfter<T>(\n        _ nInsertions: Int,\n        deletionsFromStart: Int,\n        createNew: () -> T,\n        bagAction: (RxMutableBox<Bag<T>>) -> Void\n    ) {\n        let bag = RxMutableBox(Bag<T>())\n\n        var keys = [KeyType]()\n\n        for _ in 0 ..< nInsertions {\n            keys.append(bag.value.insert(createNew()))\n        }\n\n        for i in 0 ..< deletionsFromStart {\n            let key = keys[i]\n            XCTAssertTrue(bag.value.removeKey(key) != nil)\n        }\n\n        bagAction(bag)\n    }\n\n    func testBag_deletionsFromStart() {\n        for i in 0 ..< 50 {\n            for j in 0 ... i {\n                var numberForEachActions = 0\n                var numberObservers = 0\n                var numberDisposables = 0\n\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> DoSomething in { () in numberForEachActions += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<DoSomething>>) in bag.value.forEach { $0() }; XCTAssertTrue(bag.value.count == i - j) }\n                )\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> (Event<Int>) -> Void in { _ in numberObservers += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<(Event<Int>) -> Void>>) in dispatch(bag.value, .next(1)); XCTAssertTrue(bag.value.count == i - j) }\n                )\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) }\n                )\n\n                XCTAssertTrue(numberForEachActions == i - j)\n                XCTAssertTrue(numberObservers == i - j)\n                XCTAssertTrue(numberDisposables == i - j)\n            }\n        }\n    }\n\n    func numberOfActionsAfter<T>(_ nInsertions: Int, deletionsFromEnd: Int, createNew: () -> T, bagAction: (RxMutableBox<Bag<T>>) -> Void) {\n        let bag = RxMutableBox(Bag<T>())\n\n        var keys = [KeyType]()\n\n        for _ in 0 ..< nInsertions {\n            keys.append(bag.value.insert(createNew()))\n        }\n\n        for i in 0 ..< deletionsFromEnd {\n            let key = keys[keys.count - 1 - i]\n            XCTAssertTrue(bag.value.removeKey(key) != nil)\n        }\n\n        bagAction(bag)\n    }\n\n    func testBag_deletionsFromEnd() {\n        for i in 0 ..< 30 {\n            for j in 0 ... i {\n                var numberForEachActions = 0\n                var numberObservers = 0\n                var numberDisposables = 0\n\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> DoSomething in { () in numberForEachActions += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<DoSomething>>) in bag.value.forEach { $0() }; XCTAssertTrue(bag.value.count == i - j) }\n                )\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> (Event<Int>) -> Void in { _ in numberObservers += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<(Event<Int>) -> Void>>) in dispatch(bag.value, .next(1)); XCTAssertTrue(bag.value.count == i - j) }\n                )\n                numberOfActionsAfter(\n                    i,\n                    deletionsFromStart: j,\n                    createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },\n                    bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in disposeAll(in: bag.value); XCTAssertTrue(bag.value.count == i - j) }\n                )\n\n                XCTAssertTrue(numberForEachActions == i - j)\n                XCTAssertTrue(numberObservers == i - j)\n                XCTAssertTrue(numberDisposables == i - j)\n            }\n        }\n    }\n\n    func testBag_immutableForeach() {\n//        for breakAt in 0 ..< 50 {\n//            var increment1 = 0\n//            var increment2 = 0\n//            var increment3 = 0\n//\n//            let bag1 = RxMutableBox(Bag<DoSomething>())\n//            let bag2 = RxMutableBox(Bag<(Event<Int>) -> Void>())\n//            let bag3 = RxMutableBox(Bag<Disposable>())\n//\n//            for _ in 0 ..< 50 {\n//                _ = bag1.value.insert({\n//                    if increment1 == breakAt {\n//                        bag1.value.removeAll()\n//                    }\n//                    increment1 += 1\n//                })\n//                _ = bag2.value.insert({ _ in\n//                    if increment2 == breakAt {\n//                        bag2.value.removeAll()\n//                    }\n//                    increment2 += 1\n//                })\n//                _ = bag3.value.insert(Disposables.create {\n//                    if increment3 == breakAt {\n//                        bag3.value.removeAll()\n//                    }\n//                    increment3 += 1\n//                })\n//            }\n//\n//            for _ in 0 ..< 2 {\n//                bag1.value.forEach { c in\n//                    c()\n//                }\n//\n//                dispatch(bag2.value, .next(1))\n//\n//                disposeAll(in: bag3.value)\n//            }\n//\n//            XCTAssertEqual(increment1, 50)\n//        }\n    }\n\n    func testBag_removeAll() {\n        var numberForEachActions = 0\n        var numberObservers = 0\n        var numberDisposables = 0\n\n        numberOfActionsAfter(\n            100,\n            deletionsFromStart: 0,\n            createNew: { () -> DoSomething in { () in numberForEachActions += 1 } },\n            bagAction: { (bag: RxMutableBox<Bag<DoSomething>>) in bag.value.removeAll(); bag.value.forEach { $0() } }\n        )\n        numberOfActionsAfter(\n            100,\n            deletionsFromStart: 0,\n            createNew: { () -> (Event<Int>) -> Void in { _ in numberObservers += 1 } },\n            bagAction: { (bag: RxMutableBox<Bag<(Event<Int>) -> Void>>) in bag.value.removeAll(); dispatch(bag.value, .next(1)) }\n        )\n        numberOfActionsAfter(\n            100,\n            deletionsFromStart: 0,\n            createNew: { () -> Disposable in Disposables.create { numberDisposables += 1 } },\n            bagAction: { (bag: RxMutableBox<Bag<Disposable>>) in bag.value.removeAll(); disposeAll(in: bag.value) }\n        )\n\n        XCTAssertTrue(numberForEachActions == 0)\n        XCTAssertTrue(numberObservers == 0)\n        XCTAssertTrue(numberDisposables == 0)\n    }\n\n    func testBag_complexityTestFromFront() {\n        var bag = Bag<Disposable>()\n\n        let limit = 10000\n\n        var increment = 0\n\n        var keys: [Bag<Disposable>.KeyType] = []\n        for _ in 0 ..< limit {\n            keys.append(bag.insert(Disposables.create { increment += 1 }))\n        }\n\n        for i in 0 ..< limit {\n            _ = bag.removeKey(keys[i])\n        }\n    }\n\n    func testBag_complexityTestFromEnd() {\n        var bag = Bag<Disposable>()\n\n        let limit = 10000\n\n        var increment = 0\n\n        var keys: [Bag<Disposable>.KeyType] = []\n        for _ in 0 ..< limit {\n            keys.append(bag.insert(Disposables.create { increment += 1 }))\n        }\n\n        for i in 0 ..< limit {\n            _ = bag.removeKey(keys[limit - 1 - i])\n        }\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxSwiftTests/BehaviorSubjectTest.swift",
    "content": "//\n//  BehaviorSubjectTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass BehaviorSubjectTest: RxTest {\n    func test_Infinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .next(630, 8),\n            .next(710, 9),\n            .next(870, 10),\n            .next(940, 11),\n            .next(1020, 12)\n        ])\n\n        var subject: BehaviorSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [\n            .next(300, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7)\n        ])\n\n        XCTAssertEqual(results2.events, [\n            .next(400, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .next(630, 8)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .next(900, 10),\n            .next(940, 11)\n        ])\n    }\n\n    func test_Finite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .completed(630),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: BehaviorSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [\n            .next(300, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7)\n        ])\n\n        XCTAssertEqual(results2.events, [\n            .next(400, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .completed(630)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .completed(900)\n        ])\n    }\n\n    func test_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(110, 2),\n            .next(220, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .error(630, testError),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: BehaviorSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [\n            .next(300, 4),\n            .next(340, 5),\n            .next(410, 6),\n            .next(520, 7)\n        ])\n\n        XCTAssertEqual(results2.events, [\n            .next(400, 5),\n            .next(410, 6),\n            .next(520, 7),\n            .error(630, testError)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .error(900, testError)\n        ])\n    }\n\n    func test_Canceled() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .completed(630),\n            .next(640, 9),\n            .completed(650),\n            .error(660, testError)\n        ])\n\n        var subject: BehaviorSubject<Int>! = nil\n        var subscription: Disposable! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(200) { subscription = xs.subscribe(subject) }\n        scheduler.scheduleAt(1000) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(400) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(900) { subscription3 = subject.subscribe(results3) }\n\n        scheduler.scheduleAt(600) { subscription1.dispose() }\n        scheduler.scheduleAt(700) { subscription2.dispose() }\n        scheduler.scheduleAt(800) { subscription1.dispose() }\n        scheduler.scheduleAt(950) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(results1.events, [\n            .next(300, 100)\n        ])\n\n        XCTAssertEqual(results2.events, [\n            .next(400, 100),\n            .completed(630)\n        ])\n\n        XCTAssertEqual(results3.events, [\n            .completed(900)\n        ])\n    }\n\n    func test_hasObserversNoObservers() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: BehaviorSubject<Int>! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversOneObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: BehaviorSubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversManyObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: BehaviorSubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = BehaviorSubject<Int>(value: 100) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(301) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(302) { subscription3 = subject.subscribe(results3) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(405) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(410) { subscription2.dispose() }\n        scheduler.scheduleAt(415) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(420) { subscription3.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Binder+Tests.swift",
    "content": "//\n//  Binder+Tests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/17/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n\nclass BinderTests: RxTest {}\n\nextension BinderTests {\n    func testBindingOnNonMainQueueDispatchesToMainQueue() {\n        let waitForElement = expectation(description: \"wait until element arrives\")\n        let target = NSObject()\n        let bindingObserver = Binder(target) { (_, _: Int) in\n            MainScheduler.ensureRunningOnMainThread()\n            waitForElement.fulfill()\n        }\n\n        DispatchQueue.global(qos: .default).async {\n            bindingObserver.on(.next(1))\n        }\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssertNil(e)\n        }\n    }\n\n    func testBindingOnMainQueueDispatchesToNonMainQueue() {\n        let waitForElement = expectation(description: \"wait until element arrives\")\n        let target = NSObject()\n        let bindingObserver = Binder(target, scheduler: ConcurrentDispatchQueueScheduler(qos: .default)) { (_, _: Int) in\n            XCTAssert(!DispatchQueue.isMain)\n            waitForElement.fulfill()\n        }\n\n        bindingObserver.on(.next(1))\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssertNil(e)\n        }\n    }\n\n    func testBinderDoesNotRetainTarget() {\n        var target: NSObject? = NSObject()\n        #if swift(>=6.2)\n        weak let weakTarget = target\n        #else\n        weak var weakTarget = target\n        #endif\n\n        _ = Binder(target!) { (_, _: Int) in }\n\n        target = nil\n\n        XCTAssertNil(weakTarget)\n    }\n\n    func testBindingDoesNotExecuteAfterTargetDeallocated() {\n        var target: NSObject? = NSObject()\n        var bindingExecuted = false\n\n        let binder = Binder(target!) { (_, _: Int) in\n            bindingExecuted = true\n        }\n\n        target = nil\n        binder.on(.next(1))\n\n        RunLoop.current.run(until: Date(timeIntervalSinceNow: 0.1))\n\n        XCTAssertFalse(bindingExecuted)\n    }\n\n    func testBindingReceivesCorrectValue() {\n        let expectation = expectation(description: \"binding executed\")\n        let target = NSObject()\n        var receivedValue: Int?\n\n        let binder = Binder(target) { (_, value: Int) in\n            receivedValue = value\n            expectation.fulfill()\n        }\n\n        binder.on(.next(42))\n\n        waitForExpectations(timeout: 1.0)\n        XCTAssertEqual(receivedValue, 42)\n    }\n\n    func testBindingReceivesCorrectTarget() {\n        let expectation = expectation(description: \"binding executed\")\n        let target = NSObject()\n        var receivedTarget: NSObject?\n\n        let binder = Binder(target) { (t, _: Int) in\n            receivedTarget = t\n            expectation.fulfill()\n        }\n\n        binder.on(.next(1))\n\n        waitForExpectations(timeout: 1.0)\n        XCTAssertTrue(receivedTarget === target)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Completable+AndThen.swift",
    "content": "//\n//  Completable+AndThen.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/2/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass CompletableAndThenTest: RxTest {}\n\nextension CompletableAndThenTest {\n    func testCompletableEmpty_CompletableCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = Completable.empty()\n\n        let x2: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.andThen(x2.asCompletable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    func testCompletableCompleted_CompletableCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asCompletable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableError_CompletableCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(210, testError)\n        ])\n\n        let x2: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asCompletable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n        ])\n    }\n\n    func testCompletableCompleted_CompletableError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(290, testError)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asCompletable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletable_FirstCompletableNotRetainedBeyondCompletion() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        var object = Optional.some(TestObject())\n\n        var completable = x.asCompletable()\n            .do(onCompleted: { [object] in\n                _ = object\n            })\n\n        let disposable = completable\n            .andThen(.never())\n            .subscribe()\n\n        defer {\n            disposable.dispose()\n        }\n\n        // completable has completed by now\n        scheduler.advanceTo(300)\n\n        #if swift(>=6.2)\n        weak let weakObject = object\n        #else\n        weak var weakObject = object\n        #endif\n        object = nil\n        completable = .never()\n\n        XCTAssertNil(weakObject)\n    }\n\n    func testCompletable_FirstCompletableNotRetainedBeyondFailure() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(210, TestError.dummyError)\n        ])\n\n        var object = Optional.some(TestObject())\n\n        var completable = x.asCompletable()\n            .do(onCompleted: { [object] in\n                _ = object\n            })\n\n        let disposable = completable\n            .andThen(.never())\n            .subscribe()\n\n        defer {\n            disposable.dispose()\n        }\n\n        // completable has terminated with error by now\n        scheduler.advanceTo(300)\n\n        #if swift(>=6.2)\n        weak let weakObject = object\n        #else\n        weak var weakObject = object\n        #endif\n        object = nil\n        completable = .never()\n\n        XCTAssertNil(weakObject)\n    }\n\n    #if TRACE_RESOURCES\n    func testAndThenCompletableReleasesResourcesOnComplete() {\n        _ = Completable.empty().andThen(Completable.empty()).subscribe()\n    }\n\n    func testAndThenCompletableReleasesResourcesOnError1() {\n        _ = Completable.error(testError).andThen(Completable.empty()).subscribe()\n    }\n\n    func testAndThenCompletableReleasesResourcesOnError2() {\n        _ = Completable.empty().andThen(Completable.error(testError)).subscribe()\n    }\n    #endif\n}\n\nextension CompletableAndThenTest {\n    func testCompletableEmpty_SingleCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = Completable.empty()\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(285, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.andThen(x2.asSingle())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    func testCompletableCompleted_SingleNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asSingle())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableError_SingleNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(210, testError)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asSingle())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n        ])\n    }\n\n    func testCompletableCompleted_SingleError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(290, testError)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asSingle())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testAndThenSingleReleasesResourcesOnComplete() {\n        _ = Completable.empty().andThen(Single.just(1)).subscribe()\n    }\n\n    func testAndThenSingleReleasesResourcesOnError1() {\n        _ = Completable.error(testError).andThen(Single.just(1)).subscribe()\n    }\n\n    func testAndThenSingleReleasesResourcesOnError2() {\n        _ = Completable.empty().andThen(Single<Int>.error(testError)).subscribe()\n    }\n    #endif\n}\n\nextension CompletableAndThenTest {\n    func testCompletableEmpty_MaybeCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = Completable.empty()\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(285, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.andThen(x2.asMaybe())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    func testCompletableCompleted_MaybeNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asMaybe())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableError_MaybeNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(210, testError)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(290, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asMaybe())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n        ])\n    }\n\n    func testCompletableCompleted_MaybeError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(290, testError)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asMaybe())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableCompleted_MaybeEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asMaybe())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testAndThenMaybeReleasesResourcesOnComplete() {\n        _ = Completable.empty().andThen(Maybe.just(1)).subscribe()\n    }\n\n    func testAndThenMaybeReleasesResourcesOnError1() {\n        _ = Completable.error(testError).andThen(Maybe.just(1)).subscribe()\n    }\n\n    func testAndThenMaybeReleasesResourcesOnError2() {\n        _ = Completable.empty().andThen(Maybe<Int>.error(testError)).subscribe()\n    }\n    #endif\n}\n\nextension CompletableAndThenTest {\n    func testCompletableEmpty_ObservableCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = Completable.empty()\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(285, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.andThen(x2.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(285, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    func testCompletableCompleted_ObservableNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(280, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableError_ObservableNormal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .error(210, testError)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(280, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n        ])\n    }\n\n    func testCompletableCompleted_ObservableError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(290, testError)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    func testCompletableCompleted_ObservableEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1: TestableObservable<Never> = scheduler.createHotObservable([\n            .completed(210)\n        ])\n\n        let x2: TestableObservable<Int> = scheduler.createHotObservable([\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            x1.asCompletable().andThen(x2.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(290)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(210, 290)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testAndThenObservableReleasesResourcesOnComplete() {\n        _ = Completable.empty().andThen(Observable.just(1)).subscribe()\n    }\n\n    func testAndThenObservableReleasesResourcesOnError1() {\n        _ = Completable.error(testError).andThen(Observable.just(1)).subscribe()\n    }\n\n    func testAndThenObservableReleasesResourcesOnError2() {\n        _ = Completable.empty().andThen(Observable<Int>.error(testError)).subscribe()\n    }\n    #endif\n}\n\nprivate class TestObject {}\n"
  },
  {
    "path": "Tests/RxSwiftTests/CompletableTest.swift",
    "content": "//\n//  CompletableTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass CompletableTest: RxTest {}\n\n// completable\nextension CompletableTest {\n    func testCompletable_Subscription_completed() {\n        let xs = Completable.empty()\n\n        var events: [CompletableEvent] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.completed])\n    }\n\n    func testCompletable_Subscription_error() {\n        let xs = Completable.error(testError)\n\n        var events: [CompletableEvent] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.error(testError)])\n    }\n\n    func testCompletable_Subscription_onDisposed() {\n        // Given\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.createObserver(Void.self)\n        var observer: ((CompletableEvent) -> Void)!\n        var subscription: Disposable!\n        var onDisposesCalled = 0\n        // When\n        scheduler.scheduleAt(201) {\n            subscription = Completable.create {\n                observer = $0\n                return Disposables.create()\n            }\n            .subscribe(onDisposed: { onDisposesCalled += 1 })\n        }\n        scheduler.scheduleAt(202) {\n            subscription.dispose()\n        }\n        scheduler.scheduleAt(203) {\n            observer(.error(testError))\n        }\n        scheduler.start()\n        // Then\n        XCTAssertTrue(res.events.isEmpty)\n        XCTAssertEqual(onDisposesCalled, 1)\n    }\n\n    func testCompletable_Subscription_onDisposed_completed() {\n        // Given\n        let maybe = Completable.empty()\n        var onDisposedCalled = 0\n        // When\n        _ = maybe.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testCompletable_Subscription_onDisposed_error() {\n        // Given\n        let single = Completable.error(testError)\n        var onDisposedCalled = 0\n        // When\n        _ = single.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testCompletable_create_completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((CompletableEvent) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.completed)\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.error(testError))\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.completed)\n        })\n\n        let res = scheduler.start {\n            Completable.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201, Never.self)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testCompletable_create_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((CompletableEvent) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.error(testError))\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.completed)\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.error(testError))\n        })\n\n        let res = scheduler.start {\n            Completable.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(201, testError)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testCompletable_create_disposing() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((CompletableEvent) -> Void)! = nil\n        var disposedTime: Int?\n        var subscription: Disposable! = nil\n        let res = scheduler.createObserver(Never.self)\n\n        scheduler.scheduleAt(201, action: {\n            subscription = Completable.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n            .asObservable()\n            .subscribe(res)\n        })\n        scheduler.scheduleAt(202, action: {\n            subscription.dispose()\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.completed)\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.error(testError))\n        })\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(disposedTime, 202)\n    }\n}\n\nextension CompletableTest {\n    func test_error_fails() {\n        do {\n            _ = try Completable.error(testError).toBlocking().first()\n            XCTFail()\n        } catch let e {\n            XCTAssertEqual(e as! TestError, testError)\n        }\n    }\n\n    func test_never_producesElement() {\n        var event: CompletableEvent?\n        let subscription = Completable.never().subscribe { _event in\n            event = _event\n        }\n\n        XCTAssertNil(event)\n        subscription.dispose()\n    }\n\n    func test_deferred() {\n        let result = try! (Completable.deferred { Completable.empty() } as Completable).toBlocking().toArray()\n        XCTAssertEqual(result, [])\n    }\n\n    func test_delaySubscription() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().delaySubscription(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(202)\n        ])\n    }\n\n    func test_delay() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().delay(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(202)\n        ])\n    }\n\n    func test_observeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().observe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n    }\n\n    func test_subscribeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n    }\n\n    func test_catchError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.error(testError).catch { _ in Completable.empty() }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_retry() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Completable.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Completable.error(e)\n                    }\n\n                    return Completable.empty()\n                }\n                .retry(2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Completable.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Completable.error(e)\n                    }\n\n                    return Completable.empty()\n                }\n                .retry { (e: Observable<Error>) in\n                    e\n                }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Completable.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Completable.error(e)\n                    }\n\n                    return Completable.empty()\n                }\n                .retry { e in\n                    e\n                }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_debug() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().debug()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_using() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var disposable: MockDisposable!\n        var xs: TestableObservable<Never>!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Completable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } primitiveSequenceFactory: { (d: MockDisposable) -> Completable in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .completed(100)\n                ])\n                return xs.asObservable().asCompletable()\n            }\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(res.events, [\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            300\n        ])\n    }\n\n    func test_timeout() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(205, RxError.timeout)\n        ])\n    }\n\n    func test_timeout_other() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let xs2 = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(225)\n        ])\n    }\n\n    func test_timeout_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(220)\n        ])\n    }\n\n    func test_timeout_other_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let xs2 = scheduler.createColdObservable([\n            .completed(20)\n        ]).asCompletable()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(220)\n        ])\n    }\n}\n\nextension CompletableTest {\n    func test_do() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().do(onError: { _ in () }, onSubscribe: { () in () }, onSubscribed: { () in () }, onDispose: { () in () })\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_concat() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.empty().concat(Completable.empty())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_concat_sequence() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.concat(AnySequence([Completable.empty()]))\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_concat_collection() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.concat([Completable.empty()])\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_concat_variadic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.concat(Completable.empty(), Completable.empty())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_zip_collection() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.zip(AnyCollection([Completable.empty(), Completable.empty()]))\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_zip_array() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.zip([Completable.empty(), Completable.empty()])\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_zip_variadic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Completable.zip(Completable.empty(), Completable.empty())\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n}\n\nextension CompletableTest {\n    func testDefaultErrorHandler() {\n        var loggedErrors = [TestError]()\n\n        _ = Completable.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [])\n\n        let originalErrorHandler = Hooks.defaultErrorHandler\n\n        Hooks.defaultErrorHandler = { _, error in\n            loggedErrors.append(error as! TestError)\n        }\n\n        _ = Completable.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n\n        Hooks.defaultErrorHandler = originalErrorHandler\n\n        _ = Completable.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n    }\n}\n\npublic func == (_: Never, _: Never) -> Bool {}\n"
  },
  {
    "path": "Tests/RxSwiftTests/CurrentThreadSchedulerTest.swift",
    "content": "//\n//  CurrentThreadSchedulerTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n\nclass CurrentThreadSchedulerTest: RxTest {}\n\nextension CurrentThreadSchedulerTest {\n    func testCurrentThreadScheduler_scheduleRequired() {\n        XCTAssertTrue(CurrentThreadScheduler.isScheduleRequired)\n\n        var executed = false\n        _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n            executed = true\n            XCTAssertTrue(!CurrentThreadScheduler.isScheduleRequired)\n            return Disposables.create()\n        }\n\n        XCTAssertTrue(executed)\n    }\n\n    func testCurrentThreadScheduler_basicScenario() {\n        XCTAssertTrue(CurrentThreadScheduler.isScheduleRequired)\n\n        var messages = [Int]()\n        _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n            messages.append(1)\n            _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                _ = CurrentThreadScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                messages.append(4)\n                return Disposables.create()\n            }\n            messages.append(2)\n            return Disposables.create()\n        }\n\n        XCTAssertEqual(messages, [1, 2, 3, 4, 5])\n    }\n\n    func testCurrentThreadScheduler_disposing1() {\n        XCTAssertTrue(CurrentThreadScheduler.isScheduleRequired)\n\n        var messages = [Int]()\n        _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n            messages.append(1)\n            let disposable = CurrentThreadScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                let disposable = CurrentThreadScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                disposable.dispose()\n                messages.append(4)\n                return disposable\n            }\n            messages.append(2)\n            return disposable\n        }\n\n        XCTAssertEqual(messages, [1, 2, 3, 4])\n    }\n\n    func testCurrentThreadScheduler_disposing2() {\n        XCTAssertTrue(CurrentThreadScheduler.isScheduleRequired)\n\n        var messages = [Int]()\n        _ = CurrentThreadScheduler.instance.schedule(()) { _ in\n            messages.append(1)\n            let disposable = CurrentThreadScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                let disposable = CurrentThreadScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                messages.append(4)\n                return disposable\n            }\n            disposable.dispose()\n            messages.append(2)\n            return disposable\n        }\n\n        XCTAssertEqual(messages, [1, 2])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/DisposableTest.swift",
    "content": "//\n//  DisposableTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(Linux)\nimport Glibc\n#else\nimport Foundation\n#endif\n\nclass DisposableTest: RxTest {\n    override func setUp() {\n        super.setUp()\n    }\n\n    override func tearDown() {\n        super.tearDown()\n    }\n}\n\n// action\nextension DisposableTest {\n    func testActionDisposable() {\n        var counter = 0\n\n        let disposable = Disposables.create {\n            counter += 1\n        }\n\n        XCTAssert(counter == 0)\n        disposable.dispose()\n        XCTAssert(counter == 1)\n        disposable.dispose()\n        XCTAssert(counter == 1)\n    }\n}\n\n// hot disposable\nextension DisposableTest {\n    func testHotObservable_Disposing() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 400) {\n            xs\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n}\n\n// composite disposable\nextension DisposableTest {\n    func testCompositeDisposable_TestNormal() {\n        var numberDisposed = 0\n        let compositeDisposable = CompositeDisposable()\n\n        let result1 = compositeDisposable.insert(Disposables.create {\n            numberDisposed += 1\n        })\n\n        _ = compositeDisposable.insert(Disposables.create {\n            numberDisposed += 1\n        })\n\n        XCTAssertEqual(numberDisposed, 0)\n        XCTAssertEqual(compositeDisposable.count, 2)\n        XCTAssertTrue(result1 != nil)\n\n        compositeDisposable.dispose()\n        XCTAssertEqual(numberDisposed, 2)\n        XCTAssertEqual(compositeDisposable.count, 0)\n\n        let result = compositeDisposable.insert(Disposables.create {\n            numberDisposed += 1\n        })\n\n        XCTAssertEqual(numberDisposed, 3)\n        XCTAssertEqual(compositeDisposable.count, 0)\n        XCTAssertTrue(result == nil)\n    }\n\n    func testCompositeDisposable_TestInitWithNumberOfDisposables() {\n        var numberDisposed = 0\n\n        let disposable1 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable2 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable3 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable4 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable5 = Disposables.create {\n            numberDisposed += 1\n        }\n\n        let compositeDisposable = CompositeDisposable(disposable1, disposable2, disposable3, disposable4, disposable5)\n\n        XCTAssertEqual(numberDisposed, 0)\n        XCTAssertEqual(compositeDisposable.count, 5)\n\n        compositeDisposable.dispose()\n        XCTAssertEqual(numberDisposed, 5)\n        XCTAssertEqual(compositeDisposable.count, 0)\n    }\n\n    func testCompositeDisposable_TestRemoving() {\n        var numberDisposed = 0\n        let compositeDisposable = CompositeDisposable()\n\n        let result1 = compositeDisposable.insert(Disposables.create {\n            numberDisposed += 1\n        })\n\n        let result2 = compositeDisposable.insert(Disposables.create {\n            numberDisposed += 1\n        })\n\n        XCTAssertEqual(numberDisposed, 0)\n        XCTAssertEqual(compositeDisposable.count, 2)\n        XCTAssertTrue(result1 != nil)\n\n        compositeDisposable.remove(for: result2!)\n\n        XCTAssertEqual(numberDisposed, 1)\n        XCTAssertEqual(compositeDisposable.count, 1)\n\n        compositeDisposable.dispose()\n\n        XCTAssertEqual(numberDisposed, 2)\n        XCTAssertEqual(compositeDisposable.count, 0)\n    }\n\n    func testDisposables_TestCreateWithNumberOfDisposables() {\n        var numberDisposed = 0\n\n        let disposable1 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable2 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable3 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable4 = Disposables.create {\n            numberDisposed += 1\n        }\n        let disposable5 = Disposables.create {\n            numberDisposed += 1\n        }\n\n        let disposable = Disposables.create(disposable1, disposable2, disposable3, disposable4, disposable5)\n\n        XCTAssertEqual(numberDisposed, 0)\n\n        disposable.dispose()\n        XCTAssertEqual(numberDisposed, 5)\n    }\n}\n\n// refCount disposable\nextension DisposableTest {\n    func testRefCountDisposable_RefCounting() {\n        let d = BooleanDisposable()\n        let r = RefCountDisposable(disposable: d)\n\n        XCTAssertEqual(r.isDisposed, false)\n\n        let d1 = r.retain()\n        let d2 = r.retain()\n\n        XCTAssertEqual(d.isDisposed, false)\n\n        d1.dispose()\n        XCTAssertEqual(d.isDisposed, false)\n\n        d2.dispose()\n        XCTAssertEqual(d.isDisposed, false)\n\n        r.dispose()\n        XCTAssertEqual(d.isDisposed, true)\n\n        let d3 = r.retain()\n        d3.dispose()\n    }\n\n    func testRefCountDisposable_PrimaryDisposesFirst() {\n        let d = BooleanDisposable()\n        let r = RefCountDisposable(disposable: d)\n\n        XCTAssertEqual(r.isDisposed, false)\n\n        let d1 = r.retain()\n        let d2 = r.retain()\n\n        XCTAssertEqual(d.isDisposed, false)\n\n        d1.dispose()\n        XCTAssertEqual(d.isDisposed, false)\n\n        r.dispose()\n        XCTAssertEqual(d.isDisposed, false)\n\n        d2.dispose()\n        XCTAssertEqual(d.isDisposed, true)\n    }\n}\n\n// scheduled disposable\nextension DisposableTest {\n    func testScheduledDisposable_correctQueue() {\n        let expectationQueue = expectation(description: \"wait\")\n        let label = \"test label\"\n        let queue = DispatchQueue(label: label)\n        let nameKey = DispatchSpecificKey<String>()\n        queue.setSpecific(key: nameKey, value: label)\n        let scheduler = ConcurrentDispatchQueueScheduler(queue: queue)\n\n        let testDisposable = Disposables.create {\n            XCTAssertEqual(DispatchQueue.getSpecific(key: nameKey), label)\n            expectationQueue.fulfill()\n        }\n\n        let scheduledDisposable = ScheduledDisposable(scheduler: scheduler, disposable: testDisposable)\n        scheduledDisposable.dispose()\n\n        waitForExpectations(timeout: 0.5) { error in\n            XCTAssertNil(error)\n        }\n    }\n}\n\n// serial disposable\nextension DisposableTest {\n    func testSerialDisposable_firstDisposedThenSet() {\n        let serialDisposable = SerialDisposable()\n        XCTAssertFalse(serialDisposable.isDisposed)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n\n        let testDisposable = TestDisposable()\n        serialDisposable.disposable = testDisposable\n        XCTAssertEqual(testDisposable.count, 1)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n        XCTAssertEqual(testDisposable.count, 1)\n    }\n\n    func testSerialDisposable_firstSetThenDisposed() {\n        let serialDisposable = SerialDisposable()\n        XCTAssertFalse(serialDisposable.isDisposed)\n\n        let testDisposable = TestDisposable()\n\n        serialDisposable.disposable = testDisposable\n        XCTAssertEqual(testDisposable.count, 0)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n        XCTAssertEqual(testDisposable.count, 1)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n        XCTAssertEqual(testDisposable.count, 1)\n    }\n\n    func testSerialDisposable_firstSetThenSetAnotherThenDisposed() {\n        let serialDisposable = SerialDisposable()\n        XCTAssertFalse(serialDisposable.isDisposed)\n\n        let testDisposable1 = TestDisposable()\n        let testDisposable2 = TestDisposable()\n\n        serialDisposable.disposable = testDisposable1\n        XCTAssertEqual(testDisposable1.count, 0)\n        XCTAssertEqual(testDisposable2.count, 0)\n\n        serialDisposable.disposable = testDisposable2\n        XCTAssertEqual(testDisposable1.count, 1)\n        XCTAssertEqual(testDisposable2.count, 0)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n        XCTAssertEqual(testDisposable1.count, 1)\n        XCTAssertEqual(testDisposable2.count, 1)\n\n        serialDisposable.dispose()\n        XCTAssertTrue(serialDisposable.isDisposed)\n        XCTAssertEqual(testDisposable1.count, 1)\n        XCTAssertEqual(testDisposable2.count, 1)\n    }\n}\n\n// single assignment disposable\nextension DisposableTest {\n    func testSingleAssignmentDisposable_firstDisposedThenSet() {\n        let singleAssignmentDisposable = SingleAssignmentDisposable()\n\n        singleAssignmentDisposable.dispose()\n\n        let testDisposable = TestDisposable()\n\n        singleAssignmentDisposable.setDisposable(testDisposable)\n\n        XCTAssertEqual(testDisposable.count, 1)\n        singleAssignmentDisposable.dispose()\n        XCTAssertEqual(testDisposable.count, 1)\n    }\n\n    func testSingleAssignmentDisposable_firstSetThenDisposed() {\n        let singleAssignmentDisposable = SingleAssignmentDisposable()\n\n        let testDisposable = TestDisposable()\n\n        singleAssignmentDisposable.setDisposable(testDisposable)\n\n        XCTAssertEqual(testDisposable.count, 0)\n        singleAssignmentDisposable.dispose()\n        XCTAssertEqual(testDisposable.count, 1)\n\n        singleAssignmentDisposable.dispose()\n        XCTAssertEqual(testDisposable.count, 1)\n    }\n\n    func testSingleAssignmentDisposable_stress() {\n        let count = AtomicInt(0)\n\n        let queue = DispatchQueue(label: \"dispose\", qos: .default, attributes: [.concurrent])\n\n        for _ in 0 ..< 100 {\n            for _ in 0 ..< 10 {\n                let expectation = expectation(description: \"1\")\n                let singleAssignmentDisposable = SingleAssignmentDisposable()\n                let disposable = Disposables.create {\n                    increment(count)\n                    expectation.fulfill()\n                }\n                #if os(Linux)\n                let roll = Glibc.random() & 1\n                #else\n                let roll = arc4random_uniform(2)\n                #endif\n                if roll == 0 {\n                    queue.async {\n                        singleAssignmentDisposable.setDisposable(disposable)\n                    }\n                    queue.async {\n                        singleAssignmentDisposable.dispose()\n                    }\n                } else {\n                    queue.async {\n                        singleAssignmentDisposable.dispose()\n                    }\n                    queue.async {\n                        singleAssignmentDisposable.setDisposable(disposable)\n                    }\n                }\n            }\n        }\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssertNil(e)\n        }\n\n        XCTAssertEqual(globalLoad(count), 1000)\n    }\n}\n\nprivate class TestDisposable: Disposable {\n    var count = 0\n    func dispose() {\n        count += 1\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/DisposeBagTest.swift",
    "content": "//\n//  DisposeBagTest.swift\n//  Tests\n//\n//  Created by Michael Long on 6/16/18.\n//  Copyright © 2018 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass DisposeBagTest: RxTest {\n    override func setUp() {\n        super.setUp()\n    }\n\n    override func tearDown() {\n        super.tearDown()\n    }\n}\n\n// DisposeBag insert test\nextension DisposeBagTest {\n    func testDisposeBagInsert() {\n        let disposable1 = TestDisposable()\n        let disposable2 = TestDisposable()\n\n        var disposeBag: DisposeBag? = DisposeBag()\n\n        disposeBag?.insert(disposable1)\n        disposeBag?.insert(disposable2)\n\n        XCTAssert(disposable1.count == 0)\n        XCTAssert(disposable2.count == 0)\n        disposeBag = nil\n        XCTAssert(disposable1.count == 1)\n        XCTAssert(disposable2.count == 1)\n    }\n}\n\n// DisposeBag bag test\nextension DisposeBagTest {\n    func testDisposeBagVaradicInsert() {\n        let disposable1 = TestDisposable()\n        let disposable2 = TestDisposable()\n\n        var disposeBag: DisposeBag? = DisposeBag()\n\n        disposeBag?.insert(disposable1, disposable2)\n\n        XCTAssert(disposable1.count == 0)\n        XCTAssert(disposable2.count == 0)\n        disposeBag = nil\n        XCTAssert(disposable1.count == 1)\n        XCTAssert(disposable2.count == 1)\n    }\n\n    func testDisposeBagVaradicInsertArray() {\n        let disposable1 = TestDisposable()\n        let disposable2 = TestDisposable()\n\n        var disposeBag: DisposeBag? = DisposeBag()\n\n        disposeBag?.insert([disposable1, disposable2])\n\n        XCTAssert(disposable1.count == 0)\n        XCTAssert(disposable2.count == 0)\n        disposeBag = nil\n        XCTAssert(disposable1.count == 1)\n        XCTAssert(disposable2.count == 1)\n    }\n}\n\n// DisposeBag function builder initializer tests\nextension DisposeBagTest {\n    func testDisposableBuilderInitializer() {\n        let disposable1 = TestDisposable()\n        let disposable2 = TestDisposable()\n        let disposable3 = TestDisposable()\n\n        var disposeBag = DisposeBag {\n            disposable1\n            disposable2\n            disposable3\n        }\n\n        XCTAssert(disposable1.count == 0)\n        XCTAssert(disposable2.count == 0)\n        XCTAssert(disposable3.count == 0)\n        disposeBag = DisposeBag()\n        XCTAssert(disposable1.count == 1)\n        XCTAssert(disposable2.count == 1)\n        XCTAssert(disposable3.count == 1)\n\n        // Avoids \"Variable 'disposeBag' was written to, but never read\"\n        _ = disposeBag\n    }\n\n    func testDisposableBuilderInsert() {\n        let disposable1 = TestDisposable()\n        let disposable2 = TestDisposable()\n        let disposable3 = TestDisposable()\n        let disposable4 = TestDisposable()\n\n        var disposeBag = DisposeBag {\n            disposable1\n            disposable2\n        }\n\n        disposeBag.insert {\n            disposable3\n            disposable4\n        }\n\n        XCTAssert(disposable1.count == 0)\n        XCTAssert(disposable2.count == 0)\n        XCTAssert(disposable3.count == 0)\n        XCTAssert(disposable4.count == 0)\n        disposeBag = DisposeBag()\n        XCTAssert(disposable1.count == 1)\n        XCTAssert(disposable2.count == 1)\n        XCTAssert(disposable3.count == 1)\n        XCTAssert(disposable4.count == 1)\n\n        // Avoids \"Variable 'disposeBag' was written to, but never read\"\n        _ = disposeBag\n    }\n}\n\nprivate class TestDisposable: Disposable {\n    var count = 0\n    func dispose() {\n        count += 1\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Event+Test.swift",
    "content": "//\n//  Event+Test.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/16/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass EventTests: RxTest {}\n\nextension EventTests {\n    func testMapTransformNext() {\n        let original = Event.next(1)\n\n        XCTAssertEqual(Event.next(2), original.map { x -> Int in x + 1 }) { $0 == $1 }\n    }\n\n    func testMapTransformNextThrow() {\n        let original = Event.next(1)\n\n        XCTAssertEqual(Event.error(testError), original.map { _ -> Int in throw testError }) { $0 == $1 }\n    }\n\n    func testMapTransformError() {\n        let original = Event<Int>.error(testError2)\n\n        XCTAssertEqual(Event.error(testError2), original.map { _ -> Int in throw testError }) { $0 == $1 }\n    }\n\n    func testMapTransformCompleted() {\n        let original = Event<Int>.completed\n\n        XCTAssertEqual(Event.completed, original.map { _ -> Int in throw testError }) { $0 == $1 }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/HistoricalSchedulerTest.swift",
    "content": "//\n//  HistoricalSchedulerTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\nimport XCTest\n\nclass HistoricalSchedulerTest: RxTest {}\n\nextension HistoricalSchedulerTest {\n    func testHistoricalScheduler_initialClock() {\n        let scheduler = HistoricalScheduler(initialClock: Date(timeIntervalSince1970: 10.0))\n        XCTAssertEqual(scheduler.now, Date(timeIntervalSince1970: 10.0))\n        XCTAssertEqual(scheduler.clock, Date(timeIntervalSince1970: 10.0))\n    }\n\n    func testHistoricalScheduler_start() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.now)\n            _ = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n            return scheduler.schedule(()) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 30.0)\n        ])\n    }\n\n    func testHistoricalScheduler_disposeStart() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.now)\n            let d = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n            let d2 = scheduler.schedule(()) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n\n            d2.dispose()\n            d.dispose()\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0)\n        ])\n    }\n\n    func testHistoricalScheduler_advanceToAfter() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.now)\n            _ = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n            return scheduler.schedule(()) { _ in\n                times.append(scheduler.now)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.advanceTo(Date(timeIntervalSince1970: 100.0))\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 30.0)\n        ])\n    }\n\n    func testHistoricalScheduler_advanceToBefore() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.now)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n            return scheduler!.schedule(()) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.advanceTo(Date(timeIntervalSince1970: 10.0))\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 10.0)\n        ])\n    }\n\n    func testHistoricalScheduler_disposeAdvanceTo() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.now)\n            let d1 = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n            let d2 = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n\n            d1.dispose()\n            d2.dispose()\n            return Disposables.create()\n        }\n\n        scheduler.advanceTo(Date(timeIntervalSince1970: 200.0))\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0)\n        ])\n    }\n\n    func testHistoricalScheduler_stop() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.now)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n            _ = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n\n            scheduler!.stop()\n\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0)\n        ])\n    }\n\n    func testHistoricalScheduler_sleep() {\n        let scheduler = HistoricalScheduler()\n\n        var times: [Date] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.now)\n\n            scheduler!.sleep(100)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n            _ = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.now)\n                return Disposables.create()\n            }\n\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            Date(timeIntervalSince1970: 10.0),\n            Date(timeIntervalSince1970: 110.0),\n            Date(timeIntervalSince1970: 130.0)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Infallible+CombineLatestTests+arity.swift",
    "content": "//\n//  Infallible+CombineLatestTests+arity.swift\n//  Tests\n//\n//  Created by Hal Lee on 5/11/23.\n//  Copyright © 2023 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass InfallibleCombineLatestTest: RxTest {\n    func testCombineLatest_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream)\n                .map { $0 + $1 }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 2)\n        ])\n    }\n\n    func testCombineLatest_3_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream)\n                .map { $0 + $1 + $2 }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 3)\n        ])\n    }\n\n    func testCombineLatest_4_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fourthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream, fourthStream)\n                .map { (a: Int, b: Int, c: Int, d: Int) -> Int in a + b + c + d }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 4)\n        ])\n    }\n\n    func testCombineLatest_5_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fourthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fifthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream, fourthStream, fifthStream)\n                .map { (a: Int, b: Int, c: Int, d: Int, e: Int) -> Int in a + b + c + d + e }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 5)\n        ])\n    }\n\n    func testCombineLatest_6_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fourthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fifthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let sixthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream, fourthStream, fifthStream, sixthStream)\n                .map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) -> Int in a + b + c + d + e + f }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 6)\n        ])\n    }\n\n    func testCombineLatest_7_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fourthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fifthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let sixthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let seventhStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream, fourthStream, fifthStream, sixthStream, seventhStream)\n                .map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int) -> Int in a + b + c + d + e + f + g }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 7)\n        ])\n    }\n\n    func testCombineLatest_8_Arity() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let firstStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let secondStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let thirdStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fourthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let fifthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let sixthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let seventhStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let eighthStream = scheduler.createColdObservable([\n            .next(1, 1)\n        ]).asInfallible(onErrorFallbackTo: .never())\n\n        let observer = scheduler.start(created: 0, subscribed: 0, disposed: 100) {\n            Infallible\n                .combineLatest(firstStream, secondStream, thirdStream, fourthStream, fifthStream, sixthStream, seventhStream, eighthStream)\n                .map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int, h: Int) -> Int in a + b + c + d + e + f + g + h }\n        }\n\n        XCTAssertEqual(observer.events, [\n            .next(1, 8)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Infallible+ConcurrencyTests.swift",
    "content": "//\n//  Infallible+ConcurrencyTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Dispatch\nimport RxSwift\nimport RxTest\nimport XCTest\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nclass InfallibleConcurrencyTests: RxTest {\n    let scheduler = TestScheduler(initialClock: 0)\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension InfallibleConcurrencyTests {\n    func testAwaitsValuesAndFinishes() async {\n        let infallible = Infallible\n            .from(1 ... 10)\n\n        var values = [Int]()\n\n        for await value in infallible.values {\n            values.append(value)\n        }\n\n        XCTAssertEqual(values, Array(1 ... 10))\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxSwiftTests/Infallible+Tests.swift",
    "content": "//\n//  Infallible+Tests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 11/20/20.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxRelay\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass InfallibleTest: RxTest {}\n\nextension InfallibleTest {\n    func testAsInfallible_OnErrorJustReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .error(390, testError),\n            .next(480, 320)\n        ])\n\n        let inf = xs.asInfallible(onErrorJustReturn: 600)\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .next(390, 600),\n            .completed(390)\n        ])\n    }\n\n    func testAsInfallible_OnErrorFallbackTo() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .error(390, testError),\n            .next(480, 320)\n        ])\n\n        let inf = xs.asInfallible(onErrorFallbackTo: Infallible<Int>.of(1, 2))\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .next(390, 1),\n            .next(390, 2),\n            .completed(390)\n        ])\n    }\n\n    func testAsInfallible_OnErrorRecover() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .error(390, testError),\n            .next(480, 320)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(500, 25),\n            .next(600, 33),\n            .completed(620)\n        ])\n\n        let inf = xs.asInfallible(onErrorRecover: { _ in ys.asInfallible(onErrorJustReturn: -1) })\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(300, 9),\n            .next(340, 13),\n            .next(360, 111),\n            .next(500, 25),\n            .next(600, 33),\n            .completed(620)\n        ])\n    }\n\n    func testAsInfallible_BehaviourRelay() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = BehaviorRelay<Int>(value: 0)\n\n        let ys = scheduler.createHotObservable([\n            .next(500, 25),\n            .next(600, 33)\n        ])\n\n        let inf = xs.asInfallible()\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n        _ = ys.bind(to: xs)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(0, 0),\n            .next(500, 25),\n            .next(600, 33)\n        ])\n    }\n\n    func testAsInfallible_PublishRelay() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = PublishRelay<Int>()\n\n        let ys = scheduler.createHotObservable([\n            .next(500, 25),\n            .next(600, 33)\n        ])\n\n        let inf = xs.asInfallible()\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n        _ = ys.bind(to: xs)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(500, 25),\n            .next(600, 33)\n        ])\n    }\n\n    func testAsInfallible_ReplayRelay() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = ReplayRelay<Int>.create(bufferSize: 2)\n\n        let ys = scheduler.createHotObservable([\n            .next(500, 25),\n            .next(600, 33)\n        ])\n\n        let inf = xs.asInfallible()\n        let observer = scheduler.createObserver(Int.self)\n\n        _ = inf.bind(to: observer)\n        _ = ys.bind(to: xs)\n\n        scheduler.start()\n\n        XCTAssertEqual(observer.events, [\n            .next(500, 25),\n            .next(600, 33)\n        ])\n    }\n\n    func testAnonymousInfallible_detachesOnDispose() {\n        var observer: ((InfallibleEvent<Int>) -> Void)!\n        let a = Infallible.create { o in\n            observer = o\n            return Disposables.create()\n        } as Infallible<Int>\n\n        var elements = [Int]()\n\n        let d = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer(.next(0))\n        XCTAssertEqual(elements, [0])\n\n        d.dispose()\n\n        observer(.next(1))\n        XCTAssertEqual(elements, [0])\n    }\n\n    func testAnonymousInfallible_detachesOnComplete() {\n        var observer: ((InfallibleEvent<Int>) -> Void)!\n        let a = Infallible.create { o in\n            observer = o\n            return Disposables.create()\n        } as Infallible<Int>\n\n        var elements = [Int]()\n\n        _ = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer(.next(0))\n        XCTAssertEqual(elements, [0])\n\n        observer(.completed)\n\n        observer(.next(1))\n        XCTAssertEqual(elements, [0])\n    }\n}\n\nextension InfallibleTest {\n    func testAsInfallible_never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: Infallible<Int> = Infallible.never()\n\n        let res = scheduler.start { xs }\n\n        let correct: [Recorded<Event<Int>>] = []\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    #if TRACE_RESOURCES\n    func testAsInfallibleReleasesResourcesOnComplete() {\n        _ = Observable<Int>.empty().asInfallible(onErrorJustReturn: 0).subscribe()\n    }\n\n    func testAsInfallibleReleasesResourcesOnError() {\n        _ = Observable<Int>.empty().asInfallible(onErrorJustReturn: 0).subscribe()\n    }\n    #endif\n}\n\n// MARK: - Subscribe with object\n\nextension InfallibleTest {\n    func testSubscribeWithNext() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        var completed: UUID?\n\n        let observable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let inf = observable.asInfallible(onErrorJustReturn: -1)\n\n        _ = inf\n            .subscribe(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onCompleted: { completed = $0.id },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"3\"\n        ])\n\n        XCTAssertEqual(completed, uuid)\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n\n    func testSubscribeWithError() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        var completed: UUID?\n\n        let observable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .error(30, testError),\n            .next(40, 3)\n        ])\n\n        let inf = observable.asInfallible(onErrorJustReturn: -1)\n\n        _ = inf\n            .subscribe(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onCompleted: { completed = $0.id },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"-1\"\n        ])\n\n        XCTAssertEqual(completed, uuid)\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n}\n\nprivate class TestObject: NSObject {\n    var id = UUID()\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/MainSchedulerTests.swift",
    "content": "//\n//  MainSchedulerTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport CoreFoundation\nimport Dispatch\n\nimport RxSwift\nimport XCTest\n\nclass MainSchedulerTest: RxTest {}\n\nextension MainSchedulerTest {\n    func runRunLoop() {\n        for _ in 0 ..< 10 {\n            let currentRunLoop = CFRunLoopGetCurrent()\n            DispatchQueue.main.async {\n                CFRunLoopStop(currentRunLoop)\n            }\n\n            CFRunLoopWakeUp(currentRunLoop)\n            CFRunLoopRun()\n        }\n    }\n}\n\nextension MainSchedulerTest {\n    func testMainScheduler_basicScenario() {\n        var messages = [Int]()\n        var executedImmediately = false\n        _ = MainScheduler.instance.schedule(()) { _ in\n            executedImmediately = true\n            messages.append(1)\n            _ = MainScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                _ = MainScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                messages.append(4)\n                return Disposables.create()\n            }\n            messages.append(2)\n            return Disposables.create()\n        }\n\n        XCTAssertTrue(executedImmediately)\n\n        runRunLoop()\n\n        XCTAssertEqual(messages, [1, 2, 3, 4, 5])\n    }\n\n    func testMainScheduler_disposing1() {\n        var messages = [Int]()\n        _ = MainScheduler.instance.schedule(()) { _ in\n            messages.append(1)\n            let disposable = MainScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                let disposable = MainScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                disposable.dispose()\n                messages.append(4)\n                return disposable\n            }\n            messages.append(2)\n            return disposable\n        }\n\n        runRunLoop()\n\n        XCTAssertEqual(messages, [1, 2, 3, 4])\n    }\n\n    func testMainScheduler_disposing2() {\n        var messages = [Int]()\n        _ = MainScheduler.instance.schedule(()) { _ in\n            messages.append(1)\n            let disposable = MainScheduler.instance.schedule(()) { _ in\n                messages.append(3)\n                let disposable = MainScheduler.instance.schedule(()) {\n                    messages.append(5)\n                    return Disposables.create()\n                }\n                messages.append(4)\n                return disposable\n            }\n            disposable.dispose()\n            messages.append(2)\n            return disposable\n        }\n\n        runRunLoop()\n\n        XCTAssertEqual(messages, [1, 2])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/MaybeTest.swift",
    "content": "//\n//  MaybeTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass MaybeTest: RxTest {}\n\n// maybe\nextension MaybeTest {\n    func testMaybe_Subscription_success() {\n        let xs = Maybe.just(1)\n\n        var events: [MaybeEvent<Int>] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.success(1)])\n    }\n\n    func testMaybe_Subscription_completed() {\n        let xs = Maybe<Int>.empty()\n\n        var events: [MaybeEvent<Int>] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.completed])\n    }\n\n    func testMaybe_Subscription_error() {\n        let xs = Maybe<Int>.error(testError)\n\n        var events: [MaybeEvent<Int>] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.error(testError)])\n    }\n\n    func testMaybe_Subscription_onDisposed() {\n        // Given\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.createObserver(Int.self)\n        var observer: ((MaybeEvent<Int>) -> Void)!\n        var subscription: Disposable!\n        var onDisposesCalled = 0\n        // When\n        scheduler.scheduleAt(201) {\n            subscription = Maybe<Int>.create {\n                observer = $0\n                return Disposables.create()\n            }\n            .subscribe(onDisposed: { onDisposesCalled += 1 })\n        }\n        scheduler.scheduleAt(202) {\n            subscription.dispose()\n        }\n        scheduler.scheduleAt(203) {\n            observer(.error(testError))\n        }\n        scheduler.start()\n        // Then\n        XCTAssertTrue(res.events.isEmpty)\n        XCTAssertEqual(onDisposesCalled, 1)\n    }\n\n    func testMaybe_Subscription_onDisposed_success() {\n        // Given\n        let maybe = Maybe.just(1)\n        var onDisposedCalled = 0\n        // When\n        _ = maybe.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testMaybe_Subscription_onDisposed_completed() {\n        // Given\n        let maybe = Maybe<Int>.empty()\n        var onDisposedCalled = 0\n        // When\n        _ = maybe.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testMaybe_Subscription_onDisposed_error() {\n        // Given\n        let single = Maybe<Int>.error(testError)\n        var onDisposedCalled = 0\n        // When\n        _ = single.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testMaybe_create_success() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((MaybeEvent<Int>) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.error(testError))\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.completed)\n        })\n\n        let res = scheduler.start {\n            Maybe<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(201)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testMaybe_create_completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((MaybeEvent<Int>) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.completed)\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.error(testError))\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.completed)\n        })\n\n        let res = scheduler.start {\n            Maybe<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testMaybe_create_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((MaybeEvent<Int>) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.error(testError))\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.error(testError))\n        })\n\n        let res = scheduler.start {\n            Maybe<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(201, testError)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testMaybe_create_disposing() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((MaybeEvent<Int>) -> Void)! = nil\n        var disposedTime: Int?\n        var subscription: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(201, action: {\n            subscription = Maybe<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n            .asObservable()\n            .subscribe(res)\n        })\n        scheduler.scheduleAt(202, action: {\n            subscription.dispose()\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.error(testError))\n        })\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(disposedTime, 202)\n    }\n}\n\nextension MaybeTest {\n    func test_just_producesElement() {\n        let result = try! (Maybe.just(1) as Maybe<Int>).toBlocking().first()!\n        XCTAssertEqual(result, 1)\n    }\n\n    func test_just2_producesElement() {\n        let result = try! (Maybe.just(1, scheduler: CurrentThreadScheduler.instance) as Maybe<Int>).toBlocking().first()!\n        XCTAssertEqual(result, 1)\n    }\n\n    func test_error_fails() {\n        do {\n            _ = try (Maybe<Int>.error(testError) as Maybe<Int>).toBlocking().first()\n            XCTFail()\n        } catch let e {\n            XCTAssertEqual(e as! TestError, testError)\n        }\n    }\n\n    func test_never_producesElement() {\n        var event: MaybeEvent<Int>?\n        let subscription = (Maybe<Int>.never() as Maybe<Int>).subscribe { _event in\n            event = _event\n        }\n\n        XCTAssertNil(event)\n        subscription.dispose()\n    }\n\n    func test_deferred() {\n        let result = try! (Maybe.deferred { Maybe.just(1) } as Maybe<Int>).toBlocking().toArray()\n        XCTAssertEqual(result, [1])\n    }\n\n    func test_delaySubscription() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.just(1).delaySubscription(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 1),\n            .completed(202)\n        ])\n    }\n\n    func test_delay() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.just(1).delay(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 1),\n            .completed(203)\n        ])\n    }\n\n    func test_observeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.just(1).observe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(202)\n        ])\n    }\n\n    func test_subscribeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.just(1).subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(201)\n        ])\n    }\n\n    func test_catchError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.error(testError).catch { _ in Maybe.just(2) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_catchAndReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.error(testError).catchAndReturn(2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retry() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Maybe.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Maybe.error(e)\n                    }\n\n                    return Maybe.just(2)\n                }\n                .retry(2) as Maybe<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Maybe.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Maybe.error(e)\n                    }\n\n                    return Maybe.just(2)\n                }\n                .retry { (e: Observable<Error>) in\n                    e\n                } as Maybe<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            Maybe.error(testError)\n                .catch { e in\n                    defer {\n                        isFirst = false\n                    }\n                    if isFirst {\n                        return Maybe.error(e)\n                    }\n\n                    return Maybe.just(2)\n                }\n                .retry { e in\n                    e\n                } as Maybe<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_debug() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.just(1).debug()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_using() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var disposable: MockDisposable!\n        var xs: TestableObservable<Int>!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Maybe.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } primitiveSequenceFactory: { (d: MockDisposable) -> Maybe<Int> in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .next(100, scheduler.clock),\n                    .completed(100)\n                ])\n                return xs.asObservable().asMaybe()\n            }\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(res.events, [\n            .next(300, 200),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            300\n        ])\n    }\n\n    func test_timeout() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asMaybe()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(205, RxError.timeout)\n        ])\n    }\n\n    func test_timeout_other() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asMaybe()\n\n        let xs2 = scheduler.createColdObservable([\n            .next(20, 2),\n            .completed(20)\n        ]).asMaybe()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(225, 2),\n            .completed(225)\n        ])\n    }\n\n    func test_timeout_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asMaybe()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 1),\n            .completed(220)\n        ])\n    }\n\n    func test_timeout_other_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asMaybe()\n\n        let xs2 = scheduler.createColdObservable([\n            .next(20, 2),\n            .completed(20)\n        ]).asMaybe()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 1),\n            .completed(220)\n        ])\n    }\n}\n\nextension MaybeTest {\n    func test_timer() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.timer(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 0),\n            .completed(202)\n        ])\n    }\n}\n\nextension MaybeTest {\n    func test_do() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.just(1).do(onNext: { _ in () }, afterNext: { _ in () }, onError: { _ in () }, afterError: { _ in }, onSubscribe: { () in () }, onSubscribed: { () in () }, onDispose: { () in () })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_filter() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.just(1).filter { _ in false }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_map() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.just(1).map { $0 * 2 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_compactMap() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Maybe<String>.just(\"1\").compactMap(Int.init) as Maybe<Int>).asObservable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_compactMapNil() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Maybe<String>.just(\"a\").compactMap(Int.init) as Maybe<Int>).asObservable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_flatMap() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.just(1).flatMap { .just($0 * 2) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_ifEmptyDefault() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe<Int>.empty().ifEmpty(default: 5) as Single<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 5),\n            .completed(200)\n        ])\n    }\n\n    func test_ifEmptySwitchToMaybe() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = Maybe<Int>.empty()\n        let switchSource = Maybe.just(10)\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource) as Maybe<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 10),\n            .completed(200)\n        ])\n    }\n\n    func test_ifEmptySwitchToSingle() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = Maybe<Int>.empty()\n        let switchSource = Single.just(10)\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 10),\n            .completed(200)\n        ])\n    }\n}\n\nextension MaybeTest {\n    func test_zip_tuple() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Maybe.zip(Maybe.just(1), Maybe.just(2)) as Maybe<(Int, Int)>).map { $0.0 + $0.1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 3),\n            .completed(200)\n        ])\n    }\n\n    func test_zip_resultSelector() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Maybe.zip(Maybe.just(1), Maybe.just(2)) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 3),\n            .completed(200)\n        ])\n    }\n}\n\nextension MaybeTest {\n    func testDefaultErrorHandler() {\n        var loggedErrors = [TestError]()\n\n        _ = Maybe<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [])\n\n        let originalErrorHandler = Hooks.defaultErrorHandler\n\n        Hooks.defaultErrorHandler = { _, error in\n            loggedErrors.append(error as! TestError)\n        }\n\n        _ = Maybe<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n\n        Hooks.defaultErrorHandler = originalErrorHandler\n\n        _ = Maybe<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+AmbTests.swift",
    "content": "//\n//  Observable+AmbTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableAmbTest: RxTest {}\n\nextension ObservableAmbTest {\n    func testAmb_Never2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testAmb_Never3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let x3 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            Observable.amb([x1, x2, x3].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(x3.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testAmb_Never_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(225)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testAmb_RegularShouldDisposeLoser() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(240)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(240)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 240)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAmb_WinnerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .error(220, testError)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .error(220, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAmb_LoserThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .error(230, testError)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 3),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAmb_ThrowsBeforeElectionLeft() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAmb_ThrowsBeforeElectionRight() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let x1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let x2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            x1.amb(x2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(x1.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(x2.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testAmb1ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable.just(1).delay(.seconds(10), scheduler: scheduler).amb(Observable.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testAmb2ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable.just(1).amb(Observable.just(1).delay(.seconds(10), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n\n    func testAmb1ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler).amb(Observable<Int>.never()).subscribe()\n        scheduler.start()\n    }\n\n    func testAmb2ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().amb(Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+BufferTests.swift",
    "content": "//\n//  Observable+BufferTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableBufferTest: RxTest {}\n\nextension ObservableBufferTest {\n    func testBufferWithTimeOrCount_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start {\n            xs.buffer(timeSpan: .seconds(70), count: 3, scheduler: scheduler).map { EquatableArray($0) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, EquatableArray([1, 2, 3])),\n            .next(310, EquatableArray([4])),\n            .next(370, EquatableArray([5, 6, 7])),\n            .next(440, EquatableArray([8])),\n            .next(510, EquatableArray([9])),\n            .next(580, EquatableArray([])),\n            .next(600, EquatableArray([])),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testBufferWithTimeOrCount_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .error(600, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.buffer(timeSpan: .seconds(70), count: 3, scheduler: scheduler).map { EquatableArray($0) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, EquatableArray([1, 2, 3])),\n            .next(310, EquatableArray([4])),\n            .next(370, EquatableArray([5, 6, 7])),\n            .next(440, EquatableArray([8])),\n            .next(510, EquatableArray([9])),\n            .next(580, EquatableArray([])),\n            .error(600, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testBufferWithTimeOrCount_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 370) {\n            xs.buffer(timeSpan: .seconds(70), count: 3, scheduler: scheduler).map { EquatableArray($0) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, EquatableArray([1, 2, 3])),\n            .next(310, EquatableArray([4])),\n            .next(370, EquatableArray([5, 6, 7]))\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 370)\n        ])\n    }\n\n    func testBufferWithTimeOrCount_Default() {\n        let backgroundScheduler = SerialDispatchQueueScheduler(qos: .default)\n\n        let result = try! Observable.range(start: 1, count: 10, scheduler: backgroundScheduler)\n            .buffer(timeSpan: .seconds(1000), count: 3, scheduler: backgroundScheduler)\n            .skip(1)\n            .toBlocking()\n            .first()\n\n        XCTAssertEqual(result!, [4, 5, 6])\n    }\n\n    #if TRACE_RESOURCES\n    func testBufferReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).buffer(timeSpan: .seconds(0), count: 10, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testBufferReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).buffer(timeSpan: .seconds(0), count: 10, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+CatchTests.swift",
    "content": "//\n//  Observable+CatchTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableCatchTest: RxTest {}\n\nextension ObservableCatchTest {\n    func testCatch_ErrorSpecific_Caught() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        var handlerCalled: Int?\n\n        let res = scheduler.start {\n            o1.catch { _ in\n                handlerCalled = scheduler.clock\n                return o2.asObservable()\n            }\n        }\n\n        XCTAssertEqual(230, handlerCalled!)\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testCatch_HandlerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError)\n        ])\n\n        var handlerCalled: Int?\n\n        let res = scheduler.start {\n            o1.catch { _ in\n                handlerCalled = scheduler.clock\n                throw testError1\n            }\n        }\n\n        XCTAssertEqual(230, handlerCalled!)\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError1)\n        ])\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testCatchReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).catch { _ in Observable<Int>.just(1) }.subscribe()\n    }\n\n    func tesCatch1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).catch { _ in Observable<Int>.just(1) }.subscribe()\n    }\n\n    func tesCatch2ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).catch { _ in Observable<Int>.error(testError) }.subscribe()\n    }\n    #endif\n}\n\n// catch enumerable\nextension ObservableCatchTest {\n    func testCatchSequenceOf_IEofIO() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .next(30, 3),\n            .error(40, testError)\n        ])\n\n        let xs2 = scheduler.createColdObservable([\n            .next(10, 4),\n            .next(20, 5),\n            .error(30, testError)\n        ])\n\n        let xs3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(20, 7),\n            .next(30, 8),\n            .next(40, 9),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1.asObservable(), xs2.asObservable(), xs3.asObservable()])\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(250, 4),\n            .next(260, 5),\n            .next(280, 6),\n            .next(290, 7),\n            .next(300, 8),\n            .next(310, 9),\n            .completed(320)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 240)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(240, 270)\n        ])\n\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(270, 320)\n        ])\n    }\n\n    func testCatchAnySequence_NoErrors() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testCatchAnySequence_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testCatchAnySequence_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testCatchSequenceOf_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testCatchSequenceOf_ErrorNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 1000)\n        ])\n    }\n\n    func testCatchSequenceOf_ErrorError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(230, testError)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1, xs2].map { $0.asObservable() })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testCatchSequenceOf_Multiple() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .error(215, testError)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        let xs3 = scheduler.createHotObservable([\n            .next(230, 4),\n            .completed(235)\n        ])\n\n        let res = scheduler.start {\n            Observable.catch(sequence: [xs1.asObservable(), xs2.asObservable(), xs3.asObservable()])\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .completed(235)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 215)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(215, 225)\n        ])\n\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(225, 235)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testCatchSequenceReleasesResourcesOnComplete() {\n        _ = Observable.catch(sequence: [Observable<Int>.just(1)]).subscribe()\n    }\n    #endif\n}\n\nextension ObservableCatchTest {\n    func testRetry_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(100, 1),\n            .next(150, 2),\n            .next(200, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.retry()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 1),\n            .next(350, 2),\n            .next(400, 3),\n            .completed(450)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450)\n        ])\n    }\n\n    func testRetry_Infinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(100, 1),\n            .next(150, 2),\n            .next(200, 3)\n        ])\n\n        let res = scheduler.start {\n            xs.retry()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 1),\n            .next(350, 2),\n            .next(400, 3)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testRetry_Observable_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(100, 1),\n            .next(150, 2),\n            .next(200, 3),\n            .error(250, testError)\n        ])\n\n        let res = scheduler.start(disposed: 1100) {\n            xs.retry()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 1),\n            .next(350, 2),\n            .next(400, 3),\n            .next(550, 1),\n            .next(600, 2),\n            .next(650, 3),\n            .next(800, 1),\n            .next(850, 2),\n            .next(900, 3),\n            .next(1050, 1)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450),\n            Subscription(450, 700),\n            Subscription(700, 950),\n            Subscription(950, 1100)\n        ])\n    }\n\n    func testRetryCount_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(5, 1),\n            .next(10, 2),\n            .next(15, 3),\n            .error(20, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.retry(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .next(210, 2),\n            .next(215, 3),\n            .next(225, 1),\n            .next(230, 2),\n            .next(235, 3),\n            .next(245, 1),\n            .next(250, 2),\n            .next(255, 3),\n            .error(260, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220),\n            Subscription(220, 240),\n            Subscription(240, 260)\n        ])\n    }\n\n    func testRetryCount_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(5, 1),\n            .next(10, 2),\n            .next(15, 3),\n            .error(20, testError)\n        ])\n\n        let res = scheduler.start(disposed: 231) {\n            xs.retry(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .next(210, 2),\n            .next(215, 3),\n            .next(225, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220),\n            Subscription(220, 231)\n        ])\n    }\n\n    func testRetryCount_Infinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(5, 1),\n            .next(10, 2),\n            .next(15, 3),\n            .error(20, testError)\n        ])\n\n        let res = scheduler.start(disposed: 231) {\n            xs.retry(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .next(210, 2),\n            .next(215, 3),\n            .next(225, 1),\n            .next(230, 2)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220),\n            Subscription(220, 231)\n        ])\n    }\n\n    func testRetryCount_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(100, 1),\n            .next(150, 2),\n            .next(200, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.retry(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 1),\n            .next(350, 2),\n            .next(400, 3),\n            .completed(450)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450)\n        ])\n    }\n\n    func testRetry_tailRecursiveOptimizationsTest() {\n        var count = 1\n        let sequenceSendingImmediateError: Observable<Int> = Observable.create { observer in\n            observer.on(.next(0))\n            observer.on(.next(1))\n            observer.on(.next(2))\n            if count < 2 {\n                observer.on(.error(testError))\n                count += 1\n            }\n            observer.on(.next(3))\n            observer.on(.next(4))\n            observer.on(.next(5))\n            observer.on(.completed)\n\n            return Disposables.create()\n        }\n\n        _ = sequenceSendingImmediateError\n            .retry()\n            .subscribe { _ in\n            }\n    }\n\n    #if TRACE_RESOURCES\n    func testRetryReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).retry().subscribe()\n    }\n\n    func testRetryReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).retry(1).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+CombineLatestTests+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  Observable+CombineLatestTests+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\n// combine latest\nextension ObservableCombineLatestTest {\n    // 2\n\n    func testCombineLatest_Never2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1) { _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1).map { _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1) { _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1).map { _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.completed(220)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1) { _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(220, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1) { _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1).map { _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1) { (e0: Int, e1: Int) -> Int in\n                        return e0 + e1\n                    }\n                },\n                { e0, e1 in\n                    Observable.combineLatest(e0, e1).map { (e0: Int, e1: Int) -> Int in\n                        return e0 + e1\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 3),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 4),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(220, 3),\n\n                .next(410, 5),\n                .next(420, 7),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 3\n\n    func testCombineLatest_Never3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2) { _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2).map { _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2) { _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2).map { _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [.completed(230)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2) { _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(230, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2) { _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2).map { _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2) { (e0: Int, e1: Int, e2: Int) -> Int in\n                        return e0 + e1 + e2\n                    }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest(e0, e1, e2).map { (e0: Int, e1: Int, e2: Int) -> Int in\n                        return e0 + e1 + e2\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 4),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 5),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 6),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, 6),\n\n                .next(410, 9),\n                .next(420, 12),\n                .next(430, 15),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 4\n\n    func testCombineLatest_Never4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3) { _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3).map { _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3) { _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3).map { _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(240)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [.completed(240)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows4() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let e3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 4),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2, e3) { _, _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(240, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 240)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 240)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n\n        XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3) { _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3).map { _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3) { (e0: Int, e1: Int, e2: Int, e3: Int) -> Int in\n                        return e0 + e1 + e2 + e3\n                    }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.combineLatest(e0, e1, e2, e3).map { (e0: Int, e1: Int, e2: Int, e3: Int) -> Int in\n                        return e0 + e1 + e2 + e3\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 5),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 6),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 7),\n                .completed(800)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .next(440, 8),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(240, 10),\n\n                .next(410, 14),\n                .next(420, 18),\n                .next(430, 22),\n                .next(440, 26),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 5\n\n    func testCombineLatest_Never5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4) { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4).map { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4) { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4).map { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(240)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [.completed(250)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows5() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let e3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 4),\n            .completed(400)\n        ])\n\n        let e4 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 5),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2, e3, e4) { _, _, _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 250)])\n\n        XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n\n        XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4) { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4).map { _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(280)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4) { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4\n                    }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4).map { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 6),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 7),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 8),\n                .completed(800)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .next(440, 9),\n                .completed(800)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .next(450, 10),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(250, 15),\n\n                .next(410, 20),\n                .next(420, 25),\n                .next(430, 30),\n                .next(440, 35),\n                .next(450, 40),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 6\n\n    func testCombineLatest_Never6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5) { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5).map { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5) { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5).map { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(240)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [.completed(260)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows6() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let e3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 4),\n            .completed(400)\n        ])\n\n        let e4 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 5),\n            .completed(400)\n        ])\n\n        let e5 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(260, 6),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2, e3, e4, e5) { _, _, _, _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(260, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 260)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 260)])\n\n        XCTAssertEqual(e3.subscriptions, [Subscription(200, 260)])\n\n        XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])\n\n        XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5) { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5).map { _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(280)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(290)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5) { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5).map { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 7),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 8),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 9),\n                .completed(800)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .next(440, 10),\n                .completed(800)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .next(450, 11),\n                .completed(800)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .next(460, 12),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(260, 21),\n\n                .next(410, 27),\n                .next(420, 33),\n                .next(430, 39),\n                .next(440, 45),\n                .next(450, 51),\n                .next(460, 57),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 7\n\n    func testCombineLatest_Never7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6) { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6).map { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n            XCTAssertEqual(e6.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6) { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6).map { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(240)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [.completed(270)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows7() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let e3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 4),\n            .completed(400)\n        ])\n\n        let e4 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 5),\n            .completed(400)\n        ])\n\n        let e5 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(260, 6),\n            .completed(400)\n        ])\n\n        let e6 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(270, 7),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6) { _, _, _, _, _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(270, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e3.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e4.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])\n\n        XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6) { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6).map { _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(280)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(290)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(300)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 300)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6) { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int, e6: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5 + e6\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6).map { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int, e6: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5 + e6\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 8),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 9),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 10),\n                .completed(800)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .next(440, 11),\n                .completed(800)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .next(450, 12),\n                .completed(800)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .next(460, 13),\n                .completed(800)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(270, 7),\n                .next(470, 14),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(270, 28),\n\n                .next(410, 35),\n                .next(420, 42),\n                .next(430, 49),\n                .next(440, 56),\n                .next(450, 63),\n                .next(460, 70),\n                .next(470, 77),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    // 8\n\n    func testCombineLatest_Never8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7).map { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e7 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n            XCTAssertEqual(e6.subscriptions, subscriptions)\n            XCTAssertEqual(e7.subscriptions, subscriptions)\n        }\n    }\n\n    func testCombineLatest_Empty8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7).map { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(220)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(240)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e7 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(280)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [.completed(280)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrows8() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 1),\n            .completed(400)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(400)\n        ])\n\n        let e2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 3),\n            .completed(400)\n        ])\n\n        let e3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 4),\n            .completed(400)\n        ])\n\n        let e4 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 5),\n            .completed(400)\n        ])\n\n        let e5 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(260, 6),\n            .completed(400)\n        ])\n\n        let e6 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(270, 7),\n            .completed(400)\n        ])\n\n        let e7 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(280, 8),\n            .completed(400)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { _, _, _, _, _, _, _, _ throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(280, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e2.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e4.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e5.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])\n\n        XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7).map { _, _, _, _, _, _, _, _ -> Int in\n                        return 42\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(270)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(280)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(290)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(300)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(310)\n            ])\n\n            let e7 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 270)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 280)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 290)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 300)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 310)])\n\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_Typical8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7) { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int, e6: Int, e7: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5 + e6 + e7\n                    }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.combineLatest(e0, e1, e2, e3, e4, e5, e6, e7).map { (e0: Int, e1: Int, e2: Int, e3: Int, e4: Int, e5: Int, e6: Int, e7: Int) -> Int in\n                        return e0 + e1 + e2 + e3 + e4 + e5 + e6 + e7\n                    }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 9),\n                .completed(800)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 10),\n                .completed(800)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 11),\n                .completed(800)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .next(440, 12),\n                .completed(800)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .next(450, 13),\n                .completed(800)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .next(460, 14),\n                .completed(800)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(270, 7),\n                .next(470, 15),\n                .completed(800)\n            ])\n\n            let e7 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(280, 8),\n                .next(480, 16),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(280, 36),\n\n                .next(410, 44),\n                .next(420, 52),\n                .next(430, 60),\n                .next(440, 68),\n                .next(450, 76),\n                .next(460, 84),\n                .next(470, 92),\n                .next(480, 100),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 800)])\n\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 800)])\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+CombineLatestTests+arity.tt",
    "content": "//\n//  Observable+CombineLatestTests+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\nimport RxSwift\nimport RxTest\n\n// combine latest\nextension ObservableCombineLatestTest {\n<% for i in 2 ... 8 { %>\n\n    // <%= i %>\n\n    func testCombineLatest_Never<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n<% for j in 0..<i { %>\n            let e<%= j %> = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n<% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n            \n            XCTAssertEqual(res.events, [])\n            \n            let subscriptions = [Subscription(200, 1000)]\n            \n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, subscriptions)<% } %>\n        }\n    }\n\n    func testCombineLatest_Empty<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n<% for j in 0..<i { %>\n            let e<%= j %> = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(\\(200 + 10 * (j + 1)))\n            ])\n<% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [.completed(<%= 200 + 10 * i %>)])\n\n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 200 + 10 * (j + 1) %>)])\n<% } %>\n        }\n    }\n\n    func testCombineLatest_SelectorThrows<%= i %>() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n<% for j in 0..<i { %>\n        let e<%= j %> = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(<%= 200 + 10 * (j + 1) %>, <%= (j + 1) %>),\n            .completed(400)\n        ])\n<% } %>\n\n        let res = scheduler.start { () -> Observable<Int> in\n            Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> throws -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(<%= 200 + (i * 10) %>, testError)\n        ])\n\n<% for j in 0..<i { %>\n        XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 200 + (10 * i) %>)])\n<% } %>\n    }\n\n    func testCombineLatest_WillNeverBeAbleToCombine<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { <%= (Array(0..<i).map { _ in \"_\" }).joined(separator: \", \") %> -> Int in\n                        return (42)\n                    }\n                },\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n        \n<% for j in 0..<i-1 { %>\n            let e<%= j %> = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(<%= 250 + (10 * j) %>)\n            ])\n<% } %>\n            let e<%= i - 1 %> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n<% for j in 0..<i-1 { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 250 + j * 10 %>)])\n<% } %>\n            XCTAssertEqual(e<%= i - 1 %>.subscriptions, [Subscription(200, 500)])\n        }\n    }\n    \n    func testCombineLatest_Typical<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { \"e\\($0): Int\" }).joined(separator: \", \") %>) -> Int in\n                        return (<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \" + \") %>)\n                    }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.combineLatest(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { \"e\\($0): Int\" }).joined(separator: \", \") %>) -> Int in\n                        return (<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \" + \") %>)\n                    }\n                },\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n<% for j in 0..<i { %>\n            let e<%= j %> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(<%= 200 + 10 * (j + 1) %>, <%= j + 1 %>),\n                .next(<%= 400 + 10 * (j + 1) %>, <%= i + j + 1 %>),\n                .completed(800)\n            ])\n<% } %>\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [\n                <% let sum = ([Int](1...i)).reduce(0) { $0 + $1 } %>\n                .next(<%= 200 + i * 10 %>, <%= sum %>),\n<% for j in 1...i { %>\n                .next(<%= 400 + 10 * j %>, <%= sum + j * i %>),<% } %>\n                .completed(800)\n                ])\n\n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, 800)])\n<% } %>\n        }\n    }\n\n\n<% } %>\n\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+CombineLatestTests.swift",
    "content": "//\n//  Observable+CombineLatestTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/4/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableCombineLatestTest: RxTest {}\n\nextension ObservableCombineLatestTest {\n    func testCombineLatest_NeverEmpty() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 210)])\n        }\n    }\n\n    func testCombineLatest_EmptyNever() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])\n        }\n    }\n\n    func testCombineLatest_EmptyReturn() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.completed(215)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 215)])\n        }\n    }\n\n    func testCombineLatest_ReturnEmpty() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.completed(215)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 215)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 210)])\n        }\n    }\n\n    func testCombineLatest_NeverReturn() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])\n        }\n    }\n\n    func testCombineLatest_ReturnNever() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ReturnReturn1() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 3),\n                .completed(240)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.next(220, 2 + 3), .completed(240)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 240)])\n        }\n    }\n\n    func testCombineLatest_ReturnReturn2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 3),\n                .completed(240)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.next(220, 2 + 3), .completed(240)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_EmptyError() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ErrorEmpty() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ReturnThrow() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowReturn() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 2),\n                .completed(230)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowThrow1() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError1)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowThrow2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError2)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ErrorThrow() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 2),\n                .error(220, testError1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError1)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowError() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError2)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 2),\n                .error(220, testError1)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError1)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_SomeThrow() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowSome() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(220, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ThrowAfterCompleteLeft() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(230, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_ThrowAfterCompleteRight() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(230, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_TestInterleavedWithTail() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 3),\n                .next(230, 5),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            let messages = Recorded.events(\n                .next(220, 2 + 3),\n                .next(225, 3 + 4),\n                .next(230, 4 + 5),\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .completed(250)\n            )\n\n            XCTAssertEqual(res.events, messages)\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testCombineLatest_Consecutive() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            let messages = Recorded.events(\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .completed(250)\n            )\n\n            XCTAssertEqual(res.events, messages)\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testCombineLatest_ConsecutiveEndWithErrorLeft() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .error(230, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [.error(230, testError)])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_ConsecutiveEndWithErrorRight() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in Observable.combineLatest(e0, e1) { x1, x2 in x1 + x2 } },\n                { e0, e1 in Observable.combineLatest(e0, e1).map { x1, x2 in x1 + x2 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .error(245, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .error(245, testError)\n            ] as [Recorded<Event<Int>>])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 245)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 245)])\n        }\n    }\n\n    #if TRACE_RESOURCES\n    func testCombineLatestReleasesResourcesOnComplete1() {\n        _ = Observable.combineLatest(Observable.just(1), Observable.just(1)).subscribe()\n    }\n\n    func testCombineLatestReleasesResourcesOnComplete2() {\n        _ = Observable.combineLatest(Observable.just(1), Observable.just(1), resultSelector: +).subscribe()\n    }\n\n    func testCombineLatestReleasesResourcesOnError1() {\n        _ = Observable.combineLatest(Observable.just(1), Observable<Int>.error(testError)).subscribe()\n    }\n\n    func testCombineLatestReleasesResourcesOnError2() {\n        _ = Observable.combineLatest(Observable.just(1), Observable.error(testError), resultSelector: +).subscribe()\n    }\n    #endif\n}\n\nextension ObservableCombineLatestTest {\n    func testCombineLatest_DeadlockErrorAfterN() {\n        var nEvents = 0\n\n        let observable = Observable.combineLatest(\n            Observable.concat([Observable.of(0, 1, 2), Observable.error(testError)]),\n            Observable.of(0, 1, 2)\n        ) { $0 + $1 }\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testCombineLatest_DeadlockErrorImmediately() {\n        var nEvents = 0\n\n        let observable = Observable.combineLatest(\n            Observable.error(testError),\n            Observable.of(0, 1, 2)\n        ) { $0 + $1 }\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testReplay_DeadlockEmpty() {\n        var nEvents = 0\n\n        let observable = Observable.combineLatest(\n            Observable.empty(),\n            Observable.of(0, 1, 2)\n        ) { $0 + $1 }\n\n        _ = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    #if TRACE_RESOURCES\n    func testCombineLatestReleasesResourcesOnComplete() {\n        _ = Observable.combineLatest(Observable.just(1), Observable.just(1), resultSelector: +).subscribe()\n    }\n\n    func testCombineLatestReleasesResourcesOnError() {\n        _ = Observable.combineLatest(Observable.just(1), Observable<Int>.error(testError), resultSelector: +).subscribe()\n    }\n    #endif\n}\n\nextension ObservableCombineLatestTest {\n    func testCombineLatest_emptyArrayN() {\n        let factories: [() -> Observable<Int>] =\n            [\n                {\n                    Observable<Int>.combineLatest(([] as [Observable<Int>]).map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                {\n                    Observable.combineLatest(([] as [Observable<Int>]).map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let res = scheduler.start {\n                factory()\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(200, 0),\n                .completed(200)\n            ])\n        }\n    }\n\n    func testCombineLatest_NeverN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable<Int>.combineLatest([e0, e1, e2].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest([e0, e1, e2].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 1000)])\n        }\n    }\n\n    func testCombineLatest_NeverEmptyN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 1000)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 210)])\n        }\n    }\n\n    func testCombineLatest_EmptyNeverN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 1000)])\n        }\n    }\n\n    func testCombineLatest_EmptyReturnN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(210)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(215)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 215)])\n        }\n    }\n\n    func testCombineLatest_ReturnReturnN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 3),\n                .completed(240)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(220, 2 + 3),\n                .completed(240)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 240)])\n        }\n    }\n\n    func testCombineLatest_EmptyErrorN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(220, testError)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ReturnErrorN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(220, testError)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ErrorErrorN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(220, testError1)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_NeverErrorN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(220, testError2)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_SomeErrorN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(220, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(220, testError2)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testCombineLatest_ErrorAfterCompletedN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .completed(220)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError2)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(230, testError2)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_InterleavedWithTailN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 3),\n                .next(230, 5),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(220, 2 + 3),\n                .next(225, 3 + 4),\n                .next(230, 4 + 5),\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .completed(250)\n            ] as [Recorded<Event<Int>>])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testCombineLatest_ConsecutiveN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(230)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .completed(250)\n            ] as [Recorded<Event<Int>>])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testCombineLatest_ConsecutiveNWithErrorLeft() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .error(230, testError)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .completed(250)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(230, testError)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testCombineLatest_ConsecutiveNWithErrorRight() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable<Int>.combineLatest([e0, e1].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1 in\n                    Observable.combineLatest([e0, e1].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(215, 2),\n                .next(225, 4),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(235, 6),\n                .next(240, 7),\n                .error(245, testError)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(235, 4 + 6),\n                .next(240, 4 + 7),\n                .error(245, testError)\n            ] as [Recorded<Event<Int>>])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 245)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 245)])\n        }\n    }\n\n    func testCombineLatest_SelectorThrowsN() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e0 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(230)\n        ])\n\n        let e1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(240)\n        ])\n\n        let res = scheduler.start {\n            Observable\n                .combineLatest([e0, e1]\n                    .map { $0.asObservable() }) { _ -> Int in throw testError }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(220, testError)\n        ])\n\n        XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n        XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n    }\n\n    func testCombineLatest_willNeverBeAbleToCombineN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable<Int>.combineLatest([e0, e1, e2].map { $0.asObservable() }).map { _ in 42 }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest([e0, e1, e2].map { $0.asObservable() }) { _ in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(250)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .completed(260)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(500, 2),\n                .completed(800)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(500)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 500)])\n        }\n    }\n\n    func testCombineLatest_typicalN() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable<Int>.combineLatest([e0, e1, e2].map { $0.asObservable() }).map { $0.reduce(0, +) }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest([e0, e1, e2].map { $0.asObservable() }) { $0.reduce(0, +) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(410, 4),\n                .completed(800)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(420, 5),\n                .completed(800)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(430, 6),\n                .completed(800)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, 6),\n                .next(410, 9),\n                .next(420, 12),\n                .next(430, 15),\n                .completed(800)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 800)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 800)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 800)])\n        }\n    }\n\n    func testCombineLatest_NAry_symmetric() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<EquatableArray<Int>>] =\n            [\n                { e0, e1, e2 in\n                    Observable<Int>.combineLatest([e0, e1, e2].map { $0.asObservable() }).map { EquatableArray($0) }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest([e0, e1, e2].map { $0.asObservable() }) { EquatableArray($0) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(250, 4),\n                .completed(420)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(240, 5),\n                .completed(410)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, EquatableArray([1, 2, 3])),\n                .next(240, EquatableArray([1, 5, 3])),\n                .next(250, EquatableArray([4, 5, 3])),\n                .next(260, EquatableArray([4, 5, 6])),\n                .completed(420)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 420)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 410)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testCombineLatest_NAry_asymmetric() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<EquatableArray<Int>>] =\n            [\n                { e0, e1, e2 in\n                    Observable<Int>.combineLatest([e0, e1, e2].map { $0.asObservable() }).map { EquatableArray($0) }\n                },\n                { e0, e1, e2 in\n                    Observable.combineLatest([e0, e1, e2].map { $0.asObservable() }) { EquatableArray($0) }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(250, 4),\n                .completed(270)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(240, 5),\n                .next(290, 7),\n                .next(310, 9),\n                .completed(410)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(260, 6),\n                .next(280, 8),\n                .completed(300)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, EquatableArray([1, 2, 3])),\n                .next(240, EquatableArray([1, 5, 3])),\n                .next(250, EquatableArray([4, 5, 3])),\n                .next(260, EquatableArray([4, 5, 6])),\n                .next(280, EquatableArray([4, 5, 8])),\n                .next(290, EquatableArray([4, 7, 8])),\n                .next(310, EquatableArray([4, 9, 8])),\n                .completed(410)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 270)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 410)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 300)])\n        }\n    }\n\n    #if TRACE_RESOURCES\n    func testCombineLatestArrayReleasesResourcesOnComplete1() {\n        _ = Observable.combineLatest([Observable.just(1), Observable.just(1)]) { $0.reduce(0, +) }.subscribe()\n    }\n\n    func testCombineLatestArrayReleasesResourcesOnError1() {\n        _ = Observable.combineLatest([Observable<Int>.error(testError), Observable.just(1)]) { $0.reduce(0, +) }.subscribe()\n    }\n\n    func testCombineLatestArrayReleasesResourcesOnComplete2() {\n        _ = Observable<Int>.combineLatest([Observable.just(1), Observable.just(1)]).subscribe()\n    }\n\n    func testCombineLatestArrayReleasesResourcesOnError2() {\n        _ = Observable<Int>.combineLatest([Observable<Int>.error(testError), Observable.just(1)]).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+CompactMapTests.swift",
    "content": "//\n//  Observable+CompactMapTests.swift\n//  Tests\n//\n//  Created by Michael Long on 05/10/19.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(Linux)\nimport Glibc\n#endif\n\nclass ObservableCompactMapTest: RxTest {}\n\nextension ObservableCompactMapTest {\n    func test_compactMapNilFromClosure() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600),\n            .next(610, 12),\n            .error(620, testError),\n            .completed(630)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.compactMap { num in\n                invoked += 1\n                return isPrime(num) ? num : nil\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(340, 5),\n            .next(390, 7),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(9, invoked)\n    }\n\n    func test_compactMapNilFromElement() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs: TestableObservable<Int?> = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, nil),\n            .next(340, 5),\n            .completed(400),\n            .next(410, 7),\n            .error(420, testError),\n            .completed(430)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.compactMap { num in\n                invoked += 1\n                return num\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(340, 5),\n            .completed(400)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    func test_compactMapDisposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 400) { () -> Observable<Int> in\n            return xs.compactMap { num in\n                invoked += 1\n                return isPrime(num) ? num : nil\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(340, 5),\n            .next(390, 7)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(5, invoked)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ConcatTests.swift",
    "content": "//\n//  Observable+ConcatTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableConcatTest: RxTest {}\n\n// this generates\n// [generator(0), [generator(1), [generator(2), ..].concat()].concat()].concat()\nfunc generateCollection<T>(_ startIndex: Int, _ generator: @escaping (Int) -> Observable<T>) -> Observable<T> {\n    let all = [0, 1].lazy.map { i in\n        i == 0 ? generator(startIndex) : generateCollection(startIndex + 1, generator)\n    }\n    return Observable.concat(all)\n}\n\n// this generates\n// [generator(0), [generator(1), [generator(2), ..].concat()].concat()].concat()\n// This should\nfunc generateSequence<T>(_ startIndex: Int, _ generator: @escaping (Int) -> Observable<T>) -> Observable<T> {\n    let indexes: [Int] = [0, 1]\n    let all = AnySequence(indexes.lazy.map { i -> Observable<T> in\n        return i == 0 ? generator(startIndex) : generateSequence(startIndex + 1, generator)\n    })\n    return Observable<T>.concat(all)\n}\n\n// MARK: concat\n\nextension ObservableConcatTest {\n    func testConcat_DefaultScheduler() {\n        var sum = 0\n        _ = Observable.concat([Observable.just(1), Observable.just(2), Observable.just(3)]).subscribe(onNext: { e in\n            sum += e\n        })\n\n        XCTAssertEqual(sum, 6)\n    }\n\n    func testConcat_IEofIO() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .next(30, 3),\n            .completed(40)\n        ])\n\n        let xs2 = scheduler.createColdObservable([\n            .next(10, 4),\n            .next(20, 5),\n            .completed(30)\n        ])\n\n        let xs3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(20, 7),\n            .next(30, 8),\n            .next(40, 9),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2, xs3].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(250, 4),\n            .next(260, 5),\n            .next(280, 6),\n            .next(290, 7),\n            .next(300, 8),\n            .next(310, 9),\n            .completed(320)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 240)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(240, 270)\n        ])\n\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(270, 320)\n        ])\n    }\n\n    func testConcat_EmptyEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.completed(250, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_EmptyNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages: [Recorded<Event<Int>>] = [\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 1000)\n        ])\n    }\n\n    func testConcat_NeverNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages: [Recorded<Event<Int>>] = [\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testConcat_EmptyThrow() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.error(250, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_ThrowEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(230, testError)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.error(230, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testConcat_ThrowThrow() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(230, testError1)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError2)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.error(230, testError1, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testConcat_ReturnEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(210, 2),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_EmptyReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(240, 2),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_ReturnNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.next(210, 2)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 1000)\n        ])\n    }\n\n    func testConcat_NeverReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages: [Recorded<Event<Int>>] = [\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testConcat_ReturnReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(220, 2),\n            .next(240, 3),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_ThrowReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(230, testError1)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = [\n            Recorded.error(230, testError1, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n        ])\n    }\n\n    func testConcat_ReturnThrow() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError2)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(220, 2),\n            .error(250, testError2)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 250)\n        ])\n    }\n\n    func testConcat_SomeDataSomeData() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(225)\n        ])\n\n        let xs2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(225, 250)\n        ])\n    }\n\n    func testConcat_EnumerableTiming() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(230)\n        ])\n\n        let xs2 = scheduler.createColdObservable([\n            .next(50, 4),\n            .next(60, 5),\n            .next(70, 6),\n            .completed(80)\n        ])\n\n        let xs3 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(200, 2),\n            .next(210, 3),\n            .next(220, 4),\n            .next(230, 5),\n            .next(270, 6),\n            .next(320, 7),\n            .next(330, 8),\n            .completed(340)\n        ])\n\n        let res = scheduler.start {\n            Observable.concat([xs1, xs2, xs3, xs2].map { $0.asObservable() })\n        }\n\n        let messages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 5),\n            .next(300, 6),\n            .next(320, 7),\n            .next(330, 8),\n            .next(390, 4),\n            .next(400, 5),\n            .next(410, 6),\n            .completed(420)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(230, 310),\n            Subscription(340, 420)\n        ])\n\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(310, 340)\n        ])\n    }\n\n    func testConcat_variadicElementsOverload() {\n        let elements = try! Observable.concat(Observable.just(1)).toBlocking().toArray()\n        XCTAssertEqual(elements, [1])\n    }\n\n    #if TRACE_RESOURCES\n    func testConcat_TailRecursionCollection() {\n        maxTailRecursiveSinkStackSize = 0\n        let elements = try! generateCollection(0) { i in\n            Observable.just(i, scheduler: CurrentThreadScheduler.instance)\n        }\n        .take(100)\n        .toBlocking()\n        .toArray()\n\n        XCTAssertEqual(elements, Array(0 ..< 100))\n        XCTAssertEqual(maxTailRecursiveSinkStackSize, 1)\n    }\n\n    func testConcat_TailRecursionSequence() {\n        maxTailRecursiveSinkStackSize = 0\n        let elements = try! generateSequence(0) { i in\n            Observable.just(i, scheduler: CurrentThreadScheduler.instance)\n        }\n        .take(100)\n        .toBlocking()\n        .toArray()\n\n        XCTAssertEqual(elements, Array(0 ..< 100))\n        XCTAssertTrue(maxTailRecursiveSinkStackSize > 10)\n    }\n    #endif\n\n    #if TRACE_RESOURCES\n    func testConcatReleasesResourcesOnComplete() {\n        _ = Observable.concat([Observable.just(1)]).subscribe()\n    }\n\n    func testConcatReleasesResourcesOnError() {\n        _ = Observable.concat([Observable<Int>.error(testError)]).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ConcurrencyTests.swift",
    "content": "//\n//  Observable+ConcurrencyTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Dispatch\nimport RxSwift\nimport RxTest\nimport XCTest\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nclass ObservableConcurrencyTests: RxTest {\n    let scheduler = TestScheduler(initialClock: 0)\n}\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension ObservableConcurrencyTests {\n    func testAwaitsValuesAndFinishes() async {\n        let observable = Observable\n            .from(1 ... 10)\n\n        var values = [Int]()\n\n        do {\n            for try await value in observable.values {\n                values.append(value)\n            }\n\n            XCTAssertEqual(values, Array(1 ... 10))\n        } catch {\n            XCTFail(\"Expected to not emit failure\")\n        }\n    }\n\n    func testAwaitsValuesAndErrors() async {\n        let driver = Observable\n            .from(1 ... 10)\n            .map { n -> Int in\n                if n > 5 {\n                    throw RxError.unknown\n                }\n\n                return n\n            }\n\n        var values = [Int]()\n\n        do {\n            for try await value in driver.values {\n                values.append(value)\n            }\n        } catch {\n            XCTAssertEqual(values, Array(1 ... 5), \"Expected to emit familure after 5 items\")\n        }\n    }\n\n    func testThrowsCancellationErrorWithoutEvents() async throws {\n        let observable = Observable<Void>.never()\n        Task {\n            do {\n                for try await _ in observable.values {\n                    //\n                }\n                XCTFail(\"Should not proceed beyond try\")\n            } catch {\n                XCTAssertTrue(Task.isCancelled)\n                XCTAssertTrue(error is CancellationError)\n            }\n        }.cancel()\n    }\n\n    func testNotThrowingCancellation() async throws {\n        let observable = Observable.from(1 ... 10)\n        let task = Task {\n            do {\n                var values = [Int]()\n                for try await value in observable.values {\n                    values.append(value)\n                }\n                XCTAssertTrue(values == Array(1 ... 10))\n            } catch {\n                XCTFail(\"Should not throw CancellationError\")\n            }\n        }\n        try await Task.sleep(nanoseconds: 1_000_000)\n        task.cancel()\n    }\n\n    // MARK: - AsyncSequence.asObservable() Tests\n\n    func testAsyncSequenceToObservable() async {\n        let asyncSequence = AsyncStream<Int> { continuation in\n            for i in 1 ... 5 {\n                continuation.yield(i)\n            }\n            continuation.finish()\n        }\n\n        let expectation = XCTestExpectation(description: \"Observable completes with all values\")\n        var values = [Int]()\n\n        let disposable = asyncSequence.asObservable().subscribe(\n            onNext: { value in\n                values.append(value)\n            },\n            onCompleted: {\n                XCTAssertEqual(values, [1, 2, 3, 4, 5])\n                expectation.fulfill()\n            }\n        )\n\n        await fulfillment(of: [expectation], timeout: 5.0)\n        disposable.dispose()\n    }\n\n    func testAsyncSequenceToObservableRunsOnBackgroundThread() async {\n        let asyncSequence = AsyncStream<Int> { continuation in\n            for i in 1 ... 3 {\n                continuation.yield(i)\n            }\n            continuation.finish()\n        }\n\n        let expectation = XCTestExpectation(description: \"Observable runs on background thread\")\n        var observedOnMainThread = false\n\n        // Subscribe from main thread\n        let disposable = await MainActor.run {\n            asyncSequence.asObservable().subscribe(\n                onNext: { _ in\n                    // AsyncSequence iteration should NOT be on main thread\n                    if Thread.isMainThread {\n                        observedOnMainThread = true\n                    }\n                },\n                onCompleted: {\n                    // The iteration should have happened on background thread\n                    XCTAssertFalse(observedOnMainThread, \"AsyncSequence iteration should not run on main thread\")\n                    expectation.fulfill()\n                }\n            )\n        }\n\n        await fulfillment(of: [expectation], timeout: 5.0)\n        disposable.dispose()\n    }\n\n    func testAsyncSequenceToObservableWithError() async {\n        struct TestError: Error {}\n\n        let asyncSequence = AsyncThrowingStream<Int, Error> { continuation in\n            continuation.yield(1)\n            continuation.yield(2)\n            continuation.finish(throwing: TestError())\n        }\n\n        let expectation = XCTestExpectation(description: \"Observable handles error\")\n        var receivedError: Error?\n        var values = [Int]()\n\n        let disposable = asyncSequence.asObservable().subscribe(\n            onNext: { value in\n                values.append(value)\n            },\n            onError: { error in\n                receivedError = error\n                expectation.fulfill()\n            }\n        )\n\n        await fulfillment(of: [expectation], timeout: 5.0)\n        XCTAssertEqual(values, [1, 2])\n        XCTAssertTrue(receivedError is TestError)\n        disposable.dispose()\n    }\n\n    func testAsyncSequenceToObservableCancellation() async {\n        let expectation = XCTestExpectation(description: \"Observable handles cancellation\")\n        var completed = false\n\n        let asyncSequence = AsyncStream<Int> { continuation in\n            continuation.onTermination = { _ in\n                expectation.fulfill()\n            }\n            // Never yield values, just wait for cancellation\n        }\n\n        let disposable = asyncSequence.asObservable().subscribe(\n            onNext: { _ in },\n            onCompleted: {\n                completed = true\n            }\n        )\n\n        // Cancel immediately\n        disposable.dispose()\n\n        await fulfillment(of: [expectation], timeout: 5.0)\n        XCTAssertFalse(completed, \"Should not complete, should be cancelled\")\n    }\n\n    func testAsyncSequenceToObservableWithPriority() async {\n        let asyncSequence = AsyncStream<Int> { continuation in\n            Task {\n                continuation.yield(1)\n                continuation.finish()\n            }\n        }\n\n        let expectation = XCTestExpectation(description: \"Observable works with priority parameter\")\n        var receivedValue = false\n\n        let disposable = asyncSequence.asObservable(priority: .userInitiated).subscribe(\n            onNext: { _ in\n                receivedValue = true\n            },\n            onCompleted: {\n                XCTAssertTrue(receivedValue)\n                expectation.fulfill()\n            }\n        )\n\n        await fulfillment(of: [expectation], timeout: 5.0)\n        disposable.dispose()\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DebugTests.swift",
    "content": "//\n//  Observable+DebugTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDebugTest: RxTest {}\n\nextension ObservableDebugTest {\n    func testDebug_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 0),\n            .completed(600)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.debug()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 0),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testDebug_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 0),\n            .error(600, testError)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.debug()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 0),\n            .error(600, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testReplayNReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).debug().subscribe()\n    }\n\n    func testReplayNReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).debug().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DecodeTests.swift",
    "content": "//\n//  Observable+DecodeTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 25/07/2020.\n//  Copyright © 2020 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDecodeTest: RxTest {}\n\nextension ObservableDecodeTest {\n    func testDecodeValidJSON() {\n        let rawJSON = \"\"\"\n        [\n          {\"id\": 1, \"name\": \"Shai\", \"country\": \"Israel\"},\n          {\"id\": 2, \"name\": \"Kruno\"}\n        ]\n        \"\"\".data(using: .utf8)!\n\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable\n                .just(rawJSON)\n                .decode(type: [FakeObject].self, decoder: JSONDecoder())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, [\n                FakeObject(id: 1, name: \"Shai\", country: \"Israel\"),\n                FakeObject(id: 2, name: \"Kruno\", country: nil)\n            ]),\n            .completed(200)\n        ])\n    }\n\n    func testDecodeInvalidJSON() {\n        let rawJSON = \"\"\"\n        [\n          {\n        ]\n        \"\"\".data(using: .utf8)!\n\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable\n                .just(rawJSON)\n                .decode(type: [FakeObject].self, decoder: JSONDecoder())\n        }\n\n        XCTAssertEqual(res.events.count, 1)\n        XCTAssertNotNil(res.events.first?.value.error)\n    }\n}\n\nprivate struct FakeObject: Equatable, Decodable {\n    let id: Int\n    let name: String\n    let country: String?\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DefaultIfEmpty.swift",
    "content": "//\n//  Observable+DefaultIfEmpty.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDefaultIfEmptyTest: RxTest {}\n\nextension ObservableDefaultIfEmptyTest {\n    func testDefaultIfEmpty_Source_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .completed(201, Int.self)\n        ])\n        let defaultValue = 1\n        let res = scheduler.start {\n            xs.ifEmpty(default: defaultValue)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(201)\n        ])\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 201)\n        ])\n    }\n\n    func testDefaultIfEmpty_Source_Errors() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .error(201, testError, Int.self)\n        ])\n        let defaultValue = 1\n        let res = scheduler.start {\n            xs.ifEmpty(default: defaultValue)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(201, testError)\n        ])\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 201)\n        ])\n    }\n\n    func testDefaultIfEmpty_Source_Emits() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(201, 1),\n            .next(202, 2),\n            .next(203, 3),\n            .completed(204)\n        ])\n        let defaultValue = 42\n        let res = scheduler.start {\n            xs.ifEmpty(default: defaultValue)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .next(202, 2),\n            .next(203, 3),\n            .completed(204)\n        ])\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 204)\n        ])\n    }\n\n    func testDefaultIfEmpty_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(0, 0)\n        ])\n        let defaultValue = 42\n        let res = scheduler.start {\n            xs.ifEmpty(default: defaultValue)\n        }\n\n        XCTAssertEqual(res.events, [])\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testDefaultIfEmptyReleasesResourcesOnComplete1() {\n        _ = Observable<Int>.just(1).ifEmpty(default: -1).subscribe()\n    }\n\n    func testDefaultIfEmptyReleasesResourcesOnComplete2() {\n        _ = Observable<Int>.empty().ifEmpty(default: -1).subscribe()\n    }\n\n    func testDefaultIfEmptyReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).ifEmpty(default: -1).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DelaySubscriptionTests.swift",
    "content": "//\n//  Observable+DelaySubscriptionTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDelaySubscriptionTest: RxTest {}\n\nextension ObservableDelaySubscriptionTest {\n    func testDelaySubscription_TimeSpan_Simple() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(50, 42),\n            .next(60, 43),\n            .completed(70)\n        ])\n\n        let res = scheduler.start {\n            xs.delaySubscription(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 42),\n            .next(290, 43),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(230, 300)\n        ])\n    }\n\n    func testDelaySubscription_TimeSpan_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(50, 42),\n            .next(60, 43),\n            .error(70, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.delaySubscription(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 42),\n            .next(290, 43),\n            .error(300, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(230, 300)\n        ])\n    }\n\n    func testDelaySubscription_TimeSpan_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(50, 42),\n            .next(60, 43),\n            .error(70, testError)\n        ])\n\n        let res = scheduler.start(disposed: 291) {\n            xs.delaySubscription(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 42),\n            .next(290, 43)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(230, 291)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testDelaySubscriptionReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).delaySubscription(.seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testDelaySubscriptionReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).delaySubscription(.seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DelayTests.swift",
    "content": "//\n//  Observable+DelayTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDelayTest: RxTest {}\n\nextension ObservableDelayTest {\n    func testDelay_TimeSpan_Simple1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .completed(550)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(100), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(350, 2),\n            .next(450, 3),\n            .next(550, 4),\n            .completed(650)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n    }\n\n    func testDelay_TimeSpan_Simple2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .completed(550)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 2),\n            .next(400, 3),\n            .next(500, 4),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n    }\n\n    func testDelay_TimeSpan_Simple3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .completed(550)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(150), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(400, 2),\n            .next(500, 3),\n            .next(600, 4),\n            .completed(700)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n    }\n\n    func testDelay_TimeSpan_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(150), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testDelay_TimeSpan_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(150), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(400)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testDelay_TimeSpan_Error1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .error(550, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 2),\n            .next(400, 3),\n            .next(500, 4),\n            .error(550, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n    }\n\n    func testDelay_TimeSpan_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .error(550, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.delay(.seconds(150), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(400, 2),\n            .next(500, 3),\n            .error(550, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n    }\n\n    func testDelay_TimeSpan_Real_Simple() {\n        let waitForError: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let s = PublishSubject<Int>()\n\n        let res = s.delay(.milliseconds(10), scheduler: scheduler)\n\n        var array = [Int]()\n\n        let subscription = res.subscribe(\n            onNext: { i in\n                array.append(i)\n            },\n            onCompleted: {\n                waitForError.onCompleted()\n            }\n        )\n\n        DispatchQueue.global(qos: .default).async {\n            s.onNext(1)\n            s.onNext(2)\n            s.onNext(3)\n            s.onCompleted()\n        }\n\n        try! _ = waitForError.toBlocking(timeout: 5.0).first()\n\n        subscription.dispose()\n\n        XCTAssertEqual([1, 2, 3], array)\n    }\n\n    func testDelay_TimeSpan_Real_Error1() {\n        let errorReceived: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let s = PublishSubject<Int>()\n\n        let res = s.delay(.milliseconds(10), scheduler: scheduler)\n\n        var array = [Int]()\n\n        var error: Swift.Error?\n\n        let subscription = res.subscribe(\n            onNext: { i in\n                array.append(i)\n            },\n            onError: { e in\n                error = e\n                errorReceived.onCompleted()\n            }\n        )\n\n        DispatchQueue.global(qos: .default).async {\n            s.onNext(1)\n            s.onNext(2)\n            s.onNext(3)\n            s.onError(testError)\n        }\n\n        try! errorReceived.toBlocking(timeout: 5.0).first()\n\n        subscription.dispose()\n\n        XCTAssertEqual(error! as! TestError, testError)\n    }\n\n    func testDelay_TimeSpan_Real_Error2() {\n        let elementProcessed: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let errorReceived: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let s = PublishSubject<Int>()\n\n        let res = s.delay(.milliseconds(10), scheduler: scheduler)\n\n        var array = [Int]()\n        var err: TestError?\n\n        let subscription = res.subscribe(\n            onNext: { i in\n                array.append(i)\n                elementProcessed.onCompleted()\n            },\n            onError: { ex in\n                err = ex as? TestError\n                errorReceived.onCompleted()\n            }\n        )\n\n        DispatchQueue.global(qos: .default).async {\n            s.onNext(1)\n            try! _ = elementProcessed.toBlocking(timeout: 5.0).first()\n            s.onError(testError)\n        }\n\n        try! _ = errorReceived.toBlocking(timeout: 5.0).first()\n\n        subscription.dispose()\n\n        XCTAssertEqual([1], array)\n        XCTAssertEqual(testError, err)\n    }\n\n    func testDelay_TimeSpan_Real_Error3() {\n        let elementProcessed: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let errorReceived: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let acknowledged: ReplaySubject<Void> = ReplaySubject.create(bufferSize: 1)\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let s = PublishSubject<Int>()\n\n        let res = s.delay(.milliseconds(10), scheduler: scheduler)\n\n        var array = [Int]()\n        var err: TestError?\n\n        let subscription = res.subscribe(\n            onNext: { i in\n                array.append(i)\n                elementProcessed.onCompleted()\n                try! _ = acknowledged.toBlocking(timeout: 5.0).first()\n            },\n            onError: { ex in\n                err = ex as? TestError\n                errorReceived.onCompleted()\n            }\n        )\n\n        DispatchQueue.global(qos: .default).async {\n            s.onNext(1)\n            try! _ = elementProcessed.toBlocking(timeout: 5.0).first()\n            s.onError(testError)\n            acknowledged.onCompleted()\n        }\n\n        try! _ = errorReceived.toBlocking(timeout: 5.0).first()\n\n        subscription.dispose()\n\n        XCTAssertEqual([1], array)\n        XCTAssertEqual(testError, err)\n    }\n\n    func testDelay_TimeSpan_Positive() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let msgs = Recorded.events(\n            .next(150, 1),\n            .next(250, 2),\n            .next(350, 3),\n            .next(450, 4),\n            .completed(550)\n        )\n\n        let xs = scheduler.createHotObservable(msgs)\n\n        let delay = 42\n        let res = scheduler.start {\n            xs.delay(.seconds(delay), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(\n            res.events,\n            msgs.map { Recorded(time: $0.time + delay, value: $0.value) }\n                .filter { $0.time > 200 }\n        )\n    }\n\n    func testDelay_TimeSpan_DefaultScheduler() {\n        let scheduler = MainScheduler.instance\n        XCTAssertEqual(try! Observable.just(1).delay(.milliseconds(1), scheduler: scheduler).toBlocking(timeout: 5.0).toArray(), [1])\n    }\n\n    #if TRACE_RESOURCES\n    func testDelayReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).delay(.seconds(100), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testDelayReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).delay(.seconds(100), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DematerializeTests.swift",
    "content": "//\n//  Observable+DematerializeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDematerializeTest: RxTest {}\n\nextension ObservableDematerializeTest {\n    func testDematerialize_Range1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, Event.next(41)),\n            .next(210, Event.next(42)),\n            .next(220, Event.next(43)),\n            .completed(250),\n            .completed(251)\n        ])\n\n        let res = scheduler.start {\n            xs.dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .completed(250)\n        ])\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testDematerialize_Range2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, Event.next(41)),\n            .next(210, Event.next(42)),\n            .next(220, Event.next(43)),\n            .next(230, Event.completed),\n            .next(231, Event.completed)\n        ])\n\n        let res = scheduler.start {\n            xs.dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testDematerialize_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, Event.next(41)),\n            .next(210, Event.next(42)),\n            .next(220, Event.next(43)),\n            .error(230, TestError.dummyError),\n            .error(231, TestError.dummyError)\n        ])\n\n        let res = scheduler.start {\n            xs.dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .error(230, TestError.dummyError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testDematerialize_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, Event.next(41)),\n            .next(210, Event.next(42)),\n            .next(220, Event.next(43)),\n            .next(230, Event.error(TestError.dummyError)),\n            .next(231, Event.error(TestError.dummyError))\n        ])\n\n        let res = scheduler.start {\n            xs.dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .error(230, TestError.dummyError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testMaterialize_Dematerialize_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = Observable<Int>.never()\n\n        let res = scheduler.start {\n            xs.materialize().dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [])\n    }\n\n    func testMaterialize_Dematerialize_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.materialize().dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testMaterialize_Dematerialize_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.materialize().dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testMaterialize_Dematerialize_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let dummyError = TestError.dummyError\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, dummyError)\n        ])\n\n        let res = scheduler.start {\n            xs.materialize().dematerialize()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, dummyError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testDematerializeReleasesResourcesOnComplete1() {\n        _ = Observable.just(Event.next(1)).dematerialize().subscribe()\n    }\n\n    func testDematerializeReleasesResourcesOnComplete2() {\n        _ = Observable<Event<Int>>.empty().dematerialize().subscribe()\n    }\n\n    func testDematerializeReleasesResourcesOnError() {\n        _ = Observable<Event<Int>>.error(testError).dematerialize().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DistinctUntilChangedTests.swift",
    "content": "//\n//  Observable+DistinctUntilChangedTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDistinctUntilChangedTest: RxTest {}\n\nextension ObservableDistinctUntilChangedTest {\n    func testDistinctUntilChanged_allChanges() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { $0 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_someChanges() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2), // *\n            .next(215, 3), // *\n            .next(220, 3),\n            .next(225, 2), // *\n            .next(230, 2),\n            .next(230, 1), // *\n            .next(240, 2), // *\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { $0 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(215, 3),\n            .next(225, 2),\n            .next(230, 1),\n            .next(240, 2),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_allEqual() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { _, _ in true } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_allDifferent() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 2),\n            .next(230, 2),\n            .next(240, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { _, _ in false } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 2),\n            .next(230, 2),\n            .next(240, 2),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_keySelector_Div2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 4),\n            .next(230, 3),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { $0 % 2 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(230, 3),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_keySelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged { _, _ -> Bool in throw testError } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .error(220, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 220)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChangedKeyPath_allChanges() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        struct TestObject: Equatable {\n            let value: Int\n            let other = \"\"\n        }\n\n        let xs = scheduler.createHotObservable([\n            .next(150, TestObject(value: 1)),\n            .next(210, TestObject(value: 2)),\n            .next(220, TestObject(value: 3)),\n            .next(230, TestObject(value: 4)),\n            .next(240, TestObject(value: 5)),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged(at: \\.value) }\n\n        let correctMessages = Recorded.events(\n            .next(210, TestObject(value: 2)),\n            .next(220, TestObject(value: 3)),\n            .next(230, TestObject(value: 4)),\n            .next(240, TestObject(value: 5)),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDistinctUntilChanged_comparerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.distinctUntilChanged {\n            $0\n        } comparer: {\n            _, _ in throw testError\n        } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .error(220, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 220)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    #if TRACE_RESOURCES\n    func testDistinctUntilChangedReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).distinctUntilChanged().subscribe()\n    }\n\n    func testDistinctUntilChangedReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).distinctUntilChanged().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+DoOnTests.swift",
    "content": "//\n//  Observable+DoOnTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableDoOnTest: RxTest {}\n\nextension ObservableDoOnTest {\n    func testDoOn_shouldSeeAllValues() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var i = 0\n        var sum = 2 + 3 + 4 + 5\n        let res = scheduler.start { xs.do(onNext: { element in\n            i += 1\n            sum -= element\n        })\n        }\n\n        XCTAssertEqual(i, 4)\n        XCTAssertEqual(sum, 0)\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOn_plainAction() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var i = 0\n        let res = scheduler.start { xs.do(onNext: { _ in\n            i += 1\n        })\n        }\n\n        XCTAssertEqual(i, 4)\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOn_nextCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var i = 0\n        var sum = 2 + 3 + 4 + 5\n        var completedEvaluation = false\n        let res = scheduler.start { xs.do(onNext: { value in\n            i += 1\n            sum -= value\n        }, onCompleted: {\n            completedEvaluation = true\n        })\n        }\n\n        XCTAssertEqual(i, 4)\n        XCTAssertEqual(sum, 0)\n        XCTAssertEqual(completedEvaluation, true)\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOn_completedNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let recordedEvents: [Recorded<Event<Int>>] = [\n        ]\n\n        let xs = scheduler.createHotObservable(recordedEvents)\n\n        var i = 0\n        var completedEvaluation = false\n        let res = scheduler.start { xs.do(onNext: { _ in\n            i += 1\n        }, onCompleted: {\n            completedEvaluation = true\n        })\n        }\n\n        XCTAssertEqual(i, 0)\n        XCTAssertEqual(completedEvaluation, false)\n\n        let correctMessages: [Recorded<Event<Int>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOn_nextError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .error(250, testError)\n        ])\n\n        var i = 0\n        var sum = 2 + 3 + 4 + 5\n        var sawError = false\n        let res = scheduler.start { xs.do(onNext: { value in\n            i += 1\n            sum -= value\n        }, onError: { _ in\n            sawError = true\n        })\n        }\n\n        XCTAssertEqual(i, 4)\n        XCTAssertEqual(sum, 0)\n        XCTAssertEqual(sawError, true)\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .error(250, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOn_nextErrorNot() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var i = 0\n        var sum = 2 + 3 + 4 + 5\n        var sawError = false\n        let res = scheduler.start { xs.do(onNext: { value in\n            i += 1\n            sum -= value\n        }, onError: { _ in\n            sawError = true\n        })\n        }\n\n        XCTAssertEqual(i, 4)\n        XCTAssertEqual(sum, 0)\n        XCTAssertEqual(sawError, false)\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOnNext_normal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var numberOfTimesInvoked = 0\n\n        let res = scheduler.start { xs.do(onNext: { _ in\n            numberOfTimesInvoked += 1\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n\n        XCTAssertEqual(numberOfTimesInvoked, 4)\n    }\n\n    func testDoOnNext_throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var numberOfTimesInvoked = 0\n\n        let res = scheduler.start { xs.do(onNext: { _ in\n            if numberOfTimesInvoked > 2 {\n                throw testError\n            }\n            numberOfTimesInvoked += 1\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .error(240, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 240)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n\n        XCTAssertEqual(numberOfTimesInvoked, 3)\n    }\n\n    func testDoOnError_normal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .error(250, testError)\n        ])\n\n        var recordedError: Swift.Error!\n        var numberOfTimesInvoked = 0\n\n        let res = scheduler.start { xs.do(onError: { error in\n            recordedError = error\n            numberOfTimesInvoked += 1\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .error(250, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n\n        XCTAssertEqual(recordedError as! TestError, testError)\n        XCTAssertEqual(numberOfTimesInvoked, 1)\n    }\n\n    func testDoOnError_throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .error(250, testError)\n        ])\n\n        let res = scheduler.start { xs.do(onError: { _ in\n            throw testError1\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .error(250, testError1)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testDoOnCompleted_normal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        var didComplete = false\n\n        let res = scheduler.start { xs.do(onCompleted: {\n            didComplete = true\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n\n        XCTAssertEqual(didComplete, true)\n    }\n\n    func testDoOnCompleted_throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.do(onCompleted: {\n            throw testError\n        })\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .error(250, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    enum DoOnEvent {\n        case sourceSubscribe\n        case sourceDispose\n        case doOnNext\n        case doOnCompleted\n        case doOnError\n        case doOnSubscribe\n        case doOnSubscribed\n        case doOnDispose\n    }\n\n    func testDoOnOrder_Completed_Async() {\n        var events = [DoOnEvent]()\n\n        let scheduler = TestScheduler(initialClock: 0)\n\n        _ = scheduler.start {\n            Observable<Int>.create { observer in\n                events.append(.sourceSubscribe)\n                scheduler.scheduleAt(300) {\n                    observer.on(.next(0))\n                    observer.on(.completed)\n                }\n                return Disposables.create {\n                    events.append(.sourceDispose)\n                }\n            }\n            .do(\n                onNext: { _ in events.append(.doOnNext) },\n                onCompleted: { events.append(.doOnCompleted) },\n                onSubscribe: { events.append(.doOnSubscribe) },\n                onSubscribed: { events.append(.doOnSubscribed) },\n                onDispose: { events.append(.doOnDispose) }\n            )\n        }\n\n        XCTAssertEqual(events, [.doOnSubscribe, .sourceSubscribe, .doOnSubscribed, .doOnNext, .doOnCompleted, .sourceDispose, .doOnDispose])\n    }\n\n    func testDoOnOrder_Completed_Sync() {\n        var events = [DoOnEvent]()\n\n        let scheduler = TestScheduler(initialClock: 0)\n\n        _ = scheduler.start {\n            Observable<Int>.create { observer in\n                events.append(.sourceSubscribe)\n                observer.on(.next(0))\n                observer.on(.completed)\n                return Disposables.create {\n                    events.append(.sourceDispose)\n                }\n            }\n            .do(\n                onNext: { _ in events.append(.doOnNext) },\n                onCompleted: { events.append(.doOnCompleted) },\n                onSubscribe: { events.append(.doOnSubscribe) },\n                onSubscribed: { events.append(.doOnSubscribed) },\n                onDispose: { events.append(.doOnDispose) }\n            )\n        }\n\n        XCTAssertEqual(events, [.doOnSubscribe, .sourceSubscribe, .doOnNext, .doOnCompleted, .sourceDispose, .doOnSubscribed, .doOnDispose])\n    }\n\n    func testDoOnOrder_Error() {\n        var events = [DoOnEvent]()\n\n        _ = Observable<Int>.create { observer in\n            events.append(.sourceSubscribe)\n            observer.on(.next(0))\n            observer.on(.error(testError))\n            return Disposables.create {\n                events.append(.sourceDispose)\n            }\n        }\n        .do(\n            onNext: { _ in events.append(.doOnNext) },\n            onError: { _ in events.append(.doOnError) },\n            onSubscribe: { events.append(.doOnSubscribe) },\n            onSubscribed: { events.append(.doOnSubscribed) },\n            onDispose: { events.append(.doOnDispose) }\n        )\n        .subscribe { _ in }\n\n        XCTAssertEqual(events, [.doOnSubscribe, .sourceSubscribe, .doOnNext, .doOnError, .sourceDispose, .doOnSubscribed, .doOnDispose])\n    }\n\n    func testDoOnOrder_Dispose() {\n        var events = [DoOnEvent]()\n\n        Observable<Int>.create { observer in\n            events.append(.sourceSubscribe)\n            observer.on(.next(0))\n            return Disposables.create {\n                events.append(.sourceDispose)\n            }\n        }\n        .do(\n            onNext: { _ in events.append(.doOnNext) },\n            onSubscribe: { events.append(.doOnSubscribe) },\n            onSubscribed: { events.append(.doOnSubscribed) },\n            onDispose: { events.append(.doOnDispose) }\n        )\n        .subscribe { _ in }\n        .dispose()\n\n        XCTAssertEqual(events, [.doOnSubscribe, .sourceSubscribe, .doOnNext, .doOnSubscribed, .sourceDispose, .doOnDispose])\n    }\n\n    #if TRACE_RESOURCES\n    func testDoReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).do().subscribe()\n    }\n\n    func testDoReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).do().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ElementAtTests.swift",
    "content": "//\n//  Observable+ElementAtTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableElementAtTest: RxTest {}\n\nextension ObservableElementAtTest {\n    func testElementAt_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.element(at: 10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(460, 72),\n            .completed(460)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 460)\n        ])\n    }\n\n    func testElementAt_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .completed(320)\n        ])\n\n        let res = scheduler.start {\n            xs.element(at: 10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(320, RxError.argumentOutOfRange)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 320)\n        ])\n    }\n\n    func testElementAt_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.element(at: 10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(460, 72),\n            .completed(460)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 460)\n        ])\n    }\n\n    func testElementAt_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .error(310, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.element(at: 10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(310, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 310)\n        ])\n    }\n\n    func testElementAt_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start(disposed: 250) {\n            xs.element(at: 3)\n        }\n\n        XCTAssertEqual(res.events, [])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testElementAt_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start(disposed: 400) {\n            xs.element(at: 3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 1),\n            .completed(280)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 280)\n        ])\n    }\n\n    func testElementAt_First() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.element(at: 0)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .completed(210)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testElementAtReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).element(at: 0).subscribe()\n    }\n\n    func testElementAtReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).element(at: 1).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+EnumeratedTests.swift",
    "content": "//\n//  Observable+EnumeratedTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 8/6/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableEnumeratedTest: RxTest {}\n\nextension ObservableEnumeratedTest {\n    func test_Infinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, \"a\"),\n            .next(220, \"b\"),\n            .next(280, \"c\")\n        ])\n\n        let res = scheduler.start {\n            xs.enumerated()\n        }\n\n        XCTAssertArraysEqual(res.events, [\n            .next(210, (index: 0, element: \"a\")),\n            .next(220, (index: 1, element: \"b\")),\n            .next(280, (index: 2, element: \"c\"))\n        ] as [Recorded<Event<(index: Int, element: String)>>], compareRecordedEvents)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func test_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, \"a\"),\n            .next(220, \"b\"),\n            .next(280, \"c\"),\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.enumerated()\n        }\n\n        XCTAssertArraysEqual(res.events, [\n            .next(210, (index: 0, element: \"a\")),\n            .next(220, (index: 1, element: \"b\")),\n            .next(280, (index: 2, element: \"c\")),\n            .completed(300)\n        ] as [Recorded<Event<(index: Int, element: String)>>], compareRecordedEvents)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    func test_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, \"a\"),\n            .next(220, \"b\"),\n            .next(280, \"c\"),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.enumerated()\n        }\n\n        XCTAssertArraysEqual(res.events, [\n            .next(210, (index: 0, element: \"a\")),\n            .next(220, (index: 1, element: \"b\")),\n            .next(280, (index: 2, element: \"c\")),\n            .error(300, testError)\n        ] as [Recorded<Event<(index: Int, element: String)>>], compareRecordedEvents)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testEnumeratedReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).enumerated().subscribe()\n    }\n\n    func testEnumeratedReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).enumerated().subscribe()\n    }\n    #endif\n}\n\nprivate func compareRecordedEvents(lhs: Recorded<Event<(index: Int, element: String)>>, rhs: Recorded<Event<(index: Int, element: String)>>) -> Bool {\n    lhs.time == rhs.time && { (lhs: Event<(index: Int, element: String)>, rhs: Event<(index: Int, element: String)>) in\n        switch (lhs, rhs) {\n        case let (.next(lhs), .next(rhs)):\n            lhs == rhs\n        case (.next, _):\n            false\n        case let (.error(lhs), .error(rhs)):\n            Event<Int>.error(lhs) == Event<Int>.error(rhs)\n        case (.error, _):\n            false\n        case (.completed, .completed):\n            true\n        case (.completed, _):\n            false\n        }\n    }(lhs.value, rhs.value)\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+FilterTests.swift",
    "content": "//\n//  Observable+FilterTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if os(Linux)\nimport Glibc\n#endif\n\nclass ObservableFilterTest: RxTest {}\n\nfunc isPrime(_ i: Int) -> Bool {\n    if i <= 1 {\n        return false\n    }\n\n    let max = Int(sqrt(Double(i)))\n    if max <= 1 {\n        return true\n    }\n\n    for j in 2 ... max where i % j == 0 {\n        return false\n    }\n\n    return true\n}\n\nextension ObservableFilterTest {\n    func test_filterComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600),\n            .next(610, 12),\n            .error(620, testError),\n            .completed(630)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.filter { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(340, 5),\n            .next(390, 7),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(9, invoked)\n    }\n\n    func test_filterTrue() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.filter { _ -> Bool in\n                invoked += 1\n                return true\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(9, invoked)\n    }\n\n    func test_filterFalse() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.filter { _ -> Bool in\n                invoked += 1\n                return false\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(9, invoked)\n    }\n\n    func test_filterDisposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var invoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 1),\n            .next(180, 2),\n            .next(230, 3),\n            .next(270, 4),\n            .next(340, 5),\n            .next(380, 6),\n            .next(390, 7),\n            .next(450, 8),\n            .next(470, 9),\n            .next(560, 10),\n            .next(580, 11),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 400) { () -> Observable<Int> in\n            return xs.filter { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 3),\n            .next(340, 5),\n            .next(390, 7)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(5, invoked)\n    }\n\n    #if TRACE_RESOURCES\n    func testFilterReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).filter { _ in true }.subscribe()\n    }\n\n    func testFilter1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).filter { _ in true }.subscribe()\n    }\n\n    func testFilter2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).filter { _ -> Bool in throw testError }.subscribe()\n    }\n    #endif\n}\n\nextension ObservableFilterTest {\n    func testIgnoreElements_DoesNotSendValues() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.ignoreElements()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testIgnoreElementsReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).ignoreElements().subscribe()\n    }\n\n    func testIgnoreElementsReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).ignoreElements().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+GenerateTests.swift",
    "content": "//\n//  Observable+GenerateTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableGenerateTest: RxTest {}\n\nextension ObservableGenerateTest {\n    func testGenerate_Finite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.generate(initialState: 0, condition: { x in x <= 3 }, scheduler: scheduler) { x in\n                x + 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 0),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 3),\n            .completed(205)\n        ])\n    }\n\n    func testGenerate_ThrowCondition() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.generate(initialState: 0, condition: { _ in throw testError }, scheduler: scheduler) { x in\n                x + 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(201, testError)\n        ])\n    }\n\n    func testGenerate_ThrowIterate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.generate(initialState: 0, condition: { _ in true }, scheduler: scheduler) { (_: Int) -> Int in\n                throw testError\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 0),\n            .error(202, testError)\n        ])\n    }\n\n    func testGenerate_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start(disposed: 203) {\n            Observable.generate(initialState: 0, condition: { _ in true }, scheduler: scheduler) { x in\n                x + 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 0),\n            .next(202, 1)\n        ])\n    }\n\n    func testGenerate_take() {\n        var count = 0\n\n        var elements = [Int]()\n\n        _ = Observable.generate(initialState: 0, condition: { _ in true }) { x in\n            count += 1\n            return x + 1\n        }\n        .take(4)\n        .subscribe(onNext: { x in\n            elements.append(x)\n        })\n\n        XCTAssertEqual(elements, [0, 1, 2, 3])\n        XCTAssertEqual(count, 3)\n    }\n\n    #if TRACE_RESOURCES\n    func testGenerateReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.generate(initialState: 0, condition: { _ in false }, scheduler: testScheduler) { (x: Int) -> Int in\n            return x\n        }.subscribe()\n        testScheduler.start()\n    }\n\n    func testGenerateReleasesResourcesOnError() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.generate(initialState: 0, condition: { _ in false }, scheduler: testScheduler) { _ -> Int in\n            throw testError\n        }.subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+GroupByTests.swift",
    "content": "//\n//  Observable+GroupByTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableGroupByTest: RxTest {}\n\nextension ObservableGroupByTest {\n    func testGroupBy_TwoGroup() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let group: Observable<GroupedObservable<Int, Int>> = xs.groupBy { x in x % 2 }\n            let mappedWithIndex = group.enumerated().map { (i: Int, go: GroupedObservable<Int, Int>) -> Observable<String> in\n                return go.map { (e: Int) -> String in\n                    return \"\\(i) \\(e)\"\n                }\n            }\n            let result = mappedWithIndex.merge()\n            return result\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, \"0 1\"),\n            .next(210, \"1 2\"),\n            .next(240, \"0 3\"),\n            .next(280, \"1 4\"),\n            .next(320, \"0 5\"),\n            .next(350, \"1 6\"),\n            .next(370, \"0 7\"),\n            .next(420, \"1 8\"),\n            .next(470, \"0 9\"),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testGroupBy_OuterComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var keyInvoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let group: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                keyInvoked += 1\n                if x == \"error\" { throw testError }\n\n                return x.lowercased().trimWhitespace()\n            }\n            return group.map { (go: GroupedObservable<String, String>) -> String in\n                return go.key\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, \"foo\"),\n            .next(270, \"bar\"),\n            .next(350, \"baz\"),\n            .next(360, \"qux\"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n\n        XCTAssertEqual(keyInvoked, 12)\n    }\n\n    func testGroupBy_OuterError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var keyInvoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .error(570, testError),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let group: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                keyInvoked += 1\n                if x == \"error\" { throw testError }\n\n                return x.lowercased().trimWhitespace()\n            }\n            return group.map { (go: GroupedObservable<String, String>) -> String in\n                return go.key\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, \"foo\"),\n            .next(270, \"bar\"),\n            .next(350, \"baz\"),\n            .next(360, \"qux\"),\n            .error(570, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n\n        XCTAssertEqual(keyInvoked, 12)\n    }\n\n    func testGroupBy_OuterDispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var keyInvoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        let res = scheduler.start(disposed: 355) { () -> Observable<String> in\n            let group: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                keyInvoked += 1\n                if x == \"error\" { throw testError }\n\n                return x.lowercased().trimWhitespace()\n            }\n            return group.map { (go: GroupedObservable<String, String>) -> String in\n                return go.key\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, \"foo\"),\n            .next(270, \"bar\"),\n            .next(350, \"baz\")\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 355)\n        ])\n\n        XCTAssertEqual(keyInvoked, 5)\n    }\n\n    func testGroupBy_OuterKeySelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var keyInvoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let group: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                keyInvoked += 1\n                if x == \"error\" { throw testError }\n\n                if keyInvoked == 10 {\n                    throw testError\n                }\n                return x.lowercased().trimWhitespace()\n            }\n            return group.map { (go: GroupedObservable<String, String>) -> String in\n                return go.key\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, \"foo\"),\n            .next(270, \"bar\"),\n            .next(350, \"baz\"),\n            .next(360, \"qux\"),\n            .error(480, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 480)\n        ])\n\n        XCTAssertEqual(keyInvoked, 10)\n    }\n\n    func testGroupBy_InnerComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                inners[group.key] = group\n                results[group.key] = result\n\n                innerSubscriptions[group.key] = scheduler.scheduleRelative((), dueTime: .seconds(100), action: { _ in\n                    group.subscribe(result)\n                })\n            })\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .completed(570)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerCompleteAll() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                inners[group.key] = group\n                results[group.key] = result\n                innerSubscriptions[group.key] = group.subscribe(result)\n            })\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(350, \" Baz   \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .next(360, \"  qux \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .error(570, testError),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                inners[group.key] = group\n                results[group.key] = result\n\n                innerSubscriptions[group.key] = scheduler.scheduleRelative((), dueTime: .seconds(100), action: { _ in\n                    group.subscribe(result)\n                })\n            })\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .error(570, testError)\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .error(570, testError)\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .error(570, testError)\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .error(570, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerDispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                inners[group.key] = group\n                results[group.key] = result\n                innerSubscriptions[group.key] = group.subscribe(result)\n            })\n        }\n\n        scheduler.scheduleAt(400) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \")\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \"),\n            .next(390, \"   bar\")\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(350, \" Baz   \")\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .next(360, \"  qux \")\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    func testGroupBy_InnerKeyThrow() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var keyInvoked = 0\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outer: Observable<GroupedObservable<String, String>>?\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n\n        scheduler.scheduleAt(Defaults.created) {\n            outer = xs.groupBy { x in\n                keyInvoked += 1\n                if x == \"error\" { throw testError }\n                if keyInvoked == 6 {\n                    throw testError\n                }\n                return x.lowercased().trimWhitespace()\n            }\n        }\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            outerSubscription = outer!.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                inners[group.key] = group\n                results[group.key] = result\n\n                innerSubscriptions[group.key] = group.subscribe(result)\n            })\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.count, 3)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .error(360, testError)\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \"),\n            .error(360, testError)\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(350, \" Baz   \"),\n            .error(360, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 360)\n        ])\n    }\n\n    func testGroupBy_OuterIndependence() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outer: Observable<GroupedObservable<String, String>>?\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n        let outerResults: TestableObserver<String> = scheduler.createObserver(String.self)\n\n        scheduler.scheduleAt(Defaults.created) {\n            outer = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n        }\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            outerSubscription = outer!\n                .subscribe(\n                    onNext: { (group: GroupedObservable<String, String>) in\n                        outerResults.onNext(group.key)\n\n                        let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                        inners[group.key] = group\n                        results[group.key] = result\n                        innerSubscriptions[group.key] = group.subscribe(result)\n                    },\n                    onError: { e in\n                        outerResults.onError(e)\n                    },\n                    onCompleted: {\n                        outerResults.onCompleted()\n                    },\n                    onDisposed: nil\n                )\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.scheduleAt(320) {\n            outerSubscription?.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.keys.count, 2)\n\n        XCTAssertEqual(outerResults.events, [\n            .next(220, \"foo\"),\n            .next(270, \"bar\")\n        ])\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerIndependence() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n        let outerResults: TestableObserver<String> = scheduler.createObserver(String.self)\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer\n                .subscribe(\n                    onNext: { (group: GroupedObservable<String, String>) in\n                        outerResults.onNext(group.key)\n\n                        let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                        inners[group.key] = group\n                        results[group.key] = result\n                        innerSubscriptions[group.key] = group.subscribe(result)\n                    },\n                    onError: { e in\n                        outerResults.onError(e)\n                    },\n                    onCompleted: {\n                        outerResults.onCompleted()\n                    },\n                    onDisposed: nil\n                )\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.scheduleAt(320) {\n            innerSubscriptions[\"foo\"]!.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.keys.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \")\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(350, \" Baz   \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .next(360, \"  qux \"),\n            .completed(570)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerMultipleIndependence() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, \"abc\"),\n            .next(110, \"zoo\"),\n            .next(130, \"oof\"),\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(270, \"baR  \"),\n            .next(310, \"foO \"),\n            .next(350, \" Baz   \"),\n            .next(360, \"  qux \"),\n            .next(390, \"   bar\"),\n            .next(420, \" BAR  \"),\n            .next(470, \"FOO \"),\n            .next(480, \"baz  \"),\n            .next(510, \" bAZ \"),\n            .next(530, \"    fOo    \"),\n            .completed(570),\n            .next(580, \"error\"),\n            .completed(600),\n            .error(650, testError)\n        ])\n\n        var outerSubscription: Disposable?\n        var inners = [String: GroupedObservable<String, String>]()\n        var innerSubscriptions = [String: Disposable]()\n        var results = [String: TestableObserver<String>]()\n        let outerResults: TestableObserver<String> = scheduler.createObserver(String.self)\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                if x == \"error\" { throw testError }\n                return x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer\n                .subscribe(\n                    onNext: { (group: GroupedObservable<String, String>) in\n                        outerResults.onNext(group.key)\n\n                        let result: TestableObserver<String> = scheduler.createObserver(String.self)\n                        inners[group.key] = group\n                        results[group.key] = result\n                        innerSubscriptions[group.key] = group.subscribe(result)\n                    },\n                    onError: { e in\n                        outerResults.onError(e)\n                    },\n                    onCompleted: {\n                        outerResults.onCompleted()\n                    },\n                    onDisposed: nil\n                )\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            for (_, disposable) in innerSubscriptions {\n                disposable.dispose()\n            }\n        }\n\n        scheduler.scheduleAt(320) {\n            innerSubscriptions[\"foo\"]!.dispose()\n        }\n\n        scheduler.scheduleAt(280) {\n            innerSubscriptions[\"bar\"]!.dispose()\n        }\n\n        scheduler.scheduleAt(355) {\n            innerSubscriptions[\"baz\"]!.dispose()\n        }\n\n        scheduler.scheduleAt(400) { () in\n            innerSubscriptions[\"qux\"]!.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(inners.keys.count, 4)\n\n        XCTAssertEqual(results[\"foo\"]!.events, [\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \")\n        ])\n\n        XCTAssertEqual(results[\"bar\"]!.events, [\n            .next(270, \"baR  \")\n        ])\n\n        XCTAssertEqual(results[\"baz\"]!.events, [\n            .next(350, \" Baz   \")\n        ])\n\n        XCTAssertEqual(results[\"qux\"]!.events, [\n            .next(360, \"  qux \")\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerEscapeComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .completed(570)\n        ])\n\n        let results: TestableObserver<String> = scheduler.createObserver(String.self)\n        var outer: Observable<GroupedObservable<String, String>>?\n        var outerSubscription: Disposable?\n        var inner: GroupedObservable<String, String>?\n        var innerSubscription: Disposable?\n\n        scheduler.scheduleAt(Defaults.created) {\n            outer = xs.groupBy { x in\n                x.lowercased().trimWhitespace()\n            }\n        }\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            outerSubscription = outer!.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                inner = group\n            })\n        }\n\n        scheduler.scheduleAt(600) {\n            innerSubscription = inner?.subscribe(results)\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            outerSubscription?.dispose()\n            innerSubscription?.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(results.events, [\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerEscapeError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .error(570, testError)\n        ])\n\n        let results: TestableObserver<String> = scheduler.createObserver(String.self)\n        var outer: Observable<GroupedObservable<String, String>>?\n        var outerSubscription: Disposable?\n        var inner: GroupedObservable<String, String>?\n        var innerSubscription: Disposable?\n\n        scheduler.scheduleAt(Defaults.created) {\n            outer = xs.groupBy { x in\n                x.lowercased().trimWhitespace()\n            }\n        }\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            outerSubscription = outer!.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                inner = group\n            })\n        }\n\n        scheduler.scheduleAt(600) {\n            innerSubscription = inner?.subscribe(results)\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) { () in\n            outerSubscription?.dispose()\n            innerSubscription?.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(results.events, [\n            .error(600, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 570)\n        ])\n    }\n\n    func testGroupBy_InnerEscapeDispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(220, \"  foo\"),\n            .next(240, \" FoO \"),\n            .next(310, \"foO \"),\n            .next(470, \"FOO \"),\n            .next(530, \"    fOo    \"),\n            .error(570, testError)\n        ])\n\n        let results: TestableObserver<String> = scheduler.createObserver(String.self)\n        var outerSubscription: Disposable?\n        var inner: GroupedObservable<String, String>?\n        var innerSubscription: Disposable?\n\n        scheduler.scheduleAt(Defaults.subscribed) {\n            let outer: Observable<GroupedObservable<String, String>> = xs.groupBy { x in\n                x.lowercased().trimWhitespace()\n            }\n            outerSubscription = outer.subscribe(onNext: { (group: GroupedObservable<String, String>) in\n                inner = group\n            })\n        }\n\n        scheduler.scheduleAt(400) {\n            outerSubscription?.dispose()\n        }\n\n        scheduler.scheduleAt(600) {\n            innerSubscription = inner?.subscribe(results)\n        }\n\n        scheduler.scheduleAt(Defaults.disposed) {\n            innerSubscription?.dispose()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(results.events, [])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testGroupByReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).groupBy { $0 }.subscribe()\n    }\n\n    func testGroupByReleasesResourcesOnError1() {\n        _ = Observable<Int>.error(testError).groupBy { $0 }.subscribe()\n    }\n\n    func testGroupByReleasesResourcesOnError2() {\n        _ = Observable<Int>.error(testError).groupBy { _ -> Int in throw testError }.subscribe()\n    }\n    #endif\n}\n\nimport Foundation\n\nprivate extension String {\n    func trimWhitespace() -> String {\n        trimmingCharacters(in: CharacterSet.whitespaces)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+JustTests.swift",
    "content": "//\n//  Observable+JustTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableJustTest: RxTest {}\n\nextension ObservableJustTest {\n    func testJust_Immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.just(42)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 42),\n            .completed(200)\n        ])\n    }\n\n    func testJust_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.just(42, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 42),\n            .completed(202)\n        ])\n    }\n\n    func testJust_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start(disposed: 200) {\n            Observable.just(42, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n    }\n\n    func testJust_DisposeAfterNext() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let d = SingleAssignmentDisposable()\n\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(100) {\n            let subscription = Observable.just(42, scheduler: scheduler).subscribe { e in\n                res.on(e)\n\n                switch e {\n                case .next:\n                    d.dispose()\n                default:\n                    break\n                }\n            }\n\n            d.setDisposable(subscription)\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(101, 42)\n        ])\n    }\n\n    func testJust_DefaultScheduler() {\n        let res = try! Observable.just(42, scheduler: MainScheduler.instance)\n            .toBlocking()\n            .toArray()\n\n        XCTAssertEqual(res, [\n            42\n        ])\n    }\n\n    func testJust_CompilesInMap() {\n        _ = (1 as Int?).map(Observable.just)\n    }\n\n    #if TRACE_RESOURCES\n    func testJustReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).subscribe()\n    }\n    #endif\n\n    #if TRACE_RESOURCES\n    func testJustSchdedulerReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1, scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+MapTests.swift",
    "content": "//\n//  Observable+MapTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableMapTest: RxTest {}\n\nextension ObservableMapTest {\n    func testMap_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 2 } }\n\n        let correctMessages: [Recorded<Event<Int>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMap_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(300)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 2 } }\n\n        let correctMessages = [\n            Recorded.completed(300, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMap_Range() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .completed(300)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 2 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 2),\n            .next(220, 1 * 2),\n            .next(230, 2 * 2),\n            .next(240, 4 * 2),\n            .completed(300)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMap_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 2 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 2),\n            .next(220, 1 * 2),\n            .next(230, 2 * 2),\n            .next(240, 4 * 2),\n            .error(300, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMap_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start(disposed: 290) { xs.map { $0 * 2 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 2),\n            .next(220, 1 * 2),\n            .next(230, 2 * 2),\n            .next(240, 4 * 2)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 290)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMap_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start { xs.map { x throws -> Int in if x < 2 { return x * 2 } else { throw testError } } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 2),\n            .next(220, 1 * 2),\n            .error(230, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 230)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    #if TRACE_RESOURCES\n    func testMapReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).map { _ in true }.subscribe()\n    }\n\n    func testMap1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).map { _ in true }.subscribe()\n    }\n\n    func testMap2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).map { _ -> Bool in throw testError }.subscribe()\n    }\n    #endif\n}\n\n// MARK: map compose\n\nextension ObservableMapTest {\n    func testMapCompose_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 10 }.map { $0 + 1 } }\n\n        let correctMessages: [Recorded<Event<Int>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(300)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 10 }.map { $0 + 1 } }\n\n        let correctMessages = [\n            Recorded.completed(300, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Range() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .completed(300)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 10 }.map { $0 + 1 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 10 + 1),\n            .next(220, 1 * 10 + 1),\n            .next(230, 2 * 10 + 1),\n            .next(240, 4 * 10 + 1),\n            .completed(300)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start { xs.map { $0 * 10 }.map { $0 + 1 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 10 + 1),\n            .next(220, 1 * 10 + 1),\n            .next(230, 2 * 10 + 1),\n            .next(240, 4 * 10 + 1),\n            .error(300, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 300)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start(disposed: 290) { xs.map { $0 * 10 }.map { $0 + 1 } }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 10 + 1),\n            .next(220, 1 * 10 + 1),\n            .next(230, 2 * 10 + 1),\n            .next(240, 4 * 10 + 1)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 290)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Selector1Throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs\n                .map { x throws -> Int in if x < 2 { return x * 10 } else { throw testError } }\n                .map { $0 + 1 }\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 10 + 1),\n            .next(220, 1 * 10 + 1),\n            .error(230, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 230)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func testMapCompose_Selector2Throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 4),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs\n                .map { $0 * 10 }\n                .map { x throws -> Int in if x < 20 { return x + 1 } else { throw testError } }\n        }\n\n        let correctMessages = Recorded.events(\n            .next(210, 0 * 10 + 1),\n            .next(220, 1 * 10 + 1),\n            .error(230, testError)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 230)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+MaterializeTests.swift",
    "content": "//\n//  Observable+MaterializeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableMaterializeTest: RxTest {}\n\nextension ObservableMaterializeTest {\n    func testMaterializeNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable<Int>.never().materialize()\n        }\n        XCTAssertEqual(res.events, [], materializedRecoredEventsComparison)\n    }\n\n    func testMaterializeEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .completed(201, Int.self),\n            .completed(202, Int.self)\n        ])\n        let res = scheduler.start {\n            xs.materialize()\n        }\n        let expectedEvents = Recorded.events(\n            .next(201, Event<Int>.completed),\n            .completed(201)\n        )\n\n        XCTAssertEqual(xs.subscriptions, [Subscription(200, 201)])\n        XCTAssertEqual(res.events, expectedEvents, materializedRecoredEventsComparison)\n    }\n\n    func testMaterializeEmits() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250),\n            .completed(251)\n        ])\n        let res = scheduler.start {\n            xs.materialize()\n        }\n        let expectedEvents = Recorded.events(\n            .next(210, Event.next(2)),\n            .next(250, Event.completed),\n            .completed(250)\n        )\n\n        XCTAssertEqual(xs.subscriptions, [Subscription(200, 250)])\n        XCTAssertEqual(res.events, expectedEvents, materializedRecoredEventsComparison)\n    }\n\n    func testMaterializeThrow() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError),\n            .error(251, testError)\n        ])\n        let res = scheduler.start {\n            xs.materialize()\n        }\n        let expectedEvents = Recorded.events(\n            .next(250, Event<Int>.error(testError)),\n            .completed(250)\n        )\n\n        XCTAssertEqual(xs.subscriptions, [Subscription(200, 250)])\n        XCTAssertEqual(res.events, expectedEvents, materializedRecoredEventsComparison)\n    }\n\n    #if TRACE_RESOURCES\n    func testMaterializeReleasesResourcesOnComplete1() {\n        _ = Observable<Int>.just(1).materialize().subscribe()\n    }\n\n    func testMaterializeReleasesResourcesOnComplete2() {\n        _ = Observable<Int>.empty().materialize().subscribe()\n    }\n\n    func testMaterializeReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).materialize().subscribe()\n    }\n    #endif\n}\n\nprivate func materializedRecoredEventsComparison<T: Equatable>(lhs: [Recorded<Event<Event<T>>>], rhs: [Recorded<Event<Event<T>>>]) -> Bool {\n    guard lhs.count == rhs.count else {\n        return false\n    }\n    for (lhsElement, rhsElement) in zip(lhs, rhs) {\n        guard lhsElement == rhsElement else {\n            return false\n        }\n    }\n\n    return true\n}\n\nprivate func == <T: Equatable>(lhs: Recorded<Event<Event<T>>>, rhs: Recorded<Event<Event<T>>>) -> Bool {\n    lhs.time == rhs.time && lhs.value == rhs.value\n}\n\nprivate func == <T: Equatable>(lhs: Event<Event<T>>, rhs: Event<Event<T>>) -> Bool {\n    switch (lhs, rhs) {\n    case let (.next(lhsEvent), .next(rhsEvent)):\n        return lhsEvent == rhsEvent\n    case (.completed, .completed): return true\n    case let (.error(e1), .error(e2)):\n        #if os(Linux)\n        return \"\\(e1)\" == \"\\(e2)\"\n        #else\n        let error1 = e1 as NSError\n        let error2 = e2 as NSError\n\n        return error1.domain == error2.domain\n            && error1.code == error2.code\n            && \"\\(e1)\" == \"\\(e2)\"\n        #endif\n    default:\n        return false\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+MergeTests.swift",
    "content": "//\n//  Observable+MergeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableMergeTest: RxTest {}\n\nextension ObservableMergeTest {\n    func testMerge_DeadlockSimple() {\n        var nEvents = 0\n\n        let observable = Observable.of(\n            Observable.of(0, 1, 2),\n            Observable.of(0, 1, 2),\n            Observable.of(0, 1, 2)\n        ).merge()\n\n        _ = observable.subscribe(onNext: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 9)\n    }\n\n    func testMerge_DeadlockErrorAfterN() {\n        var nEvents = 0\n\n        let observable = Observable.of(\n            Observable.of(0, 1, 2),\n            Observable.concat([Observable.of(0, 1), Observable.error(testError)]),\n            Observable.of(0, 1, 2)\n        ).merge()\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMerge_DeadlockErrorImmediately() {\n        var nEvents = 0\n\n        let observable: Observable<Observable<Int>> = Observable.just(\n            Observable.error(testError)\n        ).merge()\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMerge_DeadlockEmpty() {\n        var nEvents = 0\n\n        let observable: Observable<Int> = Observable<Observable<Int>>.empty().merge()\n        _ = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMerge_DeadlockFirstEmpty() {\n        var nEvents = 0\n\n        let observable: Observable<Int> = Observable.just(Observable.empty()).merge()\n        _ = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMergeConcurrent_DeadlockSimple() {\n        var nEvents = 0\n\n        let observable = Observable.of(\n            Observable.of(0, 1, 2),\n            Observable.of(0, 1, 2),\n            Observable.of(0, 1, 2)\n        ).merge(maxConcurrent: 1)\n\n        _ = observable.subscribe(onNext: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 9)\n    }\n\n    func testMergeConcurrent_DeadlockErrorAfterN() {\n        var nEvents = 0\n\n        let observable = Observable.of(\n            Observable.of(0, 1, 2),\n            Observable.concat([Observable.of(0, 1), Observable.error(testError)]),\n            Observable.of(0, 1, 2)\n        ).merge(maxConcurrent: 1)\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMergeConcurrent_DeadlockErrorImmediately() {\n        var nEvents = 0\n\n        let observable: Observable<Observable<Int>> = Observable.just(\n            Observable.error(testError)\n        ).merge(maxConcurrent: 1)\n\n        _ = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMergeConcurrent_DeadlockEmpty() {\n        var nEvents = 0\n\n        let observable: Observable<Int> = Observable<Observable<Int>>.empty().merge(maxConcurrent: 1)\n\n        _ = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMergeConcurrent_DeadlockFirstEmpty() {\n        var nEvents = 0\n\n        let observable: Observable<Int> = Observable.just(Observable.empty()).merge(maxConcurrent: 1)\n\n        _ = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testMerge_ObservableOfObservable_Data() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .next(120, 305),\n            .completed(150)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(500, ys3),\n            .completed(600)\n        ])\n\n        let res = scheduler.start {\n            xs.merge()\n        }\n\n        let messages = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 103),\n            .next(410, 201),\n            .next(420, 104),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .next(510, 105),\n            .next(510, 301),\n            .next(520, 106),\n            .next(520, 302),\n            .next(530, 303),\n            .next(540, 304),\n            .next(620, 305),\n            .completed(650)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 530)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(400, 450)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(500, 650)\n        ])\n    }\n\n    func testMerge_ObservableOfObservable_Data_NotOverlapped() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(50)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(500, ys3),\n            .completed(600)\n        ])\n\n        let res = scheduler.start {\n            xs.merge()\n        }\n\n        let messages = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .next(510, 301),\n            .next(520, 302),\n            .next(530, 303),\n            .next(540, 304),\n            .completed(600)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 530)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(400, 450)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(500, 550)\n        ])\n    }\n\n    func testMerge_ObservableOfObservable_InnerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .error(50, testError1)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(150)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(500, ys3),\n            .completed(600)\n        ])\n\n        let res = scheduler.start {\n            xs.merge()\n        }\n\n        let messages = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 103),\n            .next(410, 201),\n            .next(420, 104),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(450, testError1)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 450)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(400, 450)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n        ])\n    }\n\n    func testMerge_ObservableOfObservable_OuterThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .error(500, testError1)\n        ])\n\n        let res = scheduler.start {\n            xs.merge()\n        }\n\n        let messages = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 103),\n            .next(410, 201),\n            .next(420, 104),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(500, testError1)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 500)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 500)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(400, 450)\n        ])\n    }\n\n    func testMerge_MergeConcat_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(200)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(320, ys4),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 2)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 6),\n            .next(440, 7),\n            .next(460, 8),\n            .next(670, 9),\n            .next(700, 10),\n            .completed(760)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 460)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(350, 480)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n            Subscription(460, 760)\n        ])\n    }\n\n    func testMerge_MergeConcat_BasicLong() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(300)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(320, ys4),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 2)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 6),\n            .next(440, 7),\n            .next(460, 8),\n            .next(690, 9),\n            .next(720, 10),\n            .completed(780)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 560)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(350, 480)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n            Subscription(480, 780)\n        ])\n    }\n\n    func testMerge_MergeConcat_BasicWide() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(300)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(420, ys4),\n            .completed(450)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 3)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(280, 6),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 7),\n            .next(380, 8),\n            .next(630, 9),\n            .next(660, 10),\n            .completed(720)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 560)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(270, 400)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n            Subscription(420, 720)\n        ])\n    }\n\n    func testMerge_MergeConcat_BasicLate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(300)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(420, ys4),\n            .completed(750)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 3)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(280, 6),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 7),\n            .next(380, 8),\n            .next(630, 9),\n            .next(660, 10),\n            .completed(750)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 750)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 560)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(270, 400)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n            Subscription(420, 720)\n        ])\n    }\n\n    func testMerge_MergeConcat_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(200)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(320, ys4),\n            .completed(400)\n        ])\n\n        let res = scheduler.start(disposed: 450) {\n            xs.merge(maxConcurrent: 2)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 6),\n            .next(440, 7)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 450)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(350, 450)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n        ])\n    }\n\n    func testMerge_MergeConcat_OuterError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(200)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .completed(130)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(320, ys4),\n            .error(400, testError1)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 2)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 6),\n            .error(400, testError1)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 400)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(350, 400)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n        ])\n    }\n\n    func testMerge_MergeConcat_InnerError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(50, 1),\n            .next(100, 2),\n            .next(120, 3),\n            .completed(140)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 4),\n            .next(70, 5),\n            .completed(200)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 6),\n            .next(90, 7),\n            .next(110, 8),\n            .error(140, testError1)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .next(210, 9),\n            .next(240, 10),\n            .completed(300)\n        ])\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(210, ys1),\n            .next(260, ys2),\n            .next(270, ys3),\n            .next(320, ys4),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.merge(maxConcurrent: 2)\n        }\n\n        let messages = Recorded.events(\n            .next(260, 1),\n            .next(280, 4),\n            .next(310, 2),\n            .next(330, 3),\n            .next(330, 5),\n            .next(360, 6),\n            .next(440, 7),\n            .next(460, 8),\n            .error(490, testError1)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(210, 350)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(260, 460)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [\n            Subscription(350, 490)\n        ])\n\n        XCTAssertEqual(ys4.subscriptions, [\n            Subscription(460, 490)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testMerge1ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Observable<Int>>.of(Observable.just(1), Observable.just(1).delay(.seconds(10), scheduler: scheduler))\n            .merge()\n            .subscribe()\n        scheduler.start()\n    }\n\n    func testMerge2ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Observable<Int>>.of(Observable.just(1), Observable.just(1))\n            .concat(Observable<Int>.timer(.seconds(20), scheduler: scheduler).flatMapLatest { _ in Observable<Observable<Int>>.empty() })\n            .merge()\n            .subscribe()\n        scheduler.start()\n    }\n\n    func testMerge1ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Observable<Int>>.of(Observable.just(1), Observable.never().timeout(.seconds(10), scheduler: scheduler))\n            .merge()\n            .subscribe()\n        scheduler.start()\n    }\n\n    func testMerge2ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Observable<Int>>.of(Observable.just(1), Observable.just(1))\n            .concat(Observable.never().timeout(.seconds(20), scheduler: scheduler))\n            .merge()\n            .subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n\nextension ObservableMergeTest {\n    func testMergeSync_Empty() {\n        let factories: [() -> Observable<Int>] =\n            [\n                { Observable.merge() },\n                { Observable.merge(AnyCollection([])) },\n                { Observable.merge([]) }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let res = scheduler.start(factory)\n\n            let messages = [\n                Recorded.completed(200, Int.self)\n            ]\n\n            XCTAssertEqual(res.events, messages)\n        }\n    }\n\n    func testMergeSync_EmptyData_DoesntCompleteImmediately() {\n        let factories: [(Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { ys1, ys2 in Observable.merge(ys1, ys2) },\n                { ys1, ys2 in Observable.merge(AnyCollection([ys1, ys2])) },\n                { ys1, ys2 in Observable.merge([ys1, ys2]) }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = Observable<Int>.empty()\n\n            let ys2 = scheduler.createColdObservable([\n                .next(10, 201),\n                .next(20, 202),\n                .completed(50)\n            ])\n\n            let res = scheduler.start {\n                factory(ys1.asObservable(), ys2.asObservable())\n            }\n\n            let messages = Recorded.events(\n                .next(210, 201),\n                .next(220, 202),\n                .completed(250)\n            )\n\n            XCTAssertEqual(res.events, messages)\n\n            XCTAssertEqual(ys2.subscriptions, [\n                Subscription(200, 250)\n            ])\n        }\n    }\n\n    func testMergeSync_EmptyEmpty_Completes() {\n        let factories: [(Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { ys1, ys2 in Observable.merge(ys1, ys2) },\n                { ys1, ys2 in Observable.merge(AnyCollection([ys1, ys2])) },\n                { ys1, ys2 in Observable.merge([ys1, ys2]) }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = Observable<Int>.empty()\n\n            let ys2 = Observable<Int>.empty()\n\n            let res = scheduler.start {\n                factory(ys1.asObservable(), ys2.asObservable())\n            }\n\n            let messages = [\n                Recorded.completed(200, Int.self)\n            ]\n\n            XCTAssertEqual(res.events, messages)\n        }\n    }\n\n    func testMergeSync_Data() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { ys1, ys2, ys3 in Observable.merge(ys1, ys2, ys3) },\n                { ys1, ys2, ys3 in Observable.merge(AnyCollection([ys1, ys2, ys3])) },\n                { ys1, ys2, ys3 in Observable.merge([ys1, ys2, ys3]) }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = scheduler.createColdObservable([\n                .next(10, 101),\n                .next(20, 102),\n                .completed(230)\n            ])\n\n            let ys2 = scheduler.createColdObservable([\n                .next(10, 201),\n                .next(20, 202),\n                .completed(50)\n            ])\n\n            let ys3 = scheduler.createColdObservable([\n                .next(10, 301),\n                .next(20, 302),\n                .completed(150)\n            ])\n\n            let res = scheduler.start {\n                factory(ys1.asObservable(), ys2.asObservable(), ys3.asObservable())\n            }\n\n            let messages = Recorded.events(\n                .next(210, 101),\n                .next(210, 201),\n                .next(210, 301),\n                .next(220, 102),\n                .next(220, 202),\n                .next(220, 302),\n                .completed(430)\n            )\n\n            XCTAssertEqual(res.events, messages)\n\n            XCTAssertEqual(ys1.subscriptions, [\n                Subscription(200, 430)\n            ])\n\n            XCTAssertEqual(ys2.subscriptions, [\n                Subscription(200, 250)\n            ])\n\n            XCTAssertEqual(ys3.subscriptions, [\n                Subscription(200, 350)\n            ])\n        }\n    }\n\n    func testMergeSync_ObservableOfObservable_InnerThrows() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { ys1, ys2, ys3 in Observable.merge(ys1, ys2, ys3) },\n                { ys1, ys2, ys3 in Observable.merge(AnyCollection([ys1, ys2, ys3])) },\n                { ys1, ys2, ys3 in Observable.merge([ys1, ys2, ys3]) }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = scheduler.createColdObservable([\n                .next(10, 101),\n                .next(20, 102),\n                .completed(230)\n            ])\n\n            let ys2 = scheduler.createColdObservable([\n                .next(10, 201),\n                .error(15, testError)\n            ])\n\n            let ys3 = scheduler.createColdObservable([\n                .next(10, 301),\n                .next(20, 302),\n                .completed(150)\n            ])\n\n            let res = scheduler.start {\n                factory(ys1.asObservable(), ys2.asObservable(), ys3.asObservable())\n            }\n\n            let messages = Recorded.events(\n                .next(210, 101),\n                .next(210, 201),\n                .next(210, 301),\n                .error(215, testError)\n            )\n\n            XCTAssertEqual(res.events, messages)\n\n            XCTAssertEqual(ys1.subscriptions, [\n                Subscription(200, 215)\n            ])\n\n            XCTAssertEqual(ys2.subscriptions, [\n                Subscription(200, 215)\n            ])\n\n            XCTAssertEqual(ys3.subscriptions, [\n                Subscription(200, 215)\n            ])\n        }\n    }\n\n    #if TRACE_RESOURCES\n    func testMergeSyncReleasesResourcesOnComplete() {\n        _ = Observable.merge(Observable.just(1))\n            .subscribe()\n\n        _ = Observable.merge([Observable.just(1)])\n            .subscribe()\n\n        _ = Observable.merge(AnyCollection([Observable.just(1)]))\n            .subscribe()\n    }\n\n    func testMergeSyncReleasesResourcesOnError() {\n        _ = Observable.merge(Observable<Int>.error(testError))\n            .subscribe()\n\n        _ = Observable.merge([Observable<Int>.error(testError)])\n            .subscribe()\n\n        _ = Observable.merge(AnyCollection([Observable<Int>.error(testError)]))\n            .subscribe()\n    }\n\n    #endif\n}\n\nextension ObservableMergeTest {\n    func testFlatMapFirst_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(930, 401),\n            .next(940, 402),\n            .completed(950)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMapFirst_Complete_InnerNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ]))\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(930, 401),\n            .next(940, 402)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMapFirst_Complete_OuterNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(930, 401),\n            .next(940, 402),\n            .completed(950)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMapFirst_Complete_ErrorOuter() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .error(900, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .error(900, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 900)\n        ])\n    }\n\n    func testFlatMapFirst_Error_Inner() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .error(460, testError)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .error(760, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n        ])\n    }\n\n    func testFlatMapFirst_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start(disposed: 700) {\n            xs.flatMapFirst { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 700)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 700)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [])\n    }\n\n    func testFlatMapFirst_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        var invoked = 0\n        let res = scheduler.start {\n            xs.flatMapFirst { (x: TestableObservable<Int>) -> TestableObservable<Int> in\n                invoked += 1\n                if invoked == 2 {\n                    throw testError\n                }\n                return x\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .error(850, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 850)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [])\n    }\n\n    func testFlatMapFirst_UseFunction() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 4),\n            .next(220, 3),\n            .next(250, 5),\n            .next(270, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMapFirst { x in\n                Observable<Int64>.interval(.seconds(10), scheduler: scheduler).map { _ in x }.take(x)\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 4),\n            .next(230, 4),\n            .next(240, 4),\n            .next(250, 4),\n            .next(280, 1),\n            .completed(290)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFlatMapFirstReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).flatMapFirst { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testFlatMapFirst1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).flatMapFirst { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testFlatMapFirst2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).flatMapFirst { _ -> Observable<Int> in throw testError }.subscribe()\n    }\n\n    func testFlatMapFirst3ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).flatMapFirst { _ -> Observable<Int> in Observable.error(testError) }.subscribe()\n    }\n    #endif\n}\n\n// MARK: flatMap\n\nextension ObservableMergeTest {\n    func testFlatMap_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303),\n            .next(740, 106),\n            .next(810, 304),\n            .next(860, 305),\n            .next(930, 401),\n            .next(940, 402),\n            .completed(960)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 605)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 960)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n            Subscription(750, 790)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMap_Complete_InnerNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ]))\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303),\n            .next(740, 106),\n            .next(810, 304),\n            .next(860, 305),\n            .next(930, 401),\n            .next(940, 402)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 605)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 960)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n            Subscription(750, 790)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMap_Complete_OuterNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303),\n            .next(740, 106),\n            .next(810, 304),\n            .next(860, 305),\n            .next(930, 401),\n            .next(940, 402)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 1000)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 960)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n            Subscription(750, 790)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 950)\n        ])\n    }\n\n    func testFlatMap_Complete_ErrorOuter() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .error(900, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303),\n            .next(740, 106),\n            .next(810, 304),\n            .next(860, 305),\n            .error(900, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 900)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n            Subscription(750, 790)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n            Subscription(850, 900)\n        ])\n    }\n\n    func testFlatMap_Error_Inner() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .error(460, testError)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303),\n            .next(740, 106),\n            .error(760, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 605)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n            Subscription(750, 760)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n        ])\n    }\n\n    func testFlatMap_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        let res = scheduler.start(disposed: 700) {\n            xs.flatMap(\\.self)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(560, 301),\n            .next(580, 202),\n            .next(590, 203),\n            .next(600, 302),\n            .next(620, 303)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 700)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 700)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 605)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n            Subscription(550, 700)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n        ])\n    }\n\n    func testFlatMap_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<TestableObservable<Int>> = scheduler.createHotObservable([\n            .next(5, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(105, scheduler.createColdObservable([\n                .error(1, testError)\n            ])),\n            .next(300, scheduler.createColdObservable([\n                .next(10, 102),\n                .next(90, 103),\n                .next(110, 104),\n                .next(190, 105),\n                .next(440, 106),\n                .completed(460)\n            ])),\n            .next(400, scheduler.createColdObservable([\n                .next(180, 202),\n                .next(190, 203),\n                .completed(205)\n            ])),\n            .next(550, scheduler.createColdObservable([\n                .next(10, 301),\n                .next(50, 302),\n                .next(70, 303),\n                .next(260, 304),\n                .next(310, 305),\n                .completed(410)\n            ])),\n            .next(750, scheduler.createColdObservable([\n                .completed(40)\n            ])),\n            .next(850, scheduler.createColdObservable([\n                .next(80, 401),\n                .next(90, 402),\n                .completed(100)\n            ])),\n            .completed(900)\n        ])\n\n        var invoked = 0\n        let res = scheduler.start {\n            xs.flatMap { (x: TestableObservable<Int>) -> TestableObservable<Int> in\n                invoked += 1\n                if invoked == 3 {\n                    throw testError\n                }\n                return x\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .error(550, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[2].value.element!.subscriptions, [\n            Subscription(300, 550)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[3].value.element!.subscriptions, [\n            Subscription(400, 550)\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[4].value.element!.subscriptions, [\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[5].value.element!.subscriptions, [\n        ])\n\n        XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [\n        ])\n    }\n\n    func testFlatMap_UseFunction() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 4),\n            .next(220, 3),\n            .next(250, 5),\n            .next(270, 1),\n            .completed(290)\n        ])\n\n        let res = scheduler.start {\n            xs.flatMap { x in\n                Observable<Int64>.interval(.seconds(10), scheduler: scheduler).map { _ in x }.take(x)\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 4),\n            .next(230, 3),\n            .next(230, 4),\n            .next(240, 3),\n            .next(240, 4),\n            .next(250, 3),\n            .next(250, 4),\n            .next(260, 5),\n            .next(270, 5),\n            .next(280, 1),\n            .next(280, 5),\n            .next(290, 5),\n            .next(300, 5),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFlatMapReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).flatMap { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testFlatMap1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).flatMap { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testFlatMap2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).flatMap { _ -> Observable<Int> in throw testError }.subscribe()\n    }\n\n    func testFlatMap3ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).flatMap { _ -> Observable<Int> in Observable.error(testError) }.subscribe()\n    }\n    #endif\n}\n\n// MARK: concatMap\n\nextension ObservableMergeTest {\n    func testConcatMap_InnerCompleteFasterThanOuterElementsAreProduced() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .completed(20)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 202),\n            .completed(25)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(250, ys1),\n            .next(300, ys2),\n            .completed(900)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(250, 270)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(300, 325)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(260, 102),\n            .next(320, 202),\n            .completed(900)\n        ])\n    }\n\n    func testConcatMap_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .completed(20)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(20, 202),\n            .completed(25)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(250, ys1),\n            .next(300, ys2),\n            .completed(900)\n        ])\n\n        let results = scheduler.start(disposed: 310) {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 310)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(250, 270)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(300, 310)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(260, 102)\n        ])\n    }\n\n    func testConcatMap_OuterComplete_InnerNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(50, 302),\n            .completed(60)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .completed(40, Int.self)\n        ])\n\n        let ys5 = scheduler.createColdObservable([\n            .next(80, 401),\n            .next(90, 402),\n            .completed(100)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(550, ys3),\n            .next(750, ys4),\n            .next(850, ys5),\n            .completed(900)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(760, 1000)\n        ])\n\n        XCTAssertEqual(ys3.subscriptions, [])\n\n        XCTAssertEqual(ys4.subscriptions, [])\n\n        XCTAssertEqual(ys5.subscriptions, [])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(940, 202),\n            .next(950, 203)\n        ])\n    }\n\n    func testConcatMap_InnerComplete_OuterNotComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(205)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(760, 965)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(940, 202),\n            .next(950, 203)\n        ])\n    }\n\n    func testConcatMap_InnerComplete_OuterCompleteBeforeInner() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(195)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .completed(405)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 405)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(760, 955)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(940, 202),\n            .next(950, 203),\n            .completed(955)\n        ])\n    }\n\n    func testConcatMap_InnerComplete_OuterCompleteAfterInner() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(195)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .completed(980)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 980)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(760, 955)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .next(940, 202),\n            .next(950, 203),\n            .completed(980)\n        ])\n    }\n\n    func testConcatMap_Error_Outer() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(205)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(50, 302),\n            .completed(60)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .completed(40, Int.self)\n        ])\n\n        let ys5 = scheduler.createColdObservable([\n            .next(80, 401),\n            .next(90, 402),\n            .completed(100)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(550, ys3),\n            .next(750, ys4),\n            .next(850, ys5),\n            .error(900, testError)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 900)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [\n            Subscription(760, 900)\n        ])\n        XCTAssertEqual(ys3.subscriptions, [])\n        XCTAssertEqual(ys4.subscriptions, [])\n        XCTAssertEqual(ys5.subscriptions, [])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .error(900, testError)\n        ])\n    }\n\n    func testConcatMap_Error_Inner() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .error(460, testError)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(205)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(50, 302),\n            .completed(60)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .completed(40, Int.self)\n        ])\n\n        let ys5 = scheduler.createColdObservable([\n            .next(80, 401),\n            .next(90, 402),\n            .completed(100)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(550, ys3),\n            .next(750, ys4),\n            .next(850, ys5),\n            .error(900, testError)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap {\n                $0\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 760)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 760)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [])\n        XCTAssertEqual(ys3.subscriptions, [])\n        XCTAssertEqual(ys4.subscriptions, [])\n        XCTAssertEqual(ys5.subscriptions, [])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .next(740, 106),\n            .error(760, testError)\n        ])\n    }\n\n    func testConcatMap_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 102),\n            .next(90, 103),\n            .next(110, 104),\n            .next(190, 105),\n            .next(440, 106),\n            .completed(460)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(180, 202),\n            .next(190, 203),\n            .completed(205)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(50, 302),\n            .completed(60)\n        ])\n\n        let ys4 = scheduler.createColdObservable([\n            .completed(40, Int.self)\n        ])\n\n        let ys5 = scheduler.createColdObservable([\n            .next(80, 401),\n            .next(90, 402),\n            .completed(100)\n        ])\n\n        let xs = scheduler.createHotObservable([\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(550, ys3),\n            .next(750, ys4),\n            .next(850, ys5),\n            .completed(900)\n        ])\n\n        var invoked = 0\n\n        let results = scheduler.start {\n            xs.concatMap { x -> TestableObservable<Int> in\n                invoked += 1\n                if invoked == 3 {\n                    throw testError\n                }\n                return x\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 550)\n        ])\n\n        XCTAssertEqual(ys1.subscriptions, [\n            Subscription(300, 550)\n        ])\n\n        XCTAssertEqual(ys2.subscriptions, [])\n        XCTAssertEqual(ys3.subscriptions, [])\n        XCTAssertEqual(ys4.subscriptions, [])\n        XCTAssertEqual(ys5.subscriptions, [])\n\n        XCTAssertEqual(results.events, [\n            .next(310, 102),\n            .next(390, 103),\n            .next(410, 104),\n            .next(490, 105),\n            .error(550, testError)\n        ])\n    }\n\n    func testConcatMap_UseFunction() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 4),\n            .next(220, 3),\n            .next(250, 5),\n            .next(270, 1),\n            .completed(290)\n        ])\n\n        let results = scheduler.start {\n            xs.concatMap { x in\n                Observable<Int>.interval(.seconds(10), scheduler: scheduler)\n                    .map { _ in\n                        x\n                    }\n                    .take(x)\n            }\n        }\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n\n        XCTAssertEqual(results.events, [\n            .next(220, 4),\n            .next(230, 4),\n            .next(240, 4),\n            .next(250, 4),\n            .next(260, 3),\n            .next(270, 3),\n            .next(280, 3),\n            .next(290, 5),\n            .next(300, 5),\n            .next(310, 5),\n            .next(320, 5),\n            .next(330, 5),\n            .next(340, 1),\n            .completed(340)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testConcatMapReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).concatMap { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testConcatMapReleasesResourcesOnError1() {\n        _ = Observable<Int>.error(testError).concatMap { _ in Observable.just(1) }.subscribe()\n    }\n\n    func testConcatMapReleasesResourcesOnError2() {\n        _ = Observable<Int>.just(1).concatMap { _ -> Observable<Int> in throw testError }.subscribe()\n    }\n\n    func testConcatMapReleasesResourcesOnError3() {\n        _ = Observable<Int>.just(1).concatMap { _ -> Observable<Int> in Observable.error(testError) }.subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+MulticastTests.swift",
    "content": "//\n//  Observable+MulticastTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableMulticastTest: RxTest {}\n\nextension ObservableMulticastTest {\n    func testMulticastWhileConnected_connectControlsSourceSubscription() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(makeSubject: { ReplaySubject.create(bufferSize: 3) }) }\n        scheduler.scheduleAt(405, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastWhileConnected_connectFirstThenSubscribe() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(makeSubject: { ReplaySubject.create(bufferSize: 1) }) }\n        scheduler.scheduleAt(470, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(470, 9),\n            .next(520, 11)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastWhileConnected_completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .completed(435),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(makeSubject: { ReplaySubject.create(bufferSize: 1) }) }\n        scheduler.scheduleAt(405, action: {\n            subscription = ys.do(onCompleted: {\n                subscription = ys.subscribe(res)\n                _ = ys.connect()\n            }).subscribe(res)\n        })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(430, 2),\n            .completed(435),\n            .next(450, 9),\n            .next(520, 11)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 435),\n            Subscription(435, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastWhileConnected_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .error(435, testError),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(makeSubject: { ReplaySubject.create(bufferSize: 1) }) }\n        scheduler.scheduleAt(405, action: {\n            subscription = ys.do(onError: { _ in\n                subscription = ys.subscribe(res)\n                _ = ys.connect()\n            }).subscribe(res)\n        })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(430, 2),\n            .error(435, testError),\n            .next(450, 9),\n            .next(520, 11)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 435),\n            Subscription(435, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastForever_connectControlsSourceSubscription() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(ReplaySubject.create(bufferSize: 3)) }\n        scheduler.scheduleAt(405, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(405, 5),\n            .next(405, 6),\n            .next(405, 7),\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastForever_connectFirstThenSubscribe() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(ReplaySubject.create(bufferSize: 1)) }\n        scheduler.scheduleAt(470, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(470, 9),\n            .next(520, 11),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastForever_completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .completed(435),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(ReplaySubject.create(bufferSize: 1)) }\n        scheduler.scheduleAt(405, action: {\n            subscription = ys.do(onCompleted: {\n                subscription = ys.subscribe(res)\n                _ = ys.connect()\n            }).subscribe(res)\n        })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(405, 7),\n            .next(430, 2),\n            .next(435, 2),\n            .completed(435),\n            .completed(435)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 435),\n            Subscription(435, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    func testMulticastForever_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(110, 7),\n            .next(220, 3),\n            .next(280, 4),\n            .next(290, 1),\n            .next(340, 8),\n            .next(360, 5),\n            .next(370, 6),\n            .next(390, 7),\n            .next(410, 13),\n            .next(430, 2),\n            .error(435, testError),\n            .next(450, 9),\n            .next(520, 11),\n            .next(560, 20),\n            .next(570, 21),\n            .next(580, 23),\n            .next(590, 24),\n            .next(600, 25),\n            .next(610, 26),\n            .next(620, 27),\n            .next(630, 28),\n            .error(800, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        var innerConnection: Disposable! = nil\n        var lastConnection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.multicast(ReplaySubject.create(bufferSize: 1)) }\n        scheduler.scheduleAt(405, action: {\n            subscription = ys.do(onError: { _ in\n                subscription = ys.subscribe(res)\n                _ = ys.connect()\n            }).subscribe(res)\n        })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(300) { connection = ys.connect() }\n        scheduler.scheduleAt(400) { connection.dispose() }\n\n        scheduler.scheduleAt(420) { connection = ys.connect() }\n        scheduler.scheduleAt(440) { innerConnection = ys.connect() }\n        scheduler.scheduleAt(530) { innerConnection.dispose() }\n        scheduler.scheduleAt(575) { lastConnection = ys.connect() }\n        scheduler.scheduleAt(590) { connection.dispose() }\n\n        scheduler.scheduleAt(621) { lastConnection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(405, 7),\n            .next(430, 2),\n            .next(435, 2),\n            .error(435, testError),\n            .error(435, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(300, 400),\n            Subscription(420, 435),\n            Subscription(435, 530),\n            Subscription(575, 621)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testMulticastWhileConnected_ReleasesResourcesOnComplete() {\n        let publish = Observable<Int>.just(1).multicast(makeSubject: { PublishSubject() })\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n\n    func testMulticastWhileConnected_ReleasesResourcesOnError() {\n        let publish = Observable<Int>.error(testError).multicast(makeSubject: { PublishSubject() })\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n\n    func testMulticastForever_ReleasesResourcesOnComplete() {\n        let publish = Observable<Int>.just(1).multicast(PublishSubject())\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n\n    func testMulticastForever_ReleasesResourcesOnError() {\n        let publish = Observable<Int>.error(testError).multicast(PublishSubject())\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n    #endif\n}\n\nextension ObservableMulticastTest {\n    func testMulticast_Cold_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(40, 0),\n            .next(90, 1),\n            .next(150, 2),\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7),\n            .completed(390)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ PublishSubject<Int>() }) { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n    }\n\n    func testMulticast_Cold_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(40, 0),\n            .next(90, 1),\n            .next(150, 2),\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7),\n            .error(390, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ PublishSubject<Int>() }) { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7),\n            .error(390, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n    }\n\n    func testMulticast_Cold_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(40, 0),\n            .next(90, 1),\n            .next(150, 2),\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ PublishSubject<Int>() }) { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testMulticast_Cold_Zip() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(40, 0),\n            .next(90, 1),\n            .next(150, 2),\n            .next(210, 3),\n            .next(240, 4),\n            .next(270, 5),\n            .next(330, 6),\n            .next(340, 7),\n            .completed(390)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ PublishSubject<Int>() }) { Observable.zip($0, $0) { a, b in a + b } }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 6),\n            .next(240, 8),\n            .next(270, 10),\n            .next(330, 12),\n            .next(340, 14),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n    }\n\n    func testMulticast_SubjectSelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(240, 2),\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ () throws -> PublishSubject<Int> in throw testError }) { $0 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n        ])\n    }\n\n    func testMulticast_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(240, 2),\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.multicast({ PublishSubject<Int>() }) { _ -> Observable<Int> in throw testError }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testMulticastReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).multicast({ PublishSubject<Int>() }) { Observable.zip($0, $0) { a, b in a + b } }.subscribe()\n    }\n\n    func testMulticastReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).multicast({ PublishSubject<Int>() }) { Observable.zip($0, $0) { a, b in a + b } }.subscribe()\n    }\n    #endif\n}\n\n// publish\nextension ObservableMulticastTest {\n    #if TRACE_RESOURCES\n    func testPublishReleasesResourcesOnComplete() {\n        let publish = Observable<Int>.just(1).publish()\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n\n    func testPublishReleasesResourcesOnError() {\n        let publish = Observable<Int>.error(testError).publish()\n        _ = publish.subscribe()\n        _ = publish.connect()\n    }\n    #endif\n}\n\n// refCount\nextension ObservableMulticastTest {\n    func testRefCount_DeadlockSimple() {\n        let subject = MySubject<Int>()\n\n        var nEvents = 0\n\n        let observable = TestConnectableObservable(o: Observable.of(0, 1, 2), s: subject)\n        let d = observable.subscribe(onNext: { _ in\n            nEvents += 1\n        })\n\n        defer {\n            d.dispose()\n        }\n\n        observable.connect().dispose()\n\n        XCTAssertEqual(nEvents, 3)\n    }\n\n    func testRefCount_DeadlockErrorAfterN() {\n        let subject = MySubject<Int>()\n\n        var nEvents = 0\n\n        let observable = TestConnectableObservable(o: Observable.concat([Observable.of(0, 1, 2), Observable.error(testError)]), s: subject)\n        let d = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        defer {\n            d.dispose()\n        }\n\n        observable.connect().dispose()\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testRefCount_DeadlockErrorImmediately() {\n        let subject = MySubject<Int>()\n\n        var nEvents = 0\n\n        let observable = TestConnectableObservable(o: Observable.error(testError), s: subject)\n        let d = observable.subscribe(onError: { _ in\n            nEvents += 1\n        })\n\n        defer {\n            d.dispose()\n        }\n\n        observable.connect().dispose()\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testRefCount_DeadlockEmpty() {\n        let subject = MySubject<Int>()\n\n        var nEvents = 0\n\n        let observable = TestConnectableObservable(o: Observable.empty(), s: subject)\n        let d = observable.subscribe(onCompleted: {\n            nEvents += 1\n        })\n\n        defer {\n            d.dispose()\n        }\n\n        observable.connect().dispose()\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testRefCount_ConnectsOnFirst() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        let subject = MySubject<Int>()\n\n        let conn = TestConnectableObservable(o: xs.asObservable(), s: subject)\n\n        let res = scheduler.start { conn.refCount() }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [Subscription(200, 250)])\n        XCTAssertTrue(subject.isDisposed)\n    }\n\n    func testRefCount_DoesntConnectsOnFirstInCaseSynchronousCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1)\n        ])\n\n        let subject = PublishSubject<Int>()\n        subject.on(.completed)\n\n        let conn = TestConnectableObservable(o: xs.asObservable(), s: subject)\n\n        let res = scheduler.start { conn.refCount() }\n\n        XCTAssertEqual(res.events, [\n            .completed(200, Int.self)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [])\n    }\n\n    func testRefCount_DoesntConnectsOnFirstInCaseSynchronousError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1)\n        ])\n\n        let subject = PublishSubject<Int>()\n        subject.on(.error(testError))\n\n        let conn = TestConnectableObservable(o: xs.asObservable(), s: subject)\n\n        let res = scheduler.start { conn.refCount() }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError, Int.self)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [])\n    }\n\n    func testRefCount_NotConnected() {\n        _ = TestScheduler(initialClock: 0)\n\n        var disconnected = false\n        var count = 0\n\n        let xs: Observable<Int> = Observable.deferred {\n            count += 1\n            return Observable.create { _ in\n                Disposables.create {\n                    disconnected = true\n                }\n            }\n        }\n\n        let subject = MySubject<Int>()\n\n        let conn = TestConnectableObservable(o: xs, s: subject)\n        let refd = conn.refCount()\n\n        let dis1 = refd.subscribe { _ in () }\n        XCTAssertEqual(1, count)\n        XCTAssertEqual(1, subject.subscribeCount)\n        XCTAssertFalse(disconnected)\n\n        let dis2 = refd.subscribe { _ in () }\n        XCTAssertEqual(1, count)\n        XCTAssertEqual(2, subject.subscribeCount)\n        XCTAssertFalse(disconnected)\n\n        dis1.dispose()\n        XCTAssertFalse(disconnected)\n        dis2.dispose()\n        XCTAssertTrue(disconnected)\n        disconnected = false\n\n        let dis3 = refd.subscribe { _ in () }\n        XCTAssertEqual(2, count)\n        XCTAssertEqual(3, subject.subscribeCount)\n        XCTAssertFalse(disconnected)\n\n        dis3.dispose()\n        XCTAssertTrue(disconnected)\n    }\n\n    func testRefCount_Error() {\n        let xs: Observable<Int> = Observable.error(testError)\n\n        let res = xs.publish().refCount()\n        _ = res.subscribe { event in\n            switch event {\n            case .next:\n                XCTAssertTrue(false)\n            case let .error(error):\n                XCTAssertErrorEqual(error, testError)\n            case .completed:\n                XCTAssertTrue(false)\n            }\n        }\n        _ = res.subscribe { event in\n            switch event {\n            case .next:\n                XCTAssertTrue(false)\n            case let .error(error):\n                XCTAssertErrorEqual(error, testError)\n            case .completed:\n                XCTAssertTrue(false)\n            }\n        }\n    }\n\n    func testRefCount_Publish() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(260, 6),\n            .next(270, 7),\n            .next(280, 8),\n            .next(290, 9),\n            .completed(300)\n        ])\n\n        let res = xs.publish().refCount()\n\n        var d1: Disposable!\n        let o1 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(215) { d1 = res.subscribe(o1) }\n        scheduler.scheduleAt(235) { d1.dispose() }\n\n        var d2: Disposable!\n        let o2 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(225) { d2 = res.subscribe(o2) }\n        scheduler.scheduleAt(275) { d2.dispose() }\n\n        var d3: Disposable!\n        let o3 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(255) { d3 = res.subscribe(o3) }\n        scheduler.scheduleAt(265) { d3.dispose() }\n\n        var d4: Disposable!\n        let o4 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(285) { d4 = res.subscribe(o4) }\n        scheduler.scheduleAt(320) { d4.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(o1.events, [\n            .next(220, 2),\n            .next(230, 3)\n        ])\n\n        XCTAssertEqual(o2.events, [\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(260, 6),\n            .next(270, 7)\n        ])\n\n        XCTAssertEqual(o3.events, [\n            .next(260, 6)\n        ])\n\n        XCTAssertEqual(o4.events, [\n            .next(290, 9),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(215, 275),\n            Subscription(285, 300)\n        ])\n    }\n\n    func testRefCount_synchronousResubscribingOnErrorWorks() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createColdObservable([\n            .next(10, 1),\n            .error(20, testError)\n        ])\n\n        let xs2 = scheduler.createColdObservable([\n            .next(10, 2),\n            .error(30, testError1)\n        ])\n\n        let xs3 = scheduler.createColdObservable([\n            .next(10, 3),\n            .error(40, testError2)\n        ])\n\n        var attempts = 0\n\n        let xs = Observable.deferred { () -> Observable<Int> in\n            defer { attempts += 1 }\n            switch attempts {\n            case 0: return xs1.asObservable()\n            case 1: return xs2.asObservable()\n            default: return xs3.asObservable()\n            }\n        }\n\n        let res = xs.multicast { PublishSubject() }.refCount()\n\n        let o1 = scheduler.createObserver(Int.self)\n        let o2 = scheduler.createObserver(Int.self)\n        let o3 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(215) {\n            _ = res.subscribe { event in\n                o1.on(event)\n                switch event {\n                case .error:\n                    _ = res.subscribe(o1)\n                default: break\n                }\n            }\n        }\n        scheduler.scheduleAt(220) {\n            _ = res.subscribe { event in\n                o2.on(event)\n                switch event {\n                case .error:\n                    _ = res.subscribe(o2)\n                default: break\n                }\n            }\n        }\n\n        scheduler.scheduleAt(400) {\n            _ = res.subscribe(o3)\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(o1.events, [\n            .next(225, 1),\n            .error(235, testError),\n            .next(245, 2),\n            .error(265, testError1)\n        ])\n\n        XCTAssertEqual(o2.events, [\n            .next(225, 1),\n            .error(235, testError),\n            .next(245, 2),\n            .error(265, testError1)\n        ])\n\n        XCTAssertEqual(o3.events, [\n            .next(410, 3),\n            .error(440, testError2)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(215, 235)\n        ])\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(235, 265)\n        ])\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(400, 440)\n        ])\n    }\n\n    func testRefCount_synchronousResubscribingOnCompletedWorks() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs1 = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ])\n\n        let xs2 = scheduler.createColdObservable([\n            .next(10, 2),\n            .completed(30)\n        ])\n\n        let xs3 = scheduler.createColdObservable([\n            .next(10, 3),\n            .completed(40)\n        ])\n\n        var attempts = 0\n\n        let xs = Observable.deferred { () -> Observable<Int> in\n            defer { attempts += 1 }\n            switch attempts {\n            case 0: return xs1.asObservable()\n            case 1: return xs2.asObservable()\n            default: return xs3.asObservable()\n            }\n        }\n\n        let res = xs.multicast { PublishSubject() }.refCount()\n\n        let o1 = scheduler.createObserver(Int.self)\n        let o2 = scheduler.createObserver(Int.self)\n        let o3 = scheduler.createObserver(Int.self)\n        scheduler.scheduleAt(215) {\n            _ = res.subscribe { event in\n                o1.on(event)\n                switch event {\n                case .completed:\n                    _ = res.subscribe(o1)\n                default: break\n                }\n            }\n        }\n        scheduler.scheduleAt(220) {\n            _ = res.subscribe { event in\n                o2.on(event)\n                switch event {\n                case .completed:\n                    _ = res.subscribe(o2)\n                default: break\n                }\n            }\n        }\n\n        scheduler.scheduleAt(400) {\n            _ = res.subscribe(o3)\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(o1.events, [\n            .next(225, 1),\n            .completed(235),\n            .next(245, 2),\n            .completed(265)\n        ])\n\n        XCTAssertEqual(o2.events, [\n            .next(225, 1),\n            .completed(235),\n            .next(245, 2),\n            .completed(265)\n        ])\n\n        XCTAssertEqual(o3.events, [\n            .next(410, 3),\n            .completed(440)\n        ])\n\n        XCTAssertEqual(xs1.subscriptions, [\n            Subscription(215, 235)\n        ])\n        XCTAssertEqual(xs2.subscriptions, [\n            Subscription(235, 265)\n        ])\n        XCTAssertEqual(xs3.subscriptions, [\n            Subscription(400, 440)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testRefCountReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).publish().refCount().subscribe()\n    }\n\n    func testRefCountReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).publish().refCount().subscribe()\n    }\n    #endif\n}\n\nextension ObservableMulticastTest {\n    func testReplayCount_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .error(130, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.debug(\"1\").replay(3) }\n        scheduler.scheduleAt(450, action: { subscription = ys.debug(\"2\").subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 520),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayCount_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .error(90, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(3) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .error(490, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayCount_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(90)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(3) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .completed(490)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayCount_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(130)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(3) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(475) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 520),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayOneCount_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(130)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(1) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 520),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayOneCount_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .error(90, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(1) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .error(490, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayOneCount_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(90)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(1) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .completed(490)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayOneCount_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(90)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replay(1) }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(475) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayAll_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(130)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replayAll() }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 5),\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 520),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayAll_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .error(90, testError)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replayAll() }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 5),\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .error(490, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayAll_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(90)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replayAll() }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(Defaults.disposed) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 5),\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24),\n            .next(480, 25),\n            .completed(490)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 490),\n            Subscription(650, 700)\n        ])\n    }\n\n    func testReplayAll_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 5),\n            .next(20, 9),\n            .next(30, 11),\n            .next(40, 20),\n            .next(50, 22),\n            .next(60, 23),\n            .next(70, 24),\n            .next(80, 25),\n            .completed(130)\n        ])\n\n        var ys: ConnectableObservable<Int>! = nil\n        var subscription: Disposable! = nil\n        var connection: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.replayAll() }\n        scheduler.scheduleAt(450, action: { subscription = ys.subscribe(res) })\n        scheduler.scheduleAt(475) { subscription.dispose() }\n\n        scheduler.scheduleAt(400) { connection = ys.connect() }\n        scheduler.scheduleAt(520) { connection.dispose() }\n\n        scheduler.scheduleAt(650) { connection = ys.connect() }\n        scheduler.scheduleAt(700) { connection.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n            .next(450, 5),\n            .next(450, 9),\n            .next(450, 11),\n            .next(450, 20),\n            .next(450, 22),\n            .next(460, 23),\n            .next(470, 24)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(400, 520),\n            Subscription(650, 700)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testReplayNReleasesResourcesOnComplete() {\n        let replay = Observable<Int>.just(1).replay(1)\n        _ = replay.connect()\n        _ = replay.subscribe()\n    }\n\n    func testReplayNReleasesResourcesOnError() {\n        let replay = Observable<Int>.error(testError).replay(1)\n        _ = replay.connect()\n        _ = replay.subscribe()\n    }\n\n    func testReplayAllReleasesResourcesOnComplete() {\n        let replay = Observable<Int>.just(1).replayAll()\n        _ = replay.connect()\n        _ = replay.subscribe()\n    }\n\n    func testReplayAllReleasesResourcesOnError() {\n        let replay = Observable<Int>.error(testError).replayAll()\n        _ = replay.connect()\n        _ = replay.subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ObserveOnTests.swift",
    "content": "//\n//  Observable+ObserveOnTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxBlocking\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableObserveOnTestBase: RxTest {\n    var lock = NSLock()\n\n    func performLocked(_ action: () -> Void) {\n        lock.lock()\n        action()\n        lock.unlock()\n    }\n\n    override func tearDown() {\n        super.tearDown()\n    }\n}\n\nclass ObservableObserveOnTest: ObservableObserveOnTestBase {}\n\n// observeOn serial scheduler\nextension ObservableObserveOnTest {\n    func runDispatchQueueSchedulerTests(_ tests: (SerialDispatchQueueScheduler) -> Disposable) {\n        let scheduler = SerialDispatchQueueScheduler(internalSerialQueueName: \"testQueue1\")\n        runDispatchQueueSchedulerTests(scheduler, tests: tests).dispose()\n    }\n\n    func runDispatchQueueSchedulerTests(_ scheduler: SerialDispatchQueueScheduler, tests: (SerialDispatchQueueScheduler) -> Disposable) -> Disposable {\n        // simplest possible solution, even though it has horrible efficiency in this case probably\n        let disposable = tests(scheduler)\n        let expectation = expectation(description: \"Wait for all tests to complete\")\n\n        _ = scheduler.schedule(()) { _ in\n            expectation.fulfill()\n            return Disposables.create()\n        }\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssertTrue(e == nil, \"Everything not completed in 1.0 sec.\")\n        }\n\n        return disposable\n    }\n\n    func runDispatchQueueSchedulerMultiplexedTests(_ tests: [(SerialDispatchQueueScheduler) -> Disposable]) {\n        let scheduler = SerialDispatchQueueScheduler(internalSerialQueueName: \"testQueue1\")\n\n        let compositeDisposable = CompositeDisposable()\n\n        for test in tests {\n            _ = compositeDisposable.insert(runDispatchQueueSchedulerTests(scheduler, tests: test))\n        }\n\n        compositeDisposable.dispose()\n    }\n\n    // tests\n\n    func testObserveOnDispatchQueue_DoesPerformWorkOnQueue() {\n        let unitTestsThread = Thread.current\n\n        var didExecute = false\n\n        runDispatchQueueSchedulerTests { scheduler in\n            let observable = Observable.just(0)\n                .observe(on: scheduler)\n            return observable.subscribe(onNext: { _ in\n                didExecute = true\n                XCTAssert(Thread.current !== unitTestsThread)\n            })\n        }\n\n        XCTAssert(didExecute)\n    }\n\n    #if TRACE_RESOURCES\n    func testObserveOnDispatchQueue_EnsureCorrectImplementationIsChosen() {\n        runDispatchQueueSchedulerTests { scheduler in\n            XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 0)\n            let a = Observable.just(0)\n                .observe(on: scheduler)\n            XCTAssertTrue(a == a) // shut up swift compiler :(, we only need to keep this in memory\n            XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 1)\n            return Disposables.create()\n        }\n\n        XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 0)\n    }\n\n    func testObserveOnDispatchQueue_DispatchQueueSchedulerIsSerial() {\n        let numberOfConcurrentEvents = AtomicInt(0)\n        let numberOfExecutions = AtomicInt(0)\n        runDispatchQueueSchedulerTests { scheduler in\n            XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 0)\n            let action = { (_: Void) -> Disposable in\n                XCTAssertEqual(increment(numberOfConcurrentEvents), 0)\n                self.sleep(0.1) // should be enough to block the queue, so if it's concurrent, it will fail\n                XCTAssertEqual(decrement(numberOfConcurrentEvents), 1)\n                increment(numberOfExecutions)\n                return Disposables.create()\n            }\n            _ = scheduler.schedule((), action: action)\n            _ = scheduler.schedule((), action: action)\n            return Disposables.create()\n        }\n\n        XCTAssertEqual(Resources.numberOfSerialDispatchQueueObservables, 0)\n        XCTAssertEqual(globalLoad(numberOfExecutions), 2)\n    }\n    #endif\n\n    func testObserveOnDispatchQueue_DeadlockErrorImmediately() {\n        var nEvents = 0\n\n        runDispatchQueueSchedulerTests { scheduler in\n            let observable: Observable<Int> = Observable.error(testError).observe(on: scheduler)\n            return observable.subscribe(onError: { _ in\n                nEvents += 1\n            })\n        }\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testObserveOnDispatchQueue_DeadlockEmpty() {\n        var nEvents = 0\n\n        runDispatchQueueSchedulerTests { scheduler in\n            let observable: Observable<Int> = Observable.empty().observe(on: scheduler)\n\n            return observable.subscribe(onCompleted: {\n                nEvents += 1\n            })\n        }\n\n        XCTAssertEqual(nEvents, 1)\n    }\n\n    func testObserveOnDispatchQueue_Never() {\n        runDispatchQueueSchedulerTests { scheduler in\n            let xs: Observable<Int> = Observable.never()\n            return xs\n                .observe(on: scheduler)\n                .subscribe(onNext: { _ in\n                    XCTAssert(false)\n                })\n        }\n    }\n\n    func testObserveOnDispatchQueue_Simple() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        runDispatchQueueSchedulerMultiplexedTests([\n            { scheduler in\n                let subscription = (xs.observe(on: scheduler)).subscribe(observer)\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.next(0))\n\n                return subscription\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0)\n                ])\n                xs.on(.next(1))\n                xs.on(.next(2))\n                return Disposables.create()\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0),\n                    .next(1),\n                    .next(2)\n                ])\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.completed)\n                return Disposables.create()\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0),\n                    .next(1),\n                    .next(2),\n                    .completed()\n                ])\n                XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n                return Disposables.create()\n            }\n        ])\n    }\n\n    func testObserveOnDispatchQueue_Empty() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        runDispatchQueueSchedulerMultiplexedTests([\n            { scheduler in\n                let subscription = (xs.observe(on: scheduler)).subscribe(observer)\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.completed)\n                return subscription\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .completed()\n                ])\n                XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n                return Disposables.create()\n            }\n        ])\n    }\n\n    func testObserveOnDispatchQueue_Error() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        runDispatchQueueSchedulerMultiplexedTests([\n            { scheduler in\n                let subscription = (xs.observe(on: scheduler)).subscribe(observer)\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.next(0))\n\n                return subscription\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0)\n                ])\n                xs.on(.next(1))\n                xs.on(.next(2))\n                return Disposables.create()\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0),\n                    .next(1),\n                    .next(2)\n                ])\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.error(testError))\n                return Disposables.create()\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0),\n                    .next(1),\n                    .next(2),\n                    .error(testError)\n                ])\n                XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n                return Disposables.create()\n            }\n        ])\n    }\n\n    func testObserveOnDispatchQueue_Dispose() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n        var subscription: Disposable!\n\n        runDispatchQueueSchedulerMultiplexedTests([\n            { scheduler in\n                subscription = (xs.observe(on: scheduler)).subscribe(observer)\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                xs.on(.next(0))\n\n                return subscription\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0)\n                ])\n\n                XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n                subscription.dispose()\n                XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n\n                xs.on(.error(testError))\n\n                return Disposables.create()\n            },\n            { _ in\n                XCTAssertEqual(observer.events, [\n                    .next(0)\n                ])\n                XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n                return Disposables.create()\n            }\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testObserveOnSerialReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).observe(on: MainScheduler.instance).subscribe()\n    }\n\n    func testObserveOnSerialReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).observe(on: MainScheduler.instance).subscribe()\n    }\n    #endif\n}\n\n// Because of `self.wait(for: [blockingTheSerialScheduler], timeout: 1.0)`.\n// Testing this on Unix should be enough.\n#if !os(Linux)\n// Test event is cancelled properly.\nextension ObservableObserveOnTest {\n    func testDisposeWithEnqueuedElement() {\n        let emit = PublishSubject<Int>()\n        let blockingTheSerialScheduler = expectation(description: \"blocking\")\n        let unblock = expectation(description: \"unblock\")\n        let testDone = expectation(description: \"test done\")\n        let scheduler = SerialDispatchQueueScheduler(qos: .default)\n        var events: [Event<Int>] = []\n        let subscription = emit.observe(on: scheduler).subscribe { update in\n            switch update {\n            case let .next(value):\n                if value == 0 {\n                    blockingTheSerialScheduler.fulfill()\n                    self.wait(for: [unblock], timeout: 1.0)\n                }\n            default:\n                break\n            }\n            events.append(update)\n        }\n        emit.on(.next(0))\n        wait(for: [blockingTheSerialScheduler], timeout: 1.0)\n        emit.on(.next(1))\n        _ = scheduler.schedule(()) { _ in\n            testDone.fulfill()\n            return Disposables.create()\n        }\n        subscription.dispose()\n        unblock.fulfill()\n        wait(for: [testDone], timeout: 1.0)\n        XCTAssertEqual(events, [.next(0)])\n    }\n\n    func testDisposeWithEnqueuedError() {\n        let emit = PublishSubject<Int>()\n        let blockingTheSerialScheduler = expectation(description: \"blocking\")\n        let unblock = expectation(description: \"unblock\")\n        let testDone = expectation(description: \"test done\")\n        let scheduler = SerialDispatchQueueScheduler(qos: .default)\n        var events: [Event<Int>] = []\n        let subscription = emit.observe(on: scheduler).subscribe { update in\n            switch update {\n            case let .next(value):\n                if value == 0 {\n                    blockingTheSerialScheduler.fulfill()\n                    self.wait(for: [unblock], timeout: 1.0)\n                }\n            default:\n                break\n            }\n            events.append(update)\n        }\n        emit.on(.next(0))\n        wait(for: [blockingTheSerialScheduler], timeout: 1.0)\n        emit.on(.error(TestError.dummyError))\n        _ = scheduler.schedule(()) { _ in\n            testDone.fulfill()\n            return Disposables.create()\n        }\n        subscription.dispose()\n        unblock.fulfill()\n        wait(for: [testDone], timeout: 1.0)\n        XCTAssertEqual(events, [.next(0)])\n    }\n\n    func testDisposeWithEnqueuedCompleted() {\n        let emit = PublishSubject<Int>()\n        let blockingTheSerialScheduler = expectation(description: \"blocking\")\n        let unblock = expectation(description: \"unblock\")\n        let testDone = expectation(description: \"test done\")\n        let scheduler = SerialDispatchQueueScheduler(qos: .default)\n        var events: [Event<Int>] = []\n        let subscription = emit.observe(on: scheduler).subscribe { update in\n            switch update {\n            case let .next(value):\n                if value == 0 {\n                    blockingTheSerialScheduler.fulfill()\n                    self.wait(for: [unblock], timeout: 1.0)\n                }\n            default:\n                break\n            }\n            events.append(update)\n        }\n        emit.on(.next(0))\n        wait(for: [blockingTheSerialScheduler], timeout: 1.0)\n        emit.on(.completed)\n        _ = scheduler.schedule(()) { _ in\n            testDone.fulfill()\n            return Disposables.create()\n        }\n        subscription.dispose()\n        unblock.fulfill()\n        wait(for: [testDone], timeout: 1.0)\n        XCTAssertEqual(events, [.next(0)])\n    }\n}\n#endif\n\n// observeOn concurrent scheduler\nclass ObservableObserveOnTestConcurrentSchedulerTest: ObservableObserveOnTestBase {\n    func createScheduler() -> ImmediateSchedulerType {\n        let operationQueue = OperationQueue()\n        operationQueue.maxConcurrentOperationCount = 8\n        return OperationQueueScheduler(operationQueue: operationQueue)\n    }\n\n    #if TRACE_RESOURCES\n    func testObserveOn_EnsureCorrectImplementationIsChosen() {\n        let scheduler = createScheduler()\n\n        XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 0)\n        _ = Observable.just(0).observe(on: scheduler)\n        sleep(0.1)\n        XCTAssert(Resources.numberOfSerialDispatchQueueObservables == 0)\n    }\n    #endif\n\n    func testObserveOn_EnsureTestsAreExecutedWithRealConcurrentScheduler() {\n        var events: [String] = []\n\n        let stop = BehaviorSubject(value: 0)\n\n        #if os(Linux)\n        /// A regression in the Swift 5.1 compiler causes a hang\n        /// when using OperationQueue concurrency:\n        /// https://bugs.swift.org/browse/SR-11647\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n        #else\n        let scheduler = createScheduler()\n        #endif\n\n        let condition = NSCondition()\n\n        var writtenStarted = 0\n        var writtenEnded = 0\n\n        let concurrent = { () -> Disposable in\n            self.performLocked {\n                events.append(\"Started\")\n            }\n\n            condition.lock()\n            writtenStarted += 1\n            condition.signal()\n            while writtenStarted < 2 {\n                condition.wait()\n            }\n            condition.unlock()\n\n            self.performLocked {\n                events.append(\"Ended\")\n            }\n\n            condition.lock()\n            writtenEnded += 1\n            condition.signal()\n            while writtenEnded < 2 {\n                condition.wait()\n            }\n            condition.unlock()\n\n            stop.on(.completed)\n\n            return Disposables.create()\n        }\n\n        _ = scheduler.schedule((), action: concurrent)\n\n        _ = scheduler.schedule((), action: concurrent)\n\n        _ = try! stop.toBlocking().last()\n\n        XCTAssertEqual(events, [\"Started\", \"Started\", \"Ended\", \"Ended\"])\n    }\n\n    func testObserveOn_Never() {\n        let scheduler = createScheduler()\n\n        let xs: Observable<Int> = Observable.never()\n        let subscription = xs\n            .observe(on: scheduler)\n            .subscribe(onNext: { _ in\n                XCTAssert(false)\n            })\n\n        sleep(0.1)\n\n        subscription.dispose()\n    }\n\n    func testObserveOn_Simple() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        let scheduler = createScheduler()\n\n        let subscription = (xs.observe(on: scheduler)).subscribe(observer)\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.next(0))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0)\n        ])\n        xs.on(.next(1))\n        xs.on(.next(2))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0),\n            .next(1),\n            .next(2)\n        ])\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.completed)\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0),\n            .next(1),\n            .next(2),\n            .completed()\n        ])\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n\n        subscription.dispose()\n\n        sleep(0.1)\n    }\n\n    func testObserveOn_Empty() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        let scheduler = createScheduler()\n\n        _ = xs.observe(on: scheduler).subscribe(observer)\n\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.completed)\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .completed()\n        ])\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n    }\n\n    func testObserveOn_ConcurrentSchedulerIsSerialized() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        var executed = false\n\n        let scheduler = createScheduler()\n\n        let res = xs\n            .observe(on: scheduler)\n            .map { v -> Int in\n                if v == 0 {\n                    self.sleep(0.1) // 100 ms is enough\n                    executed = true\n                }\n                return v\n            }\n        let subscription = res.subscribe(observer)\n\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.next(0))\n        xs.on(.next(1))\n        xs.on(.completed)\n\n        sleep(0.3)\n\n        XCTAssertEqual(observer.events, [\n            .next(0),\n            .next(1),\n            .completed()\n        ])\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n\n        XCTAssert(executed)\n\n        subscription.dispose()\n    }\n\n    func testObserveOn_Error() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        let scheduler = createScheduler()\n\n        _ = xs.observe(on: scheduler).subscribe(observer)\n\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.next(0))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0)\n        ])\n        xs.on(.next(1))\n        xs.on(.next(2))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0),\n            .next(1),\n            .next(2)\n        ])\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.error(testError))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0),\n            .next(1),\n            .next(2),\n            .error(testError)\n        ])\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n    }\n\n    func testObserveOn_Dispose() {\n        let xs = PrimitiveHotObservable<Int>()\n        let observer = PrimitiveMockObserver<Int>()\n\n        let scheduler = createScheduler()\n        let subscription = xs.observe(on: scheduler).subscribe(observer)\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        xs.on(.next(0))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0)\n        ])\n\n        XCTAssert(xs.subscriptions == [SubscribedToHotObservable])\n        subscription.dispose()\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n\n        xs.on(.error(testError))\n\n        sleep(0.1)\n\n        XCTAssertEqual(observer.events, [\n            .next(0)\n        ])\n        XCTAssert(xs.subscriptions == [UnsunscribedFromHotObservable])\n    }\n\n    #if TRACE_RESOURCES\n    func testObserveOnReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).observe(on: testScheduler).subscribe()\n        testScheduler.start()\n    }\n\n    func testObserveOnReleasesResourcesOnError() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).observe(on: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n\nfinal class ObservableObserveOnTestConcurrentSchedulerTest2: ObservableObserveOnTestConcurrentSchedulerTest {\n    override func createScheduler() -> ImmediateSchedulerType {\n        ConcurrentDispatchQueueScheduler(qos: .default)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+OptionalTests.swift",
    "content": "//\n//  Observable+OptionalTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableOptionalTest: RxTest {}\n\nextension ObservableOptionalTest {\n    func testFromOptionalSome_immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(optional: Int?.some(5))\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 5),\n            .completed(200)\n        ])\n    }\n\n    func testFromOptionalNone_immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(optional: Int?.none)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func testFromOptionalSome_basic_testScheduler() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(optional: Int?.some(5), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 5),\n            .completed(202)\n        ])\n    }\n\n    func testFromOptionalNone_basic_testScheduler() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(optional: Int?.none, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFromOptionalScheduler1ReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.from(optional: 1 as Int?, scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n\n    func testFromOptionalScheduler2ReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.from(optional: nil as Int?, scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n\n    func testFromOptional1ReleasesResourcesOnComplete() {\n        _ = Observable<Int>.from(optional: 1 as Int?).subscribe()\n    }\n\n    func testFromOptional2ReleasesResourcesOnComplete() {\n        _ = Observable<Int>.from(optional: nil as Int?).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+PrimitiveSequenceTest.swift",
    "content": "//\n//  Observable+PrimitiveSequenceTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservablePrimitiveSequenceTest: RxTest {}\n\nextension ObservablePrimitiveSequenceTest {\n    func testAsSingle_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asSingle()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, RxError.noElements)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAsSingle_One() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asSingle()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(250, 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAsSingle_Many() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asSingle()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(220, RxError.moreThanOneElement)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testAsSingle_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asSingle()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAsSingle_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(205, 2),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asSingle()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAsSingle_subscribeOnSuccess() {\n        var events: [SingleEvent<Int>] = []\n\n        _ = Single.just(1).subscribe(onSuccess: { element in\n            events.append(.success(element))\n        }, onFailure: { error in\n            events.append(.failure(error))\n        })\n\n        XCTAssertEqual(events, [.success(1)])\n    }\n\n    func testAsSingle_subscribeOnError() {\n        var events: [SingleEvent<Int>] = []\n\n        _ = Single.error(testError).subscribe(onSuccess: { element in\n            events.append(.success(element))\n        }, onFailure: { error in\n            events.append(.failure(error))\n        })\n\n        XCTAssertEqual(events, [.failure(testError)])\n    }\n\n    #if TRACE_RESOURCES\n    func testAsSingleReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).asSingle().subscribe { _ in }\n    }\n\n    func testAsSingleReleasesResourcesOnError1() {\n        _ = Observable<Int>.error(testError).asSingle().subscribe { _ in }\n    }\n\n    func testAsSingleReleasesResourcesOnError2() {\n        _ = Observable<Int>.of(1, 2).asSingle().subscribe { _ in }\n    }\n    #endif\n}\n\nextension ObservablePrimitiveSequenceTest {\n    func testFirst_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res: TestableObserver<Int> = scheduler.start {\n            xs.first().map { $0 ?? -1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(250, -1),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testFirst_One() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.first().map { $0 ?? -1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(210)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testFirst_Many() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.first().map { $0 ?? -1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(210)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testFirst_ManyWithoutCompletion() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(160, 2),\n            .next(280, 3),\n            .next(250, 4),\n            .next(300, 5)\n        ])\n\n        let res = scheduler.start {\n            xs.first().map { $0 ?? -1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(250, 4),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testFirst_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.first().map { $0 ?? -1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFirstReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).first().subscribe { _ in }\n    }\n\n    func testFirstReleasesResourcesOnError1() {\n        _ = Observable<Int>.error(testError).first().subscribe { _ in }\n    }\n    #endif\n}\n\nextension ObservablePrimitiveSequenceTest {\n    func testAsMaybe_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asMaybe()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAsMaybe_One() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asMaybe()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(250, 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAsMaybe_Many() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asMaybe()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(220, RxError.moreThanOneElement)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testAsMaybe_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asMaybe()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAsMaybe_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(205, 2),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asMaybe()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAsMaybe_subscribeOnSuccess() {\n        var events: [MaybeEvent<Int>] = []\n\n        _ = Maybe.just(1).subscribe(onSuccess: { element in\n            events.append(.success(element))\n        }, onError: { error in\n            events.append(.error(error))\n        }, onCompleted: {\n            events.append(.completed)\n        })\n\n        XCTAssertEqual(events, [.success(1)])\n    }\n\n    func testAsMaybe_subscribeOnError() {\n        var events: [MaybeEvent<Int>] = []\n\n        _ = Maybe.error(testError).subscribe(onSuccess: { element in\n            events.append(.success(element))\n        }, onError: { error in\n            events.append(.error(error))\n        }, onCompleted: {\n            events.append(.completed)\n        })\n\n        XCTAssertEqual(events, [.error(testError)])\n    }\n\n    func testAsMaybe_subscribeOnCompleted() {\n        var events: [MaybeEvent<Int>] = []\n\n        _ = Maybe.empty().subscribe(onSuccess: { element in\n            events.append(.success(element))\n        }, onError: { error in\n            events.append(.error(error))\n        }, onCompleted: {\n            events.append(.completed)\n        })\n\n        XCTAssertEqual(events, [.completed])\n    }\n\n    #if TRACE_RESOURCES\n    func testAsMaybeReleasesResourcesOnComplete1() {\n        _ = Observable<Int>.empty().asMaybe().subscribe { _ in }\n    }\n\n    func testAsMaybeReleasesResourcesOnComplete2() {\n        _ = Observable<Int>.just(1).asMaybe().subscribe { _ in }\n    }\n\n    func testAsMaybeReleasesResourcesOnError1() {\n        _ = Observable<Int>.error(testError).asMaybe().subscribe { _ in }\n    }\n\n    func testAsMaybeReleasesResourcesOnError2() {\n        _ = Observable<Int>.of(1, 2).asMaybe().subscribe { _ in }\n    }\n    #endif\n}\n\nextension ObservablePrimitiveSequenceTest {\n    func testAsCompletable_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .completed(250, Never.self),\n            .error(260, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.asCompletable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testAsCompletable_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .error(210, testError, Never.self)\n        ])\n\n        let res = scheduler.start {\n            xs.asCompletable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testAsCompletable_subscribeOnCompleted() {\n        var events: [CompletableEvent] = []\n\n        _ = Completable.empty().subscribe(onCompleted: {\n            events.append(.completed)\n        }, onError: { error in\n            events.append(.error(error))\n        })\n\n        XCTAssertEqual(events, [.completed])\n    }\n\n    func testAsCompletable_subscribeOnError() {\n        var events: [CompletableEvent] = []\n\n        _ = Completable.error(testError).subscribe(onCompleted: {\n            events.append(.completed)\n        }, onError: { error in\n            events.append(.error(error))\n        })\n\n        XCTAssertEqual(events, [.error(testError)])\n    }\n\n    #if TRACE_RESOURCES\n    func testAsCompletableReleasesResourcesOnComplete() {\n        _ = Observable<Never>.empty().asCompletable().subscribe { _ in }\n    }\n\n    func testAsCompletableReleasesResourcesOnError() {\n        _ = Observable<Never>.error(testError).asCompletable().subscribe { _ in }\n    }\n    #endif\n\n    func testCompletable_merge() {\n        let factories: [(Completable, Completable) -> Completable] =\n            [\n                { ys1, ys2 in Completable.zip(ys1, ys2) },\n                { ys1, ys2 in Completable.zip([ys1, ys2]) },\n                { ys1, ys2 in Completable.zip(AnyCollection([ys1, ys2])) }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = scheduler.createHotObservable([\n                .completed(250, Never.self),\n                .error(260, testError)\n            ])\n\n            let ys2 = scheduler.createHotObservable([\n                .completed(300, Never.self)\n            ])\n\n            let res = scheduler.start {\n                factory(ys1.asCompletable(), ys2.asCompletable())\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(300)\n            ])\n\n            XCTAssertEqual(ys1.subscriptions, [\n                Subscription(200, 250)\n            ])\n\n            XCTAssertEqual(ys2.subscriptions, [\n                Subscription(200, 300)\n            ])\n        }\n    }\n\n    func testCompletable_concat() {\n        let factories: [(Completable, Completable) -> Completable] =\n            [\n                { ys1, ys2 in Completable.concat(ys1, ys2) },\n                { ys1, ys2 in Completable.concat([ys1, ys2]) },\n                { ys1, ys2 in Completable.concat(AnyCollection([ys1, ys2])) },\n                { ys1, ys2 in ys1.concat(ys2) }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let ys1 = scheduler.createHotObservable([\n                .completed(250, Never.self),\n                .error(260, testError)\n            ])\n\n            let ys2 = scheduler.createHotObservable([\n                .completed(300, Never.self)\n            ])\n\n            let res = scheduler.start {\n                factory(ys1.asCompletable(), ys2.asCompletable())\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(300)\n            ])\n\n            XCTAssertEqual(ys1.subscriptions, [\n                Subscription(200, 250)\n            ])\n\n            XCTAssertEqual(ys2.subscriptions, [\n                Subscription(250, 300)\n            ])\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+RangeTests.swift",
    "content": "//\n//  Observable+RangeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableRangeTest: RxTest {}\n\nextension ObservableRangeTest {\n    func testRange_Boundaries() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.range(start: Int.max, count: 1, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, Int.max),\n            .completed(202)\n        ])\n    }\n\n    func testRange_ZeroCount() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable.range(start: 0, count: 0, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n    }\n\n    func testRange_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start(disposed: 204) {\n            Observable.range(start: -10, count: 5, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, -10),\n            .next(202, -9),\n            .next(203, -8)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testRangeSchedulerReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.range(start: 0, count: 1, scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n\n    func testRangeReleasesResourcesOnComplete() {\n        _ = Observable<Int>.range(start: 0, count: 1).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ReduceTests.swift",
    "content": "//\n//  Observable+ReduceTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableReduceTest: RxTest {}\n\nextension ObservableReduceTest {\n    func test_ReduceWithSeed_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) }\n\n        let correctMessages = Recorded.events(\n            .next(250, 42),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeed_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 24),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) }\n\n        let correctMessages = Recorded.events(\n            .next(250, 42 + 24),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeed_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) }\n\n        let correctMessages = [\n            Recorded.error(210, testError, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 210)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeed_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) }\n\n        let correctMessages: [Recorded<Event<Int>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeed_Range() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, 4),\n            .completed(260)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) }\n\n        let correctMessages = Recorded.events(\n            .next(260, 42 + 0 + 1 + 2 + 3 + 4),\n            .completed(260)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 260)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeed_AccumulatorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, 4),\n            .completed(260)\n        ])\n\n        let res = scheduler.start {\n            xs.reduce(42) { (a: Int, x: Int) throws -> Int in\n                if x < 3 {\n                    return a + x\n                } else {\n                    throw testError\n                }\n            }\n        }\n\n        let correctMessages = [\n            Recorded.error(240, testError, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 240)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +) { $0 * 5 } }\n\n        let correctMessages = Recorded.events(\n            .next(250, 42 * 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 24),\n            .completed(250)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +, mapResult: { $0 * 5 }) }\n\n        let correctMessages = Recorded.events(\n            .next(250, (42 + 24) * 5),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +, mapResult: { $0 * 5 }) }\n\n        let correctMessages = [\n            Recorded.error(210, testError, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 210)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +, mapResult: { $0 * 5 }) }\n\n        let correctMessages: [Recorded<Event<Int>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_Range() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, 4),\n            .completed(260)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +, mapResult: { $0 * 5 }) }\n\n        let correctMessages = Recorded.events(\n            .next(260, (42 + 0 + 1 + 2 + 3 + 4) * 5),\n            .completed(260)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 260)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_AccumulatorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, 4),\n            .completed(260)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: { a, x in if x < 3 { return a + x } else { throw testError } }, mapResult: { $0 * 5 }) }\n\n        let correctMessages = [\n            Recorded.error(240, testError, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 240)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ReduceWithSeedAndResult_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 0),\n            .next(220, 1),\n            .next(230, 2),\n            .next(240, 3),\n            .next(250, 4),\n            .completed(260)\n        ])\n\n        let res = scheduler.start { xs.reduce(42, accumulator: +, mapResult: { (_: Int) throws -> Int in throw testError }) }\n\n        let correctMessages = [\n            Recorded.error(260, testError, Int.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 260)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    #if TRACE_RESOURCES\n    func testReduceReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).reduce(0, accumulator: +, mapResult: { $0 }).subscribe()\n    }\n\n    func testReduceReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).reduce(0, accumulator: +).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+RepeatTests.swift",
    "content": "//\n//  Observable+RepeatTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableRepeatTest: RxTest {}\n\nextension ObservableRepeatTest {\n    func testRepeat_Element() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start(disposed: 207) {\n            Observable.repeatElement(42, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 42),\n            .next(202, 42),\n            .next(203, 42),\n            .next(204, 42),\n            .next(205, 42),\n            .next(206, 42)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+RetryWhenTests.swift",
    "content": "//\n//  Observable+RetryWhenTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nimport Foundation\n\nclass ObservableRetryWhenTest: RxTest {}\n\nstruct CustomErrorType: Error {}\n\nstruct RetryWhenError: Error {\n    init() {}\n}\n\nlet retryError: RetryWhenError = .init()\n\n// retryWhen\nextension ObservableRetryWhenTest {\n    func testRetryWhen_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let empty = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(210)\n        ])\n\n        let res = scheduler.start(disposed: 300) {\n            xs.retry { _ in\n                empty\n            }\n        }\n\n        let correct = [\n            Recorded.completed(250, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testRetryWhen_ObservableNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .error(250, retryError)\n        ])\n\n        let never = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            xs.retry { _ in\n                never\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testRetryWhen_ObservableNeverComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let never = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            xs.retry { _ in\n                never\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testRetryWhen_ObservableEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(100, 1),\n            .next(150, 2),\n            .next(200, 3),\n            .completed(250)\n        ])\n\n        let empty = scheduler.createHotObservable([\n            .next(150, 0),\n            .completed(0)\n        ])\n\n        let res = scheduler.start {\n            xs.retry { _ in\n                empty\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(300, 1),\n            .next(350, 2),\n            .next(400, 3),\n            .completed(450)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 450)\n        ])\n    }\n\n    func testRetryWhen_ObservableNextError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .error(30, retryError),\n            .completed(40)\n        ])\n\n        let res = scheduler.start(disposed: 300) {\n            xs.retry { (errors: Observable<RetryWhenError>) in\n                errors.scan(0) { _a, _ in\n                    var a = _a\n                    a += 1\n                    if a == 2 {\n                        throw testError1\n                    }\n                    return a\n                }\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 1),\n            .next(220, 2),\n            .next(240, 1),\n            .next(250, 2),\n            .error(260, testError1)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230),\n            Subscription(230, 260)\n        ])\n    }\n\n    func testRetryWhen_ObservableComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .error(30, retryError),\n            .completed(40)\n        ])\n\n        let empty = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.retry { _ in\n                empty.asObservable()\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testRetryWhen_ObservableNextComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .error(30, retryError),\n            .completed(40)\n        ])\n\n        let res = scheduler.start(disposed: 300) {\n            xs.retry { (errors: Observable<RetryWhenError>) in\n                errors.scan(0) { a, _ in\n                    a + 1\n                }.take(while: { (num: Int) -> Bool in\n                    return num < 2\n                })\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 1),\n            .next(220, 2),\n            .next(240, 1),\n            .next(250, 2),\n            .completed(260)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230),\n            Subscription(230, 260)\n        ])\n    }\n\n    func testRetryWhen_ObservableInfinite() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .error(30, retryError),\n            .completed(40)\n        ])\n\n        let never = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            xs.retry { _ in\n                never\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(210, 1),\n            .next(220, 2)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testRetryWhen_Incremental_BackOff() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        // just fails\n        let xs = scheduler.createColdObservable([\n            .next(5, 1),\n            .error(10, retryError)\n        ])\n\n        let maxAttempts = 4\n\n        let res = scheduler.start(disposed: 800) {\n            xs.retry { (errors: Observable<Swift.Error>) in\n                errors.enumerated().flatMap { a, e -> Observable<Int64> in\n                    if a >= maxAttempts - 1 {\n                        return Observable.error(e)\n                    }\n\n                    return Observable<Int64>.timer(.seconds((a + 1) * 50), scheduler: scheduler)\n                }\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(205, 1),\n            .next(265, 1),\n            .next(375, 1),\n            .next(535, 1),\n            .error(540, retryError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210),\n            Subscription(260, 270),\n            Subscription(370, 380),\n            Subscription(530, 540)\n        ])\n    }\n\n    func testRetryWhen_IgnoresDifferentErrorTypes() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        // just fails\n        let xs = scheduler.createColdObservable([\n            .next(5, 1),\n            .error(10, retryError)\n        ])\n\n        let res = scheduler.start(disposed: 800) {\n            xs.retry { (errors: Observable<CustomErrorType>) in\n                errors\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(205, 1),\n            .error(210, retryError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testRetryWhen_tailRecursiveOptimizationsTest() {\n        var count = 1\n        let sequenceSendingImmediateError: Observable<Int> = Observable.create { observer in\n            observer.on(.next(0))\n            observer.on(.next(1))\n            observer.on(.next(2))\n            if count < 2 {\n                observer.on(.error(retryError))\n                count += 1\n            }\n            observer.on(.next(3))\n            observer.on(.next(4))\n            observer.on(.next(5))\n            observer.on(.completed)\n\n            return Disposables.create()\n        }\n\n        _ = sequenceSendingImmediateError\n            .retry { errors in\n                errors\n            }\n            .subscribe { _ in\n            }\n    }\n\n    #if TRACE_RESOURCES\n    func testRetryWhen1ReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).retry { e in e }.subscribe()\n    }\n\n    func testRetryWhen2ReleasesResourcesOnComplete() {\n        _ = Observable<Int>.error(testError).retry { e in e.take(1) }.subscribe()\n    }\n\n    func testRetryWhen1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).retry { e in\n            e.flatMapLatest { e in\n                Observable<Int>.error(e)\n            }\n        }.subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SampleTests.swift",
    "content": "//\n//  Observable+SampleTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSampleTest: RxTest {}\n\nextension ObservableSampleTest {\n    func testSample_Sampler_DefaultValue() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .next(300, 5),\n            .next(310, 6),\n            .completed(400)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .next(320, \"baz\"),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys, defaultValue: 0)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 0),\n            .next(250, 3),\n            .next(260, 0),\n            .next(320, 6),\n            .next(500, 0),\n            .completed(500)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 500)\n        ])\n    }\n\n    func testSample_Sampler_SamplerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .next(300, 5),\n            .next(310, 6),\n            .completed(400)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .error(320, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys)\n        }\n\n        let correct = Recorded.events(\n            .next(250, 3),\n            .error(320, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 320)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 320)\n        ])\n    }\n\n    func testSample_Sampler_Simple1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .next(300, 5),\n            .next(310, 6),\n            .completed(400)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .next(320, \"baz\"),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys)\n        }\n\n        let correct = Recorded.events(\n            .next(250, 3),\n            .next(320, 6),\n            .completed(500)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 500)\n        ])\n    }\n\n    func testSample_Sampler_Simple2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .next(300, 5),\n            .next(310, 6),\n            .next(360, 7),\n            .completed(400)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .next(320, \"baz\"),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys)\n        }\n\n        let correct = Recorded.events(\n            .next(250, 3),\n            .next(320, 6),\n            .next(500, 7),\n            .completed(500)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 500)\n        ])\n    }\n\n    func testSample_Sampler_Simple3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .completed(300)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .next(320, \"baz\"),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys)\n        }\n\n        let correct = Recorded.events(\n            .next(250, 3),\n            .next(320, 4),\n            .completed(320)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 320)\n        ])\n    }\n\n    func testSample_Sampler_SourceThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .next(240, 3),\n            .next(290, 4),\n            .next(300, 5),\n            .next(310, 6),\n            .error(320, testError)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(150, \"\"),\n            .next(210, \"bar\"),\n            .next(250, \"foo\"),\n            .next(260, \"qux\"),\n            .next(300, \"baz\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.sample(ys)\n        }\n\n        let correct = Recorded.events(\n            .next(250, 3),\n            .next(300, 5),\n            .error(320, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 320)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 320)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testSampleReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).throttle(.seconds(0), latest: true, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testSamepleReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).throttle(.seconds(0), latest: true, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ScanTests.swift",
    "content": "//\n//  Observable+ScanTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableScanTest: RxTest {}\n\nextension ObservableScanTest {\n    func testScan_Seed_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(0, 0)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testScan_Into_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(0, 0)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { $0 += $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testScan_Seed_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Into_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { $0 += $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Seed_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, seed + 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Into_Accumulate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { $0 += $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, seed + 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Seed_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Into_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(250, testError)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { $0 += $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Seed_SomeData() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { $0 + $1 }\n        }\n\n        let messages = Recorded.events(\n            .next(210, seed + 2),\n            .next(220, seed + 2 + 3),\n            .next(230, seed + 2 + 3 + 4),\n            .next(240, seed + 2 + 3 + 4 + 5),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Into_SomeData() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { $0 += $1 }\n        }\n\n        let messages = Recorded.events(\n            .next(210, seed + 2),\n            .next(220, seed + 2 + 3),\n            .next(230, seed + 2 + 3 + 4),\n            .next(240, seed + 2 + 3 + 4 + 5),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testScan_Seed_AccumulatorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(seed) { a, e throws -> Int in\n                if e == 4 {\n                    throw testError\n                } else {\n                    return a + e\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, seed + 2),\n            .next(220, seed + 2 + 3),\n            .error(230, testError)\n        ] as [Recorded<Event<Int>>])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testScan_Into_AccumulatorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let seed = 42\n\n        let res = scheduler.start {\n            xs.scan(into: seed) { a, e in\n                if e == 4 {\n                    throw testError\n                } else {\n                    a += e\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, seed + 2),\n            .next(220, seed + 2 + 3),\n            .error(230, testError)\n        ] as [Recorded<Event<Int>>])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testScanReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).scan(0, accumulator: +).subscribe()\n    }\n\n    func testScan1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).scan(0, accumulator: +).subscribe()\n    }\n\n    func testScan2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).scan(0, accumulator: { _, _ in throw testError }).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SequenceTests.swift",
    "content": "//\n//  Observable+SequenceTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSequenceTest: RxTest {}\n\nextension ObservableSequenceTest {\n    func testFromArray_complete_immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from([3, 1, 2, 4], scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 4),\n            .completed(205)\n        ])\n    }\n\n    func testFromArray_complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from([3, 1, 2, 4], scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 4),\n            .completed(205)\n        ])\n    }\n\n    func testFromArray_dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start(disposed: 203) {\n            Observable.from([3, 1, 2, 4], scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFromArrayReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable.from([1], scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n\nextension ObservableSequenceTest {\n    func testSequenceOf_complete_immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.of(3, 1, 2, 4)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 3),\n            .next(200, 1),\n            .next(200, 2),\n            .next(200, 4),\n            .completed(200)\n        ])\n    }\n\n    func testSequenceOf_complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.of(3, 1, 2, 4, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 4),\n            .completed(205)\n        ])\n    }\n\n    func testSequenceOf_dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start(disposed: 203) {\n            Observable.of(3, 1, 2, 4, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testOfReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.of(11, scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n\nextension ObservableSequenceTest {\n    func testFromAnySequence_basic_immediate() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(AnySequence([3, 1, 2, 4]), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 4),\n            .completed(205)\n        ])\n    }\n\n    func testToObservableAnySequence_basic_testScheduler() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.start {\n            Observable.from(AnySequence([3, 1, 2, 4]), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 3),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 4),\n            .completed(205)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testFromSequenceReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.from(AnySequence([3, 1, 2, 4]), scheduler: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ShareReplayScopeTests.swift",
    "content": "//\n//  Observable+ShareReplayScopeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/28/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableShareReplayScopeTests: RxTest {}\n\nextension ObservableShareReplayScopeTests {\n    func test_testDefaultArguments() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(320, 6),\n            .next(550, 7)\n        ])\n\n        var subscription1: Disposable! = nil\n        var subscription2: Disposable! = nil\n        var subscription3: Disposable! = nil\n\n        let res1 = scheduler.createObserver(Int.self)\n        let res2 = scheduler.createObserver(Int.self)\n        let res3 = scheduler.createObserver(Int.self)\n\n        var ys: Observable<Int>! = nil\n\n        scheduler.scheduleAt(Defaults.created) { ys = xs.share() }\n\n        scheduler.scheduleAt(200) { subscription1 = ys.subscribe(res1) }\n        scheduler.scheduleAt(300) { subscription2 = ys.subscribe(res2) }\n\n        scheduler.scheduleAt(350) { subscription1.dispose() }\n        scheduler.scheduleAt(400) { subscription2.dispose() }\n\n        scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n        scheduler.scheduleAt(600) { subscription3.dispose() }\n\n        scheduler.start()\n\n        XCTAssertEqual(res1.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(320, 6)\n        ])\n\n        let replayedEvents2 = (0 ..< 0).map { Recorded.next(300, 6 - 0 + $0) }\n\n        XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6)])\n        XCTAssertEqual(res3.events, [.next(550, 7)])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400),\n            Subscription(500, 600)\n        ])\n    }\n\n    func test_forever_receivesCorrectElements() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .forever) }\n\n            scheduler.scheduleAt(200) { subscription1 = ys.subscribe(res1) }\n            scheduler.scheduleAt(300) { subscription2 = ys.subscribe(res2) }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6)\n            ])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n            let replayedEvents3 = (0 ..< i).map { Recorded.next(500, 7 - i + $0) }\n\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6)])\n            XCTAssertEqual(res3.events, replayedEvents3 + [.next(550, 7)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 400),\n                Subscription(500, 600)\n            ])\n        }\n    }\n\n    func test_whileConnected_receivesCorrectElements() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .whileConnected) }\n\n            scheduler.scheduleAt(200) { subscription1 = ys.subscribe(res1) }\n            scheduler.scheduleAt(300) { subscription2 = ys.subscribe(res2) }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6)\n            ])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6)])\n            XCTAssertEqual(res3.events, [.next(550, 7)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 400),\n                Subscription(500, 600)\n            ])\n        }\n    }\n\n    func test_forever_error() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .error(330, testError),\n                .next(340, -1),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res1_ = scheduler.createObserver(Int.self)\n            let res2_ = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .forever) }\n\n            scheduler.scheduleAt(200) {\n                subscription1 = ys.subscribe { event in\n                    res1.on(event)\n                    switch event {\n                    case .error: subscription1 = ys.subscribe(res1_)\n                    case .completed: subscription1 = ys.subscribe(res1_)\n                    case .next: break\n                    }\n                }\n            }\n            scheduler.scheduleAt(300) {\n                subscription2 = ys.subscribe { event in\n                    res2.on(event)\n                    switch event {\n                    case .error: subscription2 = ys.subscribe(res2_)\n                    case .completed: subscription2 = ys.subscribe(res2_)\n                    case .next: break\n                    }\n                }\n            }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .error(330, testError)\n            ])\n\n            let replayedEvents1 = (0 ..< i).map { Recorded.next(330, 7 - i + $0) }\n\n            XCTAssertEqual(res1_.events, replayedEvents1 + [.error(330, testError)])\n            XCTAssertEqual(res2_.events, replayedEvents1 + [.error(330, testError)])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6), .error(330, testError)])\n\n            let replayedEvents3 = (0 ..< i).map { Recorded.next(500, 7 - i + $0) }\n            XCTAssertEqual(res3.events, replayedEvents3 + [.error(500, testError)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 330)\n            ])\n        }\n    }\n\n    func test_whileConnected_error() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .error(330, testError),\n                .next(340, -1),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res1_ = scheduler.createObserver(Int.self)\n            let res2_ = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .whileConnected) }\n\n            scheduler.scheduleAt(200) {\n                subscription1 = ys.subscribe { event in\n                    res1.on(event)\n                    switch event {\n                    case .error: subscription1 = ys.subscribe(res1_)\n                    case .completed: subscription1 = ys.subscribe(res1_)\n                    case .next: break\n                    }\n                }\n            }\n            scheduler.scheduleAt(300) {\n                subscription2 = ys.subscribe { event in\n                    res2.on(event)\n                    switch event {\n                    case .error: subscription2 = ys.subscribe(res2_)\n                    case .completed: subscription2 = ys.subscribe(res2_)\n                    case .next: break\n                    }\n                }\n            }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .error(330, testError)\n            ])\n\n            XCTAssertEqual(res1_.events, [.next(340, -1)])\n            XCTAssertEqual(res2_.events, [.next(340, -1)])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6), .error(330, testError)])\n\n            XCTAssertEqual(res3.events, [.next(550, 7)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 330),\n                Subscription(330, 400),\n                Subscription(500, 600)\n            ])\n        }\n    }\n\n    func test_forever_completed() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .completed(330),\n                .next(340, -1),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res1_ = scheduler.createObserver(Int.self)\n            let res2_ = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .forever) }\n\n            scheduler.scheduleAt(200) {\n                subscription1 = ys.subscribe { event in\n                    res1.on(event)\n                    switch event {\n                    case .error: subscription1 = ys.subscribe(res1_)\n                    case .completed: subscription1 = ys.subscribe(res1_)\n                    case .next: break\n                    }\n                }\n            }\n            scheduler.scheduleAt(300) {\n                subscription2 = ys.subscribe { event in\n                    res2.on(event)\n                    switch event {\n                    case .error: subscription2 = ys.subscribe(res2_)\n                    case .completed: subscription2 = ys.subscribe(res2_)\n                    case .next: break\n                    }\n                }\n            }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .completed(330)\n            ])\n\n            let replayedEvents1 = (0 ..< i).map { Recorded.next(330, 7 - i + $0) }\n\n            XCTAssertEqual(res1_.events, replayedEvents1 + [.completed(330)])\n            XCTAssertEqual(res2_.events, replayedEvents1 + [.completed(330)])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6), .completed(330)])\n\n            let replayedEvents3 = (0 ..< i).map { Recorded.next(500, 7 - i + $0) }\n            XCTAssertEqual(res3.events, replayedEvents3 + [.completed(500)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 330)\n            ])\n        }\n    }\n\n    func test_whileConnected_completed() {\n        for i in 0 ..< 5 {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let xs = scheduler.createHotObservable([\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .completed(330),\n                .next(340, -1),\n                .next(550, 7)\n            ])\n\n            var subscription1: Disposable! = nil\n            var subscription2: Disposable! = nil\n            var subscription3: Disposable! = nil\n\n            let res1 = scheduler.createObserver(Int.self)\n            let res2 = scheduler.createObserver(Int.self)\n            let res1_ = scheduler.createObserver(Int.self)\n            let res2_ = scheduler.createObserver(Int.self)\n            let res3 = scheduler.createObserver(Int.self)\n\n            var ys: Observable<Int>! = nil\n\n            scheduler.scheduleAt(Defaults.created) { ys = xs.share(replay: i, scope: .whileConnected) }\n\n            scheduler.scheduleAt(200) {\n                subscription1 = ys.subscribe { event in\n                    res1.on(event)\n                    switch event {\n                    case .error: subscription1 = ys.subscribe(res1_)\n                    case .completed: subscription1 = ys.subscribe(res1_)\n                    case .next: break\n                    }\n                }\n            }\n            scheduler.scheduleAt(300) {\n                subscription2 = ys.subscribe { event in\n                    res2.on(event)\n                    switch event {\n                    case .error: subscription2 = ys.subscribe(res2_)\n                    case .completed: subscription2 = ys.subscribe(res2_)\n                    case .next: break\n                    }\n                }\n            }\n\n            scheduler.scheduleAt(350) { subscription1.dispose() }\n            scheduler.scheduleAt(400) { subscription2.dispose() }\n\n            scheduler.scheduleAt(500) { subscription3 = ys.subscribe(res3) }\n            scheduler.scheduleAt(600) { subscription3.dispose() }\n\n            scheduler.start()\n\n            XCTAssertEqual(res1.events, [\n                .next(210, 1),\n                .next(220, 2),\n                .next(230, 3),\n                .next(240, 4),\n                .next(250, 5),\n                .next(320, 6),\n                .completed(330)\n            ])\n\n            XCTAssertEqual(res1_.events, [.next(340, -1)])\n            XCTAssertEqual(res2_.events, [.next(340, -1)])\n\n            let replayedEvents2 = (0 ..< i).map { Recorded.next(300, 6 - i + $0) }\n            XCTAssertEqual(res2.events, replayedEvents2 + [.next(320, 6), .completed(330)])\n\n            XCTAssertEqual(res3.events, [.next(550, 7)])\n\n            XCTAssertEqual(xs.subscriptions, [\n                Subscription(200, 330),\n                Subscription(330, 400),\n                Subscription(500, 600)\n            ])\n        }\n    }\n\n    #if TRACE_RESOURCES\n    func testReleasesResourcesOnComplete() {\n        for i in 0 ..< 5 {\n            _ = Observable<Int>.just(1).share(replay: i, scope: .forever).subscribe()\n            _ = Observable<Int>.just(1).share(replay: i, scope: .whileConnected).subscribe()\n        }\n    }\n\n    func testReleasesResourcesOnError() {\n        for i in 0 ..< 5 {\n            _ = Observable<Int>.error(testError).share(replay: i, scope: .forever).subscribe()\n            _ = Observable<Int>.error(testError).share(replay: i, scope: .whileConnected).subscribe()\n        }\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SingleTests.swift",
    "content": "//\n//  Observable+SingleTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSingleTest: RxTest {}\n\nextension ObservableSingleTest {\n    func testSingle_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, RxError.noElements)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSingle_One() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSingle_Many() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .error(220, RxError.moreThanOneElement)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testSingle_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.single()\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    #if !DEBUG\n    func testSingle_DecrementCountsFirst() {\n        let k = BehaviorSubject(value: false)\n\n        _ = k.single { _ in true }.subscribe(onNext: { n in\n            k.on(.next(!n))\n        })\n    }\n    #endif\n\n    func testSinglePredicate_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single { e in\n                e % 2 == 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, RxError.noElements)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSinglePredicate_One() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single { e in\n                e == 4\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 4),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSinglePredicate_Many() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single { e in\n                (e % 2) == 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 3),\n            .error(240, RxError.moreThanOneElement)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 240)\n        ])\n    }\n\n    func testSinglePredicate_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.single { e in\n                e % 2 == 1\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testSinglePredicate_Throws() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            xs.single { (e: Int) -> Bool in\n                guard e < 4 else {\n                    throw testError\n                }\n                return false\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(230, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    #if !DEBUG\n    func testSinglePredicate_DecrementCountsFirst() {\n        let k = BehaviorSubject(value: false)\n\n        _ = k.single { _ in true }.subscribe(onNext: { n in\n            k.on(.next(!n))\n        })\n    }\n    #endif\n\n    #if TRACE_RESOURCES\n    func testSingleReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).single().subscribe()\n    }\n\n    func testSinleReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).single().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SkipTests.swift",
    "content": "//\n//  Observable+SkipTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSkipTest: RxTest {}\n\nextension ObservableSkipTest {\n    func testSkip_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(20)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(690)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Complete_Some() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(17)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(690)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Complete_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(0)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(20)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(690, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Error_Same() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(17)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(690, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testSkip_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10)\n        ])\n\n        let res = scheduler.start(disposed: 250) {\n            xs.skip(3)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSkip_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10)\n        ])\n\n        let res = scheduler.start(disposed: 400) {\n            xs.skip(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testSkipReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).skip(1).subscribe()\n    }\n\n    func testSkipReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).skip(1).subscribe()\n    }\n    #endif\n}\n\nextension ObservableSkipTest {\n    func testSkip_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(.seconds(0), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testSkip_Some() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(.seconds(15), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testSkip_Late() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(.seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testSkip_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.skip(.seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testSkip_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n        ])\n\n        let res = scheduler.start {\n            xs.skip(.seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testSkipTimeReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).skip(.seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testSkipTimeReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).skip(.seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SkipUntilTests.swift",
    "content": "//\n//  Observable+SkipUntilTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSkipUntilTest: RxTest {}\n\nextension ObservableSkipUntilTest {\n    func testSkipUntil_SomeData_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4), //!\n            .next(240, 5), //!\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(225, 99),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_SomeData_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_Error_SomeData() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .error(220, testError)\n\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(220, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testSkipUntil_SomeData_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_Never_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(225, 2), //!\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_Never_Error1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_SomeData_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSkipUntil_SomeData_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testSkipUntil_Never_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testSkipUntil_Never_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testSkipUntil_HasCompletedCausesDisposal() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isDisposed = false\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r: Observable<Int> = Observable.create { _ in\n            Disposables.create {\n                isDisposed = true\n            }\n        }\n\n        let res = scheduler.start {\n            l.skip(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssert(isDisposed, \"isDisposed\")\n    }\n\n    #if TRACE_RESOURCES\n    func testSkipUntilReleasesResourcesOnComplete1() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).delay(.seconds(20), scheduler: scheduler).skip(until: Observable<Int>.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testSkipUntilReleasesResourcesOnComplete2() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).skip(until: Observable<Int>.just(1).delay(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n\n    func testSkipUntilReleasesResourcesOnError1() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler).skip(until: Observable<Int>.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testSkipUntilReleasesResourcesOnError2() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).skip(until: Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SkipWhileTests.swift",
    "content": "//\n//  Observable+SkipWhileTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSkipWhileTest: RxTest {}\n\nextension ObservableSkipWhileTest {\n    func testSkipWhile_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .completed(330),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(330)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 330)\n        ])\n\n        XCTAssertEqual(4, invoked)\n    }\n\n    func testSkipWhile_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testSkipWhile_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .error(270, testError),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(270, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n\n        XCTAssertEqual(2, invoked)\n    }\n\n    func testSkipWhile_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testSkipWhile_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 300) {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    func testSkipWhile_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 470) {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 470)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testSkipWhile_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(205, 100),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 100),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n\n        XCTAssertEqual(1, invoked)\n    }\n\n    func testSkipWhile_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start {\n            xs.skip(while: { x in\n                invoked += 1\n                if invoked == 3 {\n                    throw testError\n                }\n                return isPrime(x)\n            })\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    #if TRACE_RESOURCES\n    func testSkipWhileReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).skip(while: { _ in true }).subscribe()\n    }\n\n    func testSkipWhileReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).skip(while: { _ in true }).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SubscribeOnTests.swift",
    "content": "//\n//  Observable+SubscribeOnTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSubscribeOnTest: RxTest {}\n\nextension ObservableSubscribeOnTest {\n    func testSubscribeOn_SchedulerSleep() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var scheduled = 0\n        var disposed = 0\n\n        let xs: Observable<Int> = Observable.create { _ in\n            scheduled = scheduler.clock\n            return Disposables.create {\n                disposed = scheduler.clock\n            }\n        }\n\n        let res = scheduler.start {\n            xs.subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(scheduled, 201)\n        XCTAssertEqual(disposed, 1001)\n    }\n\n    func testSubscribeOn_SchedulerCompleted() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(201, 301)\n        ])\n    }\n\n    func testSubscribeOn_SchedulerError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(300, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(201, 301)\n        ])\n    }\n\n    func testSubscribeOn_SchedulerDispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2)\n        ])\n\n        let res = scheduler.start {\n            xs.subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(201, 1001)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testSubscribeOnSerialReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).subscribe(on: testScheduler).subscribe()\n        testScheduler.start()\n    }\n\n    func testSubscribeOnSerialReleasesResourcesOnError() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).subscribe(on: testScheduler).subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SubscriptionTest.swift",
    "content": "//\n//  Observable+SubscriptionTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/13/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n\nclass ObservableSubscriptionTests: RxTest {\n    func testSubscribeOnNext() {\n        let publishSubject = PublishSubject<Int>()\n\n        var onNextCalled = 0\n        var onErrorCalled = 0\n        var onCompletedCalled = 0\n        var onDisposedCalled = 0\n\n        var lastElement: Int?\n        var lastError: Swift.Error?\n\n        let subscription = publishSubject.subscribe(onNext: { n in\n            lastElement = n\n            onNextCalled += 1\n        }, onError: { e in\n            lastError = e\n            onErrorCalled += 1\n        }, onCompleted: {\n            onCompletedCalled += 1\n        }, onDisposed: {\n            onDisposedCalled += 1\n        })\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 0)\n\n        publishSubject.on(.next(1))\n\n        XCTAssertTrue(lastElement == 1)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 1)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 0)\n\n        subscription.dispose()\n        publishSubject.on(.next(2))\n\n        XCTAssertTrue(lastElement == 1)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 1)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 1)\n    }\n\n    func testSubscribeOnError() {\n        let publishSubject = PublishSubject<Int>()\n\n        var onNextCalled = 0\n        var onErrorCalled = 0\n        var onCompletedCalled = 0\n        var onDisposedCalled = 0\n\n        var lastElement: Int?\n        var lastError: Swift.Error?\n\n        let subscription = publishSubject.subscribe(onNext: { n in\n            lastElement = n\n            onNextCalled += 1\n        }, onError: { e in\n            lastError = e\n            onErrorCalled += 1\n        }, onCompleted: {\n            onCompletedCalled += 1\n        }, onDisposed: {\n            onDisposedCalled += 1\n        })\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 0)\n\n        publishSubject.on(.error(testError))\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue((lastError as! TestError) == testError)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 1)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 1)\n\n        subscription.dispose()\n        publishSubject.on(.next(2))\n        publishSubject.on(.completed)\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue((lastError as! TestError) == testError)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 1)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 1)\n    }\n\n    func testSubscribeOnCompleted() {\n        let publishSubject = PublishSubject<Int>()\n\n        var onNextCalled = 0\n        var onErrorCalled = 0\n        var onCompletedCalled = 0\n        var onDisposedCalled = 0\n\n        var lastElement: Int?\n        var lastError: Swift.Error?\n\n        let subscription = publishSubject.subscribe(onNext: { n in\n            lastElement = n\n            onNextCalled += 1\n        }, onError: { e in\n            lastError = e\n            onErrorCalled += 1\n        }, onCompleted: {\n            onCompletedCalled += 1\n        }, onDisposed: {\n            onDisposedCalled += 1\n        })\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 0)\n\n        publishSubject.on(.completed)\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 1)\n        XCTAssertTrue(onDisposedCalled == 1)\n\n        subscription.dispose()\n        publishSubject.on(.next(2))\n        publishSubject.on(.error(testError))\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 1)\n        XCTAssertTrue(onDisposedCalled == 1)\n    }\n\n    func testDisposed() {\n        let publishSubject = PublishSubject<Int>()\n\n        var onNextCalled = 0\n        var onErrorCalled = 0\n        var onCompletedCalled = 0\n        var onDisposedCalled = 0\n\n        var lastElement: Int?\n        var lastError: Swift.Error?\n\n        let subscription = publishSubject.subscribe(onNext: { n in\n            lastElement = n\n            onNextCalled += 1\n        }, onError: { e in\n            lastError = e\n            onErrorCalled += 1\n        }, onCompleted: {\n            onCompletedCalled += 1\n        }, onDisposed: {\n            onDisposedCalled += 1\n        })\n\n        XCTAssertTrue(lastElement == nil)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 0)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 0)\n\n        publishSubject.on(.next(1))\n        subscription.dispose()\n        publishSubject.on(.next(2))\n        publishSubject.on(.error(testError))\n        publishSubject.on(.completed)\n\n        XCTAssertTrue(lastElement == 1)\n        XCTAssertTrue(lastError == nil)\n        XCTAssertTrue(onNextCalled == 1)\n        XCTAssertTrue(onErrorCalled == 0)\n        XCTAssertTrue(onCompletedCalled == 0)\n        XCTAssertTrue(onDisposedCalled == 1)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SwitchIfEmptyTests.swift",
    "content": "//\n//  Observable+SwitchIfEmptyTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSwitchIfEmptyTest: RxTest {}\n\nextension ObservableSwitchIfEmptyTest {\n    func testSwitchIfEmpty_SourceNotEmpty_SwitchCompletes() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .next(205, 1),\n            .completed(210, Int.self)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .completed(210)\n        ])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 210)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [\n        ])\n    }\n\n    func testSwitchIfEmpty_SourceNotEmptyError_SwitchCompletes() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .next(205, 1),\n            .error(210, testError)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .error(210, testError)\n        ])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 210)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [\n        ])\n    }\n\n    func testSwitchIfEmpty_SourceEmptyError_SwitchCompletes() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .error(210, testError, Int.self)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 210)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [\n        ])\n    }\n\n    func testSwitchIfEmpty_SourceEmpty_SwitchCompletes() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .completed(210, Int.self)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 0),\n            .next(230, 1),\n            .next(240, 2),\n            .next(250, 3),\n            .completed(260)\n        ])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 210)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [\n            Subscription(210, 260)\n        ])\n    }\n\n    func testSwitchIfEmpty_SourceEmpty_SwitchError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .completed(210, Int.self)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .error(50, testError)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 0),\n            .next(230, 1),\n            .next(240, 2),\n            .next(250, 3),\n            .error(260, testError)\n        ])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 210)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [\n            Subscription(210, 260)\n        ])\n    }\n\n    func testSwitchIfEmpty_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n        let source = scheduler.createHotObservable([\n            .next(0, 0)\n        ])\n        let switchSource = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            source.ifEmpty(switchTo: switchSource.asObservable())\n        }\n\n        XCTAssertEqual(res.events, [])\n        XCTAssertEqual(source.subscriptions, [\n            Subscription(200, 1000)\n        ])\n        XCTAssertEqual(switchSource.subscriptions, [])\n    }\n\n    #if TRACE_RESOURCES\n    func testSwitchIfEmptyReleasesResourcesOnComplete1() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).ifEmpty(switchTo: Observable.just(1)).subscribe()\n\n        testScheduler.start()\n    }\n\n    func testSwitchIfEmptyReleasesResourcesOnComplete2() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.empty().ifEmpty(switchTo: Observable.just(1)).subscribe()\n\n        testScheduler.start()\n    }\n\n    func testSwitchIfEmptyReleasesResourcesOnError1() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).ifEmpty(switchTo: Observable.just(1)).subscribe()\n\n        testScheduler.start()\n    }\n\n    func testSwitchIfEmptyReleasesResourcesOnError2() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.empty().ifEmpty(switchTo: Observable<Int>.error(testError)).subscribe()\n\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+SwitchTests.swift",
    "content": "//\n//  Observable+SwitchTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSwitchTest: RxTest {}\n\nextension ObservableSwitchTest {\n    func testSwitch_Data() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(150)\n        ])\n\n        let xSequence = Recorded.events(\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(500, ys3),\n            .completed(600)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.switchLatest()\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .next(510, 301),\n            .next(520, 302),\n            .next(530, 303),\n            .next(540, 304),\n            .completed(650)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 600)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n\n        let y3Subscriptions = [\n            Subscription(500, 650)\n        ]\n\n        XCTAssertEqual(ys3.subscriptions, y3Subscriptions)\n    }\n\n    func testSwitch_InnerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .error(50, testError)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(150)\n        ])\n\n        let xSequence = Recorded.events(\n            .next(300, ys1),\n            .next(400, ys2),\n            .next(500, ys3),\n            .completed(600)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.switchLatest()\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(450, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 450)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n\n        let y3Subscriptions: [Subscription] = [\n        ]\n\n        XCTAssertEqual(ys3.subscriptions, y3Subscriptions)\n    }\n\n    func testSwitch_OuterThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let xSequence = Recorded.events(\n            .next(300, ys1),\n            .next(400, ys2),\n            .error(500, testError)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.switchLatest()\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(500, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n    }\n\n    #if TRACE_RESOURCES\n    func testSwitchReleasesResourcesOnComplete() {\n        _ = Observable.of(Observable<Int>.just(1)).switchLatest().subscribe()\n    }\n\n    func testSwitch1ReleasesResourcesOnError() {\n        _ = Observable.of(Observable<Int>.error(testError)).switchLatest().subscribe()\n    }\n\n    func testSwitch2ReleasesResourcesOnError() {\n        _ = Observable<Observable<Int>>.error(testError).switchLatest().subscribe()\n    }\n    #endif\n}\n\nextension ObservableSwitchTest {\n    func testFlatMapLatest_Data() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(150)\n        ])\n\n        let observables = [ys1, ys2, ys3]\n\n        let xSequence = Recorded.events(\n            .next(300, 0),\n            .next(400, 1),\n            .next(500, 2),\n            .completed(600)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.flatMapLatest { observables[$0] }\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .next(510, 301),\n            .next(520, 302),\n            .next(530, 303),\n            .next(540, 304),\n            .completed(650)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 600)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n\n        let y3Subscriptions = [\n            Subscription(500, 650)\n        ]\n\n        XCTAssertEqual(ys3.subscriptions, y3Subscriptions)\n    }\n\n    func testFlatMapLatest_InnerThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .error(50, testError)\n        ])\n\n        let ys3 = scheduler.createColdObservable([\n            .next(10, 301),\n            .next(20, 302),\n            .next(30, 303),\n            .next(40, 304),\n            .completed(150)\n        ])\n\n        let observables = [ys1, ys2, ys3]\n\n        let xSequence = Recorded.events(\n            .next(300, 0),\n            .next(400, 1),\n            .next(500, 2),\n            .completed(600)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.flatMapLatest { observables[$0] }\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(450, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 450)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n\n        let y3Subscriptions: [Subscription] = [\n        ]\n\n        XCTAssertEqual(ys3.subscriptions, y3Subscriptions)\n    }\n\n    func testFlatMapLatest_OuterThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let observables = [ys1, ys2]\n\n        let xSequence = Recorded.events(\n            .next(300, 0),\n            .next(400, 1),\n            .error(500, testError)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.flatMapLatest { observables[$0] }\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .next(410, 201),\n            .next(420, 202),\n            .next(430, 203),\n            .next(440, 204),\n            .error(500, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        let y2Subscriptions = [\n            Subscription(400, 450)\n        ]\n\n        XCTAssertEqual(ys2.subscriptions, y2Subscriptions)\n    }\n\n    func testFlatMapLatest_SelectorThrows() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let ys1 = scheduler.createColdObservable([\n            .next(10, 101),\n            .next(20, 102),\n            .next(110, 103),\n            .next(120, 104),\n            .next(210, 105),\n            .next(220, 106),\n            .completed(230)\n        ])\n\n        let ys2 = scheduler.createColdObservable([\n            .next(10, 201),\n            .next(20, 202),\n            .next(30, 203),\n            .next(40, 204),\n            .completed(50)\n        ])\n\n        let observables = [ys1, ys2]\n\n        let xSequence = Recorded.events(\n            .next(300, 0),\n            .next(400, 1)\n        )\n\n        let xs = scheduler.createHotObservable(xSequence)\n\n        let res = scheduler.start {\n            xs.flatMapLatest { x throws -> TestableObservable<Int> in\n                if x < 1 {\n                    return observables[x]\n                } else {\n                    throw testError\n                }\n            }\n        }\n\n        let correct = Recorded.events(\n            .next(310, 101),\n            .next(320, 102),\n            .error(400, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 400)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n\n        let ys1Subscriptions = [\n            Subscription(300, 400)\n        ]\n\n        XCTAssertEqual(ys1.subscriptions, ys1Subscriptions)\n\n        XCTAssertEqual(ys2.subscriptions, [])\n    }\n\n    #if TRACE_RESOURCES\n    func testFlatMapLatest1ReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).flatMapLatest { _ in Observable.just(1).concat(Observable.timer(.seconds(20), scheduler: testScheduler)) }.subscribe()\n\n        testScheduler.start()\n    }\n\n    func testFlatMapLatest2ReleasesResourcesOnComplete() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.of(1, 2).concat(Observable.timer(.seconds(20), scheduler: testScheduler)).flatMapLatest { _ in Observable.just(1) }.subscribe()\n        testScheduler.start()\n    }\n\n    func testFlatMapLatest1ReleasesResourcesOnError() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).flatMapLatest { _ in\n            Observable.just(1)\n                .concat(Observable.timer(.seconds(20), scheduler: testScheduler))\n                .timeout(.seconds(10), scheduler: testScheduler)\n        }.subscribe()\n\n        testScheduler.start()\n    }\n\n    func testFlatMapLatest2ReleasesResourcesOnError() {\n        let testScheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.of(1, 2).concat(Observable.timer(.seconds(20), scheduler: testScheduler))\n            .timeout(.seconds(10), scheduler: testScheduler)\n            .flatMapLatest { _ in Observable.just(1) }.subscribe()\n        testScheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TakeLastTests.swift",
    "content": "//\n//  Observable+TakeLastTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTakeLastTest: RxTest {}\n\nextension ObservableTakeLastTest {\n    func testTakeLast_Complete_Less() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(7)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(300, 9),\n            .next(300, 13),\n            .next(300, 7),\n            .next(300, 1),\n            .next(300, -1),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    func testTakeLast_Complete_Same() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .completed(310)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(5)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(310, 9),\n            .next(310, 13),\n            .next(310, 7),\n            .next(310, 1),\n            .next(310, -1),\n            .completed(310)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 310)\n        ])\n    }\n\n    func testTakeLast_Complete_More() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .completed(350)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(5)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(350, 7),\n            .next(350, 1),\n            .next(350, -1),\n            .next(350, 3),\n            .next(350, 8),\n            .completed(350)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 350)\n        ])\n    }\n\n    func testTakeLast_Error_Less() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(290, 64),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(7)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(300, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    func testTakeLast_Error_Same() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .error(310, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(5)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(310, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 310)\n        ])\n    }\n\n    func testTakeLast_Error_More() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 64),\n            .error(360, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(5)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(360, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 360)\n        ])\n    }\n\n    func testTakeLast_0_DefaultScheduler() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(0)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testTakeLast_TakeLast1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.takeLast(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(400, 3),\n            .next(400, 8),\n            .next(400, 11),\n            .completed(400)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    func testTakeLast_DecrementCountsFirst() {\n        let k = BehaviorSubject(value: false)\n\n        var elements = [Bool]()\n        _ = k.takeLast(1).subscribe(onNext: { n in\n            elements.append(n)\n            k.on(.next(!n))\n        })\n\n        k.on(.completed)\n\n        XCTAssertEqual(elements, [false])\n    }\n\n    #if TRACE_RESOURCES\n    func testTakeLastReleasesResourcesOnComplete() {\n        _ = Observable<Int>.of(1, 2).takeLast(1).subscribe()\n    }\n\n    func testTakeLastReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).takeLast(1).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TakeTests.swift",
    "content": "//\n//  Observable+TakeTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTakeTest: RxTest {}\n\nextension ObservableTakeTest {\n    func testTake_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.take(20)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testTake_Complete_Same() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.take(17)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(630)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 630)\n        ])\n    }\n\n    func testTake_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(690)\n        ])\n\n        let res = scheduler.start {\n            xs.take(10)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .completed(415)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 415)\n        ])\n    }\n\n    func testTake_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.take(20)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 690)\n        ])\n    }\n\n    func testTake_Error_Same() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.take(17)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .completed(630)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 630)\n        ])\n    }\n\n    func testTake_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.take(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .completed(270)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n    }\n\n    func testTake_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start(disposed: 250) {\n            xs.take(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testTake_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .next(410, 15),\n            .next(415, 16),\n            .next(460, 72),\n            .next(510, 76),\n            .next(560, 32),\n            .next(570, -100),\n            .next(580, -3),\n            .next(590, 5),\n            .next(630, 10),\n            .error(690, testError)\n        ])\n\n        let res = scheduler.start(disposed: 400) {\n            xs.take(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .completed(270)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n    }\n\n    func testTake_0_DefaultScheduler() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13)\n        ])\n\n        let res = scheduler.start {\n            xs.take(0)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n        ])\n    }\n\n    func testTake_Take1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 6),\n            .next(150, 4),\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .next(280, 1),\n            .next(300, -1),\n            .next(310, 3),\n            .next(340, 8),\n            .next(370, 11),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.take(3)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 9),\n            .next(230, 13),\n            .next(270, 7),\n            .completed(270)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n    }\n\n    func testTake_DecrementCountsFirst() {\n        let k = BehaviorSubject(value: false)\n\n        _ = k.take(1).subscribe(onNext: { n in\n            k.on(.next(!n))\n        })\n    }\n\n    #if TRACE_RESOURCES\n    func testTakeReleasesResourcesOnComplete() {\n        _ = Observable<Int>.of(1, 2).take(1).subscribe()\n    }\n\n    func testTakeReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).take(1).subscribe()\n    }\n    #endif\n}\n\nextension ObservableTakeTest {\n    func testTake_TakeZero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(0), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(201)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 201)\n        ])\n    }\n\n    func testTake_Some() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .completed(240)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(25), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .completed(225)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTake_TakeLate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testTake_TakeError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(0, 0),\n            .error(210, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(210, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testTake_TakeNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(0, 0)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(50), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testTake_TakeTwice1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(260, 6),\n            .completed(270)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(55), scheduler: scheduler).take(for: .seconds(35), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .completed(235)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 235)\n        ])\n    }\n\n    func testTake_TakeDefault() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .next(240, 4),\n            .next(250, 5),\n            .next(260, 6),\n            .completed(270)\n        ])\n\n        let res = scheduler.start {\n            xs.take(for: .seconds(35), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 1),\n            .next(220, 2),\n            .next(230, 3),\n            .completed(235)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 235)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testTakeTimeReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).take(for: .seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testTakeTimeReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).take(for: .seconds(35), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TakeUntilTests.swift",
    "content": "//\n//  Observable+TakeUntilTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTakeUntilTest: RxTest {}\n\nextension ObservableTakeUntilTest {\n    func testTakeUntil_Preempt_SomeData_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(225, 99),\n            .completed(230)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .completed(225)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_Preempt_SomeData_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_NoPreempt_SomeData_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_NoPreempt_SomeData_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testTakeUntil_Preempt_Never_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(225, 2),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(225)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_Preempt_Never_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_NoPreempt_Never_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntil_NoPreempt_Never_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testTakeUntil_Preempt_BeforeFirstProduced() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 2),\n            .completed(240)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(220)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(210)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(r.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testTakeUntil_Preempt_BeforeFirstProduced_RemainSilentAndProperlyDisposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(215, testError),\n            .completed(240)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(220)\n        ])\n\n        var sourceNotDisposed = false\n\n        let res = scheduler.start {\n            l.do(onNext: { _ in sourceNotDisposed = true }).take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(210)\n        ])\n\n        XCTAssertFalse(sourceNotDisposed)\n    }\n\n    func testTakeUntil_NoPreempt_AfterLastProduced_ProperlyDisposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(230, 2),\n            .completed(240)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(250, 2),\n            .completed(260)\n        ])\n\n        var sourceNotDisposed = false\n\n        let res = scheduler.start {\n            l.take(until: r.do(onNext: { _ in sourceNotDisposed = true }))\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(230, 2),\n            .completed(240)\n        ])\n\n        XCTAssertFalse(sourceNotDisposed)\n    }\n\n    func testTakeUntil_Error_Some() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(225, testError)\n        ])\n\n        let r = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(240, 2)\n        ])\n\n        let sourceNotDisposed = false\n\n        let res = scheduler.start {\n            l.take(until: r)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(225, testError)\n        ])\n\n        XCTAssertFalse(sourceNotDisposed)\n    }\n\n    #if TRACE_RESOURCES\n    func testTakeUntil1ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable.just(1).delay(.seconds(10), scheduler: scheduler).take(until: Observable.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testTakeUntil2ReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable.just(1).take(until: Observable.just(1).delay(.seconds(10), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n\n    func testTakeUntil1ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler).take(until: Observable<Int>.never()).subscribe()\n        scheduler.start()\n    }\n\n    func testTakeUntil2ReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().take(until: Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n\n// MARK: TakeUntil Predicate Tests - Exclusive\n\nextension ObservableTakeUntilTest {\n    func testTakeUntilPredicate_Exclusive_Preempt_SomeData_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { $0 == 4 }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testTakeUntilPredicate_Exclusive_Preempt_SomeData_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { $0 == 4 }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntilPredicate_Exclusive_AlwaysFailingPredicate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { _ in false }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testTakeUntilPredicate_Exclusive_ImmediatelySuccessfulPredicate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { _ in true }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(210)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n}\n\n// MARK: TakeUntil Predicate Tests - Inclusive\n\nextension ObservableTakeUntilTest {\n    func testTakeUntilPredicate_Inclusive_Preempt_SomeData_Next() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { $0 == 4 }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .completed(230)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 230)\n        ])\n    }\n\n    func testTakeUntilPredicate_Inclusive_Preempt_SomeData_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { $0 == 4 }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .error(225, testError)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testTakeUntilPredicate_Inclusive_AlwaysFailingPredicate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { _ in false }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 250)\n        ])\n    }\n\n    func testTakeUntilPredicate_Inclusive_ImmediatelySuccessfulPredicate() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let l = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(220, 3),\n            .next(230, 4),\n            .next(240, 5),\n            .completed(250)\n        ])\n\n        let res = scheduler.start {\n            l.take(until: { _ in true }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .completed(210)\n        ])\n\n        XCTAssertEqual(l.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TakeWhileTests.swift",
    "content": "//\n//  Observable+TakeWhileTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTakeWhileTest: RxTest {}\n\nextension ObservableTakeWhileTest {\n    func testTakeWhile_Exclusive_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .completed(330),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .completed(330)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 330)\n        ])\n\n        XCTAssertEqual(4, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .error(270, testError),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .error(270, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n\n        XCTAssertEqual(2, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 300) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 400) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(205, 100),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 300) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(205)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 205)\n        ])\n\n        XCTAssertEqual(1, invoked)\n    }\n\n    func testTakeWhile_Exclusive_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { num in\n                invoked += 1\n\n                if invoked == 3 {\n                    throw testError\n                }\n\n                return isPrime(num)\n            }, behavior: .exclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Complete_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .completed(330),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .completed(330)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 330)\n        ])\n\n        XCTAssertEqual(4, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Complete_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Error_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .error(270, testError),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .error(270, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n\n        XCTAssertEqual(2, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Error_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Dispose_Before() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 300) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Dispose_After() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 400) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(6, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(205, 100),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .error(600, testError)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start(disposed: 300) { () -> Observable<Int> in\n            return xs.take(while: { (num: Int) -> Bool in\n                invoked += 1\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 100),\n            .completed(205)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 205)\n        ])\n\n        XCTAssertEqual(1, invoked)\n    }\n\n    func testTakeWhile_Inclusive_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, -1),\n            .next(110, -1),\n            .next(210, 2),\n            .next(260, 5),\n            .next(290, 13),\n            .next(320, 3),\n            .next(350, 7),\n            .next(390, 4),\n            .next(410, 17),\n            .next(450, 8),\n            .next(500, 23),\n            .completed(600)\n        ])\n\n        var invoked = 0\n\n        let res = scheduler.start { () -> Observable<Int> in\n            return xs.take(while: { num in\n                invoked += 1\n\n                if invoked == 3 {\n                    throw testError\n                }\n\n                return isPrime(num)\n            }, behavior: .inclusive)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 2),\n            .next(260, 5),\n            .error(290, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 290)\n        ])\n\n        XCTAssertEqual(3, invoked)\n    }\n\n    #if TRACE_RESOURCES\n    func testTakeWhileReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).take(while: { _ in true }).subscribe()\n    }\n\n    func testTakeWhile1ReleasesResourcesOnError() {\n        _ = Observable<Int>.error(testError).take(while: { _ in true }).subscribe()\n    }\n\n    func testTakeWhile2ReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).take(while: { _ -> Bool in throw testError }).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+Tests.swift",
    "content": "//\n//  Observable+Tests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/24/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTest: RxTest {}\n\nextension ObservableTest {\n    func testAnonymousObservable_detachesOnDispose() {\n        var observer: AnyObserver<Int>!\n        let a = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        } as Observable<Int>\n\n        var elements = [Int]()\n\n        let d = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer.on(.next(0))\n        XCTAssertEqual(elements, [0])\n\n        d.dispose()\n\n        observer.on(.next(1))\n        XCTAssertEqual(elements, [0])\n    }\n\n    func testAnonymousObservable_detachesOnComplete() {\n        var observer: AnyObserver<Int>!\n        let a = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        } as Observable<Int>\n\n        var elements = [Int]()\n\n        _ = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer.on(.next(0))\n        XCTAssertEqual(elements, [0])\n\n        observer.on(.completed)\n\n        observer.on(.next(1))\n        XCTAssertEqual(elements, [0])\n    }\n\n    func testAnonymousObservable_detachesOnError() {\n        var observer: AnyObserver<Int>!\n        let a = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        } as Observable<Int>\n\n        var elements = [Int]()\n\n        _ = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer.on(.next(0))\n        XCTAssertEqual(elements, [0])\n\n        observer.on(.error(testError))\n\n        observer.on(.next(1))\n        XCTAssertEqual(elements, [0])\n    }\n\n    #if !os(Linux)\n    func testAnonymousObservable_disposeReferenceDoesntRetainObservable() {\n        var targetDeallocated = false\n\n        var target: NSObject? = NSObject()\n\n        let subscription = { () -> Disposable in\n            return autoreleasepool {\n                let localTarget = target!\n\n                let sequence = Observable.create { _ in\n                    Disposables.create {\n                        if arc4random_uniform(4) == 0 {\n                            print(localTarget)\n                        }\n                    }\n                }.map { (n: Int) -> Int in\n                    if arc4random_uniform(4) == 0 {\n                        print(localTarget)\n                    }\n                    return n\n                }\n\n                let subscription = sequence.subscribe(onNext: { _ in })\n\n                _ = localTarget.rx.deallocated.subscribe(onNext: { _ in\n                    targetDeallocated = true\n                })\n\n                return subscription\n            }\n        }()\n\n        target = nil\n\n        XCTAssertFalse(targetDeallocated)\n        subscription.dispose()\n        XCTAssertTrue(targetDeallocated)\n    }\n    #endif\n}\n\nextension ObservableTest {\n    func testAsObservable_asObservable() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(250)\n        ])\n\n        let ys = xs.asObservable()\n\n        XCTAssert(xs !== ys)\n\n        let res = scheduler.start { ys }\n\n        let correct = Recorded.events(\n            .next(220, 2),\n            .completed(250)\n        )\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    func testAsObservable_hides() {\n        let xs = PrimitiveHotObservable<Int>()\n\n        let res = xs.asObservable()\n\n        XCTAssertTrue(res !== xs)\n    }\n\n    func testAsObservable_never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: Observable<Int> = Observable.never()\n\n        let res = scheduler.start { xs }\n\n        let correct: [Recorded<Event<Int>>] = []\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    #if TRACE_RESOURCES\n    func testAsObservableReleasesResourcesOnComplete() {\n        _ = Observable<Int>.empty().asObservable().subscribe()\n    }\n\n    func testAsObservableReleasesResourcesOnError() {\n        _ = Observable<Int>.empty().asObservable().subscribe()\n    }\n    #endif\n}\n\n// MARK: - Subscribe with object\n\nextension ObservableTest {\n    func testSubscribeWithNext() {\n        var testObject: TestObject! = TestObject()\n        let scheduler = TestScheduler(initialClock: 0)\n        var values = [String]()\n        var disposed: UUID?\n        var completed: UUID?\n\n        let observable = scheduler.createColdObservable([\n            .next(10, 0),\n            .next(20, 1),\n            .next(30, 2),\n            .next(40, 3),\n            .completed(50)\n        ])\n\n        _ = observable\n            .subscribe(\n                with: testObject,\n                onNext: { object, value in values.append(object.id.uuidString + \"\\(value)\") },\n                onCompleted: { completed = $0.id },\n                onDisposed: { disposed = $0.id }\n            )\n\n        scheduler.start()\n\n        let uuid = testObject.id\n        XCTAssertEqual(values, [\n            uuid.uuidString + \"0\",\n            uuid.uuidString + \"1\",\n            uuid.uuidString + \"2\",\n            uuid.uuidString + \"3\"\n        ])\n\n        XCTAssertEqual(completed, uuid)\n        XCTAssertEqual(disposed, uuid)\n\n        XCTAssertNotNil(testObject)\n        testObject = nil\n        XCTAssertNil(testObject)\n    }\n}\n\n// MARK: - Deferred\n\nprivate class DeferredExpectation {\n    let expectation: XCTestExpectation\n\n    init(expectation: XCTestExpectation) {\n        self.expectation = expectation\n    }\n\n    func bar() -> Observable<Void> {\n        Observable<Void>\n            .deferred {\n                self.expectation.fulfill()\n                return .never()\n            }\n    }\n}\n\nextension ObservableTest {\n    func testDeferredFactoryClosureLifetime() {\n        let factoryClosureInvoked = expectation(description: \"Factory closure has been invoked\")\n        var foo: DeferredExpectation? = DeferredExpectation(expectation: factoryClosureInvoked)\n        #if swift(>=6.2)\n        weak let initialFoo = foo\n        #else\n        weak var initialFoo = foo\n        #endif\n\n        let disposable = foo?.bar().subscribe()\n\n        wait(for: [factoryClosureInvoked])\n\n        // reset foo to let the initial instance deallocate\n        foo = nil\n\n        // we know that the factory closure has already been executed,\n        // and the foo reference has been nilled, so there should be nothing\n        // keeping the object alive\n        XCTAssertNil(initialFoo)\n\n        disposable?.dispose()\n    }\n\n    func testObservableFactoryClosureLifetime() {\n        class Foo {\n            let expectation: XCTestExpectation\n\n            init(expectation: XCTestExpectation) {\n                self.expectation = expectation\n            }\n\n            func bar() -> Observable<Void> {\n                Observable<Void>\n                    .create { _ in\n                        self.expectation.fulfill()\n                        return Disposables.create()\n                    }\n            }\n        }\n\n        let factoryClosureInvoked = expectation(description: \"Factory closure has been invoked\")\n        var foo: Foo? = Foo(expectation: factoryClosureInvoked)\n        #if swift(>=6.2)\n        weak let initialFoo = foo\n        #else\n        weak var initialFoo = foo\n        #endif\n\n        let disposable = foo?.bar().subscribe()\n\n        wait(for: [factoryClosureInvoked])\n\n        // reset foo to let the initial instance deallocate\n        foo = nil\n\n        XCTAssertNil(initialFoo)\n\n        disposable?.dispose()\n    }\n}\n\nprivate class TestObject: NSObject {\n    var id = UUID()\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ThrottleTests.swift",
    "content": "//\n//  Observable+ThrottleTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nimport Foundation\n\nclass ObservableThrottleTest: RxTest {}\n\nextension ObservableThrottleTest {\n    func test_ThrottleTimeSpan_NotLatest_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .next(410, 6),\n            .next(450, 7),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), latest: false, scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(410, 6),\n            .completed(500)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NotLatest_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0)\n\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), latest: false, scheduler: scheduler)\n        }\n\n        let correct: [Recorded<Event<Int>>] = [\n        ]\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NotLatest_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), latest: false, scheduler: scheduler)\n        }\n\n        let correct = [\n            Recorded.completed(500, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NotLatest_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .error(410, testError),\n            .next(450, 7),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), latest: false, scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .error(410, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 410)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NotLatest_NoEnd() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .next(410, 6),\n            .next(450, 7)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), latest: false, scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(410, 6)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NotLatest_WithRealScheduler() {\n        #if !os(Linux)\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable.from([0, 1])\n            .throttle(.seconds(2), latest: false, scheduler: scheduler)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(0.0, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0])\n        #endif\n    }\n\n    #if TRACE_RESOURCES\n    func testThrottleNotLatestReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).throttle(.seconds(0), latest: false, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testThrottleNotLatestReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).throttle(.seconds(0), latest: false, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n\n// MARK: Throttle\n\nextension ObservableThrottleTest {\n    func test_ThrottleTimeSpan_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .next(410, 6),\n            .next(450, 7),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(410, 6),\n            .next(610, 7),\n            .completed(610)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_CompletedAfterDueTime() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .next(410, 6),\n            .next(450, 7),\n            .completed(900)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(410, 6),\n            .next(610, 7),\n            .completed(900)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 900)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0)\n\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct: [Recorded<Event<Int>>] = [\n        ]\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct = [\n            Recorded.completed(500, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 500)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .error(410, testError),\n            .next(450, 7),\n            .completed(500)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .error(410, testError)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 410)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_NoEnd() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .next(250, 3),\n            .next(310, 4),\n            .next(350, 5),\n            .next(410, 6),\n            .next(450, 7)\n        ])\n\n        let res = scheduler.start {\n            xs.throttle(.seconds(200), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(210, 2),\n            .next(410, 6),\n            .next(610, 7)\n        )\n\n        XCTAssertEqual(res.events, correct)\n\n        let subscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(xs.subscriptions, subscriptions)\n    }\n\n    func test_ThrottleTimeSpan_WithRealScheduler_seconds() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable.from([0, 1])\n            .throttle(.seconds(2), scheduler: scheduler)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(2, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0, 1])\n    }\n\n    func test_ThrottleTimeSpan_WithRealScheduler_milliseconds() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable.from([0, 1])\n            .throttle(.milliseconds(2000), scheduler: scheduler)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(2, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0, 1])\n    }\n\n    func test_ThrottleTimeSpan_WithRealScheduler_microseconds() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable.from([0, 1])\n            .throttle(.microseconds(2_000_000), scheduler: scheduler)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(2, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0, 1])\n    }\n\n    func test_ThrottleTimeSpan_WithRealScheduler_nanoseconds() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable.from([0, 1])\n            .throttle(.nanoseconds(2_000_000_000), scheduler: scheduler)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(2, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0, 1])\n    }\n\n    #if TRACE_RESOURCES\n    func testThrottleLatestReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).throttle(.seconds(0), latest: true, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testThrottleLatestReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).throttle(.seconds(0), latest: true, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TimeoutTests.swift",
    "content": "//\n//  Observable+TimeoutTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableTimeoutTest: RxTest {}\n\nextension ObservableTimeoutTest {\n    func testTimeout_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0),\n            .completed(300)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(200), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    func testTimeout_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0),\n            .error(300, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(200), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(300, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n    }\n\n    func testTimeout_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 0)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(1000), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testTimeout_Duetime_Simple() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 42),\n            .next(25, 43),\n            .next(40, 44),\n            .next(50, 45),\n            .completed(60)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(225, 43),\n            .next(240, 44),\n            .next(250, 45),\n            .completed(260)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 260)\n        ])\n    }\n\n    func testTimeout_Duetime_Timeout_Exact() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 42),\n            .next(20, 43),\n            .next(50, 44),\n            .next(60, 45),\n            .completed(70)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .next(250, 44),\n            .next(260, 45),\n            .completed(270)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 270)\n        ])\n    }\n\n    func testTimeout_Duetime_Timeout() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 42),\n            .next(20, 43),\n            .next(50, 44),\n            .next(60, 45),\n            .completed(70)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(25), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(210, 42),\n            .next(220, 43),\n            .error(245, RxError.timeout)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 245)\n        ])\n    }\n\n    func testTimeout_Duetime_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 370) {\n            xs.timeout(.seconds(40), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 370)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(130, 2),\n            .next(310, 3),\n            .next(400, 4),\n            .completed(500)\n        ])\n\n        let ys = scheduler.createColdObservable([\n            .next(50, -1),\n            .next(200, -2),\n            .next(310, -3),\n            .completed(320)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(350, -1),\n            .next(500, -2),\n            .next(610, -3),\n            .completed(620)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(300, 620)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(130, 2),\n            .next(240, 3),\n            .next(310, 4),\n            .next(430, 5),\n            .completed(500)\n        ])\n\n        let ys = scheduler.createColdObservable([\n            .next(50, -1),\n            .next(200, -2),\n            .next(310, -3),\n            .completed(320)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, 3),\n            .next(310, 4),\n            .next(460, -1),\n            .next(610, -2),\n            .next(720, -3),\n            .completed(730)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 410)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(410, 730)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(130, 2),\n            .next(240, 3),\n            .next(310, 4),\n            .next(430, 5),\n            .completed(500)\n        ])\n\n        let ys: TestableObservable<Int> = scheduler.createColdObservable([\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, 3),\n            .next(310, 4)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 410)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(410, 1000)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .completed(500)\n        ])\n\n        let ys = scheduler.createColdObservable([\n            .next(100, -1)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(400, -1)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(300, 1000)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(500, testError)\n        ])\n\n        let ys = scheduler.createColdObservable([\n            .next(100, -1)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(400, -1)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(300, 1000)\n        ])\n    }\n\n    func testTimeout_TimeoutOccurs_NextIsError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .next(500, 42)\n        ])\n\n        let ys: TestableObservable<Int> = scheduler.createColdObservable([\n            .error(100, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(400, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(300, 400)\n        ])\n    }\n\n    func testTimeout_TimeoutNotOccurs_Completed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .completed(250)\n        ])\n\n        let ys: TestableObservable<Int> = scheduler.createColdObservable([\n            .next(100, -1)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(250)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [])\n    }\n\n    func testTimeout_TimeoutNotOccurs_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createHotObservable([\n            .error(250, testError)\n        ])\n\n        let ys: TestableObservable<Int> = scheduler.createColdObservable([\n            .next(100, -1)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(250, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 250)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [])\n    }\n\n    func testTimeout_TimeoutNotOccurs() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(70, 1),\n            .next(130, 2),\n            .next(240, 3),\n            .next(320, 4),\n            .next(410, 5),\n            .completed(500)\n        ])\n\n        let ys = scheduler.createColdObservable([\n            .next(50, -1),\n            .next(200, -2),\n            .next(310, -3),\n            .completed(320)\n        ])\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(100), other: ys, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(240, 3),\n            .next(320, 4),\n            .next(410, 5),\n            .completed(500)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 500)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testTimeoutReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).timeout(.seconds(100), other: Observable.empty(), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testTimeoutReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).timeout(.seconds(100), other: Observable.empty(), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+TimerTests.swift",
    "content": "//\n//  Observable+TimerTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nimport Foundation\n\nclass ObservableTimerTest: RxTest {}\n\nextension ObservableTimerTest {\n    func testTimer_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable<Int>.timer(.seconds(100), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(300, 0),\n            .completed(300)\n        )\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    #if TRACE_RESOURCES\n\n    func testTimerReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.timer(.seconds(100), scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    #endif\n}\n\nextension ObservableTimerTest {\n    func testInterval_TimeSpan_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable<Int64>.interval(.seconds(100), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(300, 0 as Int64),\n            .next(400, 1),\n            .next(500, 2),\n            .next(600, 3),\n            .next(700, 4),\n            .next(800, 5),\n            .next(900, 6)\n        )\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    func testInterval_TimeSpan_Zero() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start(disposed: 210) {\n            Observable<Int64>.interval(.seconds(0), scheduler: scheduler)\n        }\n\n        let correct = Recorded.events(\n            .next(201, 0 as Int64),\n            .next(202, 1),\n            .next(203, 2),\n            .next(204, 3),\n            .next(205, 4),\n            .next(206, 5),\n            .next(207, 6),\n            .next(208, 7),\n            .next(209, 8)\n        )\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    func testInterval_TimeSpan_Zero_DefaultScheduler() {\n        let scheduler = SerialDispatchQueueScheduler(qos: .default)\n\n        let observer = PrimitiveMockObserver<Int64>()\n\n        let expectCompleted = expectation(description: \"It will complete\")\n\n        let d = Observable<Int64>\n            .interval(.seconds(0), scheduler: scheduler)\n            .take(while: { $0 < 10 })\n            .subscribe(\n                onNext: { t in\n                    observer.on(.next(t))\n                },\n                onCompleted: {\n                    expectCompleted.fulfill()\n                }\n            )\n\n        defer {\n            d.dispose()\n        }\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssert(e == nil, \"Did not complete\")\n        }\n\n        let cleanResources = expectation(description: \"Clean resources\")\n\n        _ = scheduler.schedule(()) { _ in\n            cleanResources.fulfill()\n            return Disposables.create()\n        }\n\n        waitForExpectations(timeout: 1.0) { e in\n            XCTAssert(e == nil, \"Did not clean up\")\n        }\n\n        XCTAssertTrue(observer.events.count == 10)\n    }\n\n    func testInterval_TimeSpan_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Observable<Int64>.interval(.seconds(1000), scheduler: scheduler)\n        }\n\n        let correct: [Recorded<Event<Int64>>] = [\n        ]\n\n        XCTAssertEqual(res.events, correct)\n    }\n\n    func test_IntervalWithRealScheduler() {\n        let scheduler = ConcurrentDispatchQueueScheduler(qos: .default)\n\n        let start = Date()\n\n        let a = try! Observable<Int64>.interval(.seconds(1), scheduler: scheduler)\n            .take(2)\n            .toBlocking()\n            .toArray()\n\n        let end = Date()\n\n        XCTAssertEqual(2, end.timeIntervalSince(start), accuracy: 0.5)\n        XCTAssertEqual(a, [0, 1])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ToArrayTests.swift",
    "content": "//\n//  Observable+ToArrayTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableToArrayTest: RxTest {}\n\nextension ObservableToArrayTest {\n    func test_ToArrayWithSingleItem_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages = Recorded.events(\n            .next(220, EquatableArray([1])),\n            .completed(220)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 220)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ToArrayWithMultipleItems_Return() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .next(30, 3),\n            .next(40, 4),\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages = Recorded.events(\n            .next(250, EquatableArray([1, 2, 3, 4])),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ToArrayWithNoItems_Empty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createColdObservable([\n            .completed(50)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages = Recorded.events(\n            .next(250, EquatableArray([Int]())),\n            .completed(250)\n        )\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ToArrayWithSingleItem_Never() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages: [Recorded<Event<EquatableArray<Int>>>] = [\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 1000)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ToArrayWithImmediateError_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createColdObservable([\n            .error(10, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages = [\n            Recorded.error(210, testError, EquatableArray<Int>.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 210)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    func test_ToArrayWithMultipleItems_Throw() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs: TestableObservable<Int> = scheduler.createColdObservable([\n            .next(10, 1),\n            .next(20, 2),\n            .next(30, 3),\n            .next(40, 4),\n            .error(50, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.toArray().map { EquatableArray($0) }\n        }\n\n        let correctMessages = [\n            Recorded.error(250, testError, EquatableArray<Int>.self)\n        ]\n\n        let correctSubscriptions = [\n            Subscription(200, 250)\n        ]\n\n        XCTAssertEqual(res.events, correctMessages)\n        XCTAssertEqual(xs.subscriptions, correctSubscriptions)\n    }\n\n    #if TRACE_RESOURCES\n    func testToArrayReleasesResourcesOnComplete() {\n        _ = Observable<Int>.just(1).toArray().subscribe()\n    }\n\n    func testToArrayReleasesResourcesOnError() {\n        _ = Observable<Int>.just(1).toArray().subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+UsingTests.swift",
    "content": "//\n//  Observable+UsingTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableUsingTest: RxTest {}\n\nextension ObservableUsingTest {\n    func testUsing_Complete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var xs: TestableObservable<Int>!\n        var disposable: MockDisposable!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Observable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } observableFactory: { d in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .next(100, scheduler.clock),\n                    .completed(200)\n                ])\n                return xs.asObservable()\n            } as Observable<Int>\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(res.events, [\n            .next(300, 200),\n            .completed(400)\n        ])\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            400\n        ])\n    }\n\n    func testUsing_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var xs: TestableObservable<Int>!\n        var disposable: MockDisposable!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Observable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } observableFactory: { d in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .next(100, scheduler.clock),\n                    .error(200, testError)\n                ])\n                return xs.asObservable()\n            } as Observable<Int>\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(res.events, [\n            .next(300, 200),\n            .error(400, testError)\n        ])\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 400)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            400\n        ])\n    }\n\n    func testUsing_Dispose() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var xs: TestableObservable<Int>!\n        var disposable: MockDisposable!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Observable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } observableFactory: { d in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .next(100, scheduler.clock),\n                    .next(1000, scheduler.clock + 1)\n                ])\n                return xs.asObservable()\n            } as Observable<Int>\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(res.events, [\n            .next(300, 200)\n        ])\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            1000\n        ])\n    }\n\n    func testUsing_ThrowResourceSelector() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        let res = scheduler.start {\n            Observable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                throw testError\n            } observableFactory: { _ in\n                createInvoked += 1\n                return Observable.never()\n\n            } as Observable<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError)\n        ])\n\n        XCTAssertEqual(0, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n    }\n\n    func testUsing_ThrowResourceUsage() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n        var disposable: MockDisposable!\n\n        let res = scheduler.start {\n            Observable.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } observableFactory: { _ in\n                createInvoked += 1\n                throw testError\n\n            } as Observable<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError)\n        ])\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            200\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testUsingReleasesResourcesOnComplete() {\n        let compositeDisposable = CompositeDisposable(disposables: [])\n        _ = Observable<Int>.using {\n            compositeDisposable\n        } observableFactory: {\n            _ in Observable<Int>.just(1)\n        }.subscribe()\n    }\n\n    func testUsingReleasesResourcesOnError() {\n        let compositeDisposable = CompositeDisposable(disposables: [])\n        _ = Observable<Int>.using {\n            compositeDisposable\n        } observableFactory: {\n            _ in Observable<Int>.error(testError)\n        }.subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+WindowTests.swift",
    "content": "//\n//  Observable+WindowTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableWindowTest: RxTest {}\n\nextension ObservableWindowTest {\n    func testWindowWithTimeOrCount_Basic() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let window: Observable<Observable<Int>> = xs.window(timeSpan: .seconds(70), count: 3, scheduler: scheduler)\n            let mappedWithIndex = window.enumerated().map { (i: Int, o: Observable<Int>) -> Observable<String> in\n                return o.map { (e: Int) -> String in\n                    return \"\\(i) \\(e)\"\n                }\n            }\n            let result = mappedWithIndex.merge()\n            return result\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, \"0 1\"),\n            .next(210, \"0 2\"),\n            .next(240, \"0 3\"),\n            .next(280, \"1 4\"),\n            .next(320, \"2 5\"),\n            .next(350, \"2 6\"),\n            .next(370, \"2 7\"),\n            .next(420, \"3 8\"),\n            .next(470, \"4 9\"),\n            .completed(600)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testWindowWithTimeOrCount_Error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .error(600, testError)\n        ])\n\n        let res = scheduler.start { () -> Observable<String> in\n            let window: Observable<Observable<Int>> = xs.window(timeSpan: .seconds(70), count: 3, scheduler: scheduler)\n            let mappedWithIndex = window.enumerated().map { (i: Int, o: Observable<Int>) -> Observable<String> in\n                return o.map { (e: Int) -> String in\n                    return \"\\(i) \\(e)\"\n                }\n            }\n            let result = mappedWithIndex.merge()\n            return result\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, \"0 1\"),\n            .next(210, \"0 2\"),\n            .next(240, \"0 3\"),\n            .next(280, \"1 4\"),\n            .next(320, \"2 5\"),\n            .next(350, \"2 6\"),\n            .next(370, \"2 7\"),\n            .next(420, \"3 8\"),\n            .next(470, \"4 9\"),\n            .error(600, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 600)\n        ])\n    }\n\n    func testWindowWithTimeOrCount_Disposed() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(105, 0),\n            .next(205, 1),\n            .next(210, 2),\n            .next(240, 3),\n            .next(280, 4),\n            .next(320, 5),\n            .next(350, 6),\n            .next(370, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .completed(600)\n        ])\n\n        let res = scheduler.start(disposed: 370) { () -> Observable<String> in\n            let window: Observable<Observable<Int>> = xs.window(timeSpan: .seconds(70), count: 3, scheduler: scheduler)\n            let mappedWithIndex = window.enumerated().map { (i: Int, o: Observable<Int>) -> Observable<String> in\n                return o.map { (e: Int) -> String in\n                    return \"\\(i) \\(e)\"\n                }\n            }\n            let result = mappedWithIndex.merge()\n            return result\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(205, \"0 1\"),\n            .next(210, \"0 2\"),\n            .next(240, \"0 3\"),\n            .next(280, \"1 4\"),\n            .next(320, \"2 5\"),\n            .next(350, \"2 6\"),\n            .next(370, \"2 7\")\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 370)\n        ])\n    }\n\n    func windowWithTimeOrCount_Default() {\n        let backgroundScheduler = SerialDispatchQueueScheduler(qos: .default)\n\n        let result = try! Observable.range(start: 1, count: 10, scheduler: backgroundScheduler)\n            .window(timeSpan: .seconds(1000), count: 3, scheduler: backgroundScheduler)\n            .enumerated().map { (i: Int, o: Observable<Int>) -> Observable<String> in\n                return o.map { (e: Int) -> String in\n                    return \"\\(i) \\(e)\"\n                }\n            }\n            .merge()\n            .skip(4)\n            .toBlocking()\n            .first()\n\n        XCTAssertEqual(result!, \"1 5\")\n    }\n\n    #if TRACE_RESOURCES\n    func testWindowReleasesResourcesOnComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).window(timeSpan: .seconds(0), count: 10, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n\n    func testWindowReleasesResourcesOnError() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.error(testError).window(timeSpan: .seconds(0), count: 10, scheduler: scheduler).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+WithLatestFromTests.swift",
    "content": "//\n//  Observable+WithLatestFromTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/29/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableWithLatestFromTest: RxTest {}\n\nextension ObservableWithLatestFromTest {\n    func testWithLatestFrom_Simple1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .next(410, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .next(550, 10),\n            .completed(590)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"4bar\"),\n            .next(310, \"5bar\"),\n            .next(340, \"6foo\"),\n            .next(410, \"7qux\"),\n            .next(420, \"8qux\"),\n            .next(470, \"9qux\"),\n            .next(550, \"10qux\"),\n            .completed(590)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 590)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    func testWithLatestFrom_TwoObservablesWithImmediateValues() {\n        let xs = BehaviorSubject<Int>(value: 3)\n        let ys = BehaviorSubject<Int>(value: 5)\n\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n                .take(1)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, \"35\"),\n            .completed(200)\n        ])\n    }\n\n    func testWithLatestFrom_Simple2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .completed(390)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .next(370, \"baz\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"4bar\"),\n            .next(310, \"5bar\"),\n            .next(340, \"6foo\"),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 390)\n        ])\n    }\n\n    func testWithLatestFrom_Simple3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .completed(390)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(245, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .next(370, \"baz\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(250, \"3bar\"),\n            .next(260, \"4bar\"),\n            .next(310, \"5bar\"),\n            .next(340, \"6foo\"),\n            .completed(390)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 390)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 390)\n        ])\n    }\n\n    func testWithLatestFrom_Error1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .next(410, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .next(550, 10),\n            .error(590, testError)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"4bar\"),\n            .next(310, \"5bar\"),\n            .next(340, \"6foo\"),\n            .next(410, \"7qux\"),\n            .next(420, \"8qux\"),\n            .next(470, \"9qux\"),\n            .next(550, \"10qux\"),\n            .error(590, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 590)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    func testWithLatestFrom_Error2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .completed(390)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .error(370, testError)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y in \"\\(x)\\(y)\" }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"4bar\"),\n            .next(310, \"5bar\"),\n            .next(340, \"6foo\"),\n            .error(370, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 370)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 370)\n        ])\n    }\n\n    func testWithLatestFrom_Error3() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .completed(390)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys) { x, y throws -> String in\n                if x == 5 {\n                    throw testError\n                }\n                return \"\\(x)\\(y)\"\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"4bar\"),\n            .error(310, testError)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 310)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 310)\n        ])\n    }\n\n    func testWithLatestFrom_MakeSureDefaultOverloadTakesSecondSequenceValues() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createHotObservable([\n            .next(90, 1),\n            .next(180, 2),\n            .next(250, 3),\n            .next(260, 4),\n            .next(310, 5),\n            .next(340, 6),\n            .next(410, 7),\n            .next(420, 8),\n            .next(470, 9),\n            .next(550, 10),\n            .completed(590)\n        ])\n\n        let ys = scheduler.createHotObservable([\n            .next(255, \"bar\"),\n            .next(330, \"foo\"),\n            .next(350, \"qux\"),\n            .completed(400)\n        ])\n\n        let res = scheduler.start {\n            xs.withLatestFrom(ys)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(260, \"bar\"),\n            .next(310, \"bar\"),\n            .next(340, \"foo\"),\n            .next(410, \"qux\"),\n            .next(420, \"qux\"),\n            .next(470, \"qux\"),\n            .next(550, \"qux\"),\n            .completed(590)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 590)\n        ])\n\n        XCTAssertEqual(ys.subscriptions, [\n            Subscription(200, 400)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testWithLatestFromReleasesResourcesOnComplete1() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).delay(.seconds(20), scheduler: scheduler).withLatestFrom(Observable<Int>.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testWithLatestFromReleasesResourcesOnComplete2() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).withLatestFrom(Observable<Int>.just(1).delay(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n\n    func testWithLatestFromReleasesResourcesOnError1() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler).withLatestFrom(Observable<Int>.just(1)).subscribe()\n        scheduler.start()\n    }\n\n    func testWithLatestFromReleasesResourcesOnError2() {\n        let scheduler = TestScheduler(initialClock: 0)\n        _ = Observable<Int>.just(1).withLatestFrom(Observable<Int>.never().timeout(.seconds(20), scheduler: scheduler)).subscribe()\n        scheduler.start()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+WithUnretainedTests.swift",
    "content": "//\n//  Observable+WithUnretainedTests.swift\n//  Tests\n//\n//  Created by Vincent Pradeilles on 01/01/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass WithUnretainedTests: XCTestCase {\n    fileprivate var testClass: TestClass!\n    var values: TestableObservable<Int>!\n    var tupleValues: TestableObservable<(Int, String)>!\n    let scheduler = TestScheduler(initialClock: 0)\n\n    override func setUp() {\n        super.setUp()\n\n        testClass = TestClass()\n        values = scheduler.createColdObservable([\n            .next(210, 1),\n            .next(215, 2),\n            .next(220, 3),\n            .next(225, 5),\n            .next(230, 8),\n            .completed(250)\n        ])\n\n        tupleValues = scheduler.createColdObservable([\n            .next(210, (1, \"a\")),\n            .next(215, (2, \"b\")),\n            .next(220, (3, \"c\")),\n            .next(225, (5, \"d\")),\n            .next(230, (8, \"e\")),\n            .completed(250)\n        ])\n    }\n\n    func testObjectAttached() {\n        let testClassId = testClass.id\n\n        let correctValues: [Recorded<Event<String>>] = [\n            .next(410, \"\\(testClassId), 1\"),\n            .next(415, \"\\(testClassId), 2\"),\n            .next(420, \"\\(testClassId), 3\"),\n            .next(425, \"\\(testClassId), 5\"),\n            .next(430, \"\\(testClassId), 8\"),\n            .completed(450)\n        ]\n\n        let res = scheduler.start {\n            self.values\n                .withUnretained(self.testClass)\n                .map { \"\\($0.id), \\($1)\" }\n        }\n\n        XCTAssertEqual(res.events, correctValues)\n    }\n\n    func testObjectDeallocates() {\n        _ = values\n            .withUnretained(testClass)\n            .subscribe()\n\n        // Confirm the object can be deallocated\n        XCTAssertTrue(testClass != nil)\n        testClass = nil\n        XCTAssertTrue(testClass == nil)\n    }\n\n    func testObjectDeallocatesSequenceCompletes() {\n        let testClassId = testClass.id\n\n        let correctValues: [Recorded<Event<String>>] = [\n            .next(410, \"\\(testClassId), 1\"),\n            .next(415, \"\\(testClassId), 2\"),\n            .next(420, \"\\(testClassId), 3\"),\n            .completed(425)\n        ]\n\n        let res = scheduler.start {\n            self.values\n                .withUnretained(self.testClass)\n                .do(onNext: { _, value in\n                    // Release the object in the middle of the sequence\n                    // to confirm it properly terminates the sequence\n                    if value == 3 {\n                        self.testClass = nil\n                    }\n                })\n                .map { \"\\($0.id), \\($1)\" }\n        }\n\n        XCTAssertEqual(res.events, correctValues)\n    }\n\n    func testResultsSelector() {\n        let testClassId = testClass.id\n\n        let correctValues: [Recorded<Event<String>>] = [\n            .next(410, \"\\(testClassId), 1, a\"),\n            .next(415, \"\\(testClassId), 2, b\"),\n            .next(420, \"\\(testClassId), 3, c\"),\n            .next(425, \"\\(testClassId), 5, d\"),\n            .next(430, \"\\(testClassId), 8, e\"),\n            .completed(450)\n        ]\n\n        let res = scheduler.start {\n            self.tupleValues\n                .withUnretained(self.testClass) { ($0, $1.0, $1.1) }\n                .map { \"\\($0.id), \\($1), \\($2)\" }\n        }\n\n        XCTAssertEqual(res.events, correctValues)\n    }\n}\n\nprivate class TestClass {\n    let id: String = UUID().uuidString\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ZipTests+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  Observable+ZipTests+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\n// combine latest\nextension ObservableZipTest {\n    // 2\n\n    func testZip_ImmediateSchedule2() {\n        let factories: [(Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.zip(e0, e1).map { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                },\n                { e0, e1 in\n                    Observable.zip(e0, e1) { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 3)\n        }\n    }\n\n    func testZip_Never2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.zip(e0, e1).map { (_: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1 in\n                    Observable.zip(e0, e1) { (_: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.zip(e0, e1).map { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                },\n                { e0, e1 in\n                    Observable.zip(e0, e1) { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(220)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n        }\n    }\n\n    func testZip_SymmetricReturn2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.zip(e0, e1).map { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                },\n                { e0, e1 in\n                    Observable.zip(e0, e1) { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(220, 3),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted2() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1 in\n                    Observable.zip(e0, e1).map { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                },\n                { e0, e1 in\n                    Observable.zip(e0, e1) { (a0: Int, a1: Int) -> Int in a0 + a1 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 10),\n                .completed(230)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    // 3\n\n    func testZip_ImmediateSchedule3() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2).map { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                },\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2) { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 6)\n        }\n    }\n\n    func testZip_Never3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2).map { (_: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2) { (_: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2).map { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                },\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2) { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(230)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    func testZip_SymmetricReturn3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2).map { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                },\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2) { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, 6),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted3() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2).map { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                },\n                { e0, e1, e2 in\n                    Observable.zip(e0, e1, e2) { (a0: Int, a1: Int, a2: Int) -> Int in a0 + a1 + a2 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 15),\n                .completed(240)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n        }\n    }\n\n    // 4\n\n    func testZip_ImmediateSchedule4() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3).map { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3) { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n            let v3: Observable<Int> = Observable.just(4)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2, v3)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 10)\n        }\n    }\n\n    func testZip_Never4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3).map { (_: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3) { (_: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3).map { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3) { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(240)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(240)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n        }\n    }\n\n    func testZip_SymmetricReturn4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3).map { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3) { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(240, 10),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3).map { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                },\n                { e0, e1, e2, e3 in\n                    Observable.zip(e0, e1, e2, e3) { (a0: Int, a1: Int, a2: Int, a3: Int) -> Int in a0 + a1 + a2 + a3 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .completed(250)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 20),\n                .completed(250)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    // 5\n\n    func testZip_ImmediateSchedule5() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n            let v3: Observable<Int> = Observable.just(4)\n            let v4: Observable<Int> = Observable.just(5)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2, v3, v4)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 15)\n        }\n    }\n\n    func testZip_Never5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4).map { (_: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4) { (_: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(240)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(250)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(250)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testZip_SymmetricReturn5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(250, 15),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted5() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                },\n                { e0, e1, e2, e3, e4 in\n                    Observable.zip(e0, e1, e2, e3, e4) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int) -> Int in a0 + a1 + a2 + a3 + a4 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .completed(250)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .completed(260)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 25),\n                .completed(260)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])\n        }\n    }\n\n    // 6\n\n    func testZip_ImmediateSchedule6() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n            let v3: Observable<Int> = Observable.just(4)\n            let v4: Observable<Int> = Observable.just(5)\n            let v5: Observable<Int> = Observable.just(6)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2, v3, v4, v5)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 21)\n        }\n    }\n\n    func testZip_Never6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5).map { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5) { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(240)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(250)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(260)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(260)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n        }\n    }\n\n    func testZip_SymmetricReturn6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .completed(400)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(260, 21),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted6() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                },\n                { e0, e1, e2, e3, e4, e5 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .completed(250)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .completed(260)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .completed(270)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 30),\n                .completed(270)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])\n        }\n    }\n\n    // 7\n\n    func testZip_ImmediateSchedule7() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n            let v3: Observable<Int> = Observable.just(4)\n            let v4: Observable<Int> = Observable.just(5)\n            let v5: Observable<Int> = Observable.just(6)\n            let v6: Observable<Int> = Observable.just(7)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2, v3, v4, v5, v6)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 28)\n        }\n    }\n\n    func testZip_Never7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6).map { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6) { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n            XCTAssertEqual(e6.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(240)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(250)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(260)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(270)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(270)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])\n        }\n    }\n\n    func testZip_SymmetricReturn7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .completed(400)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(270, 7),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(270, 28),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted7() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .completed(250)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .completed(260)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .completed(270)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .next(270, 11),\n                .completed(280)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 35),\n                .completed(280)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])\n        }\n    }\n\n    // 8\n\n    func testZip_ImmediateSchedule8() {\n        let factories: [(Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>, Observable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                }\n            ]\n\n        for factory in factories {\n            let v0: Observable<Int> = Observable.just(1)\n            let v1: Observable<Int> = Observable.just(2)\n            let v2: Observable<Int> = Observable.just(3)\n            let v3: Observable<Int> = Observable.just(4)\n            let v4: Observable<Int> = Observable.just(5)\n            let v5: Observable<Int> = Observable.just(6)\n            let v6: Observable<Int> = Observable.just(7)\n            let v7: Observable<Int> = Observable.just(8)\n\n            var result: Int! = nil\n\n            _ = factory(v0, v1, v2, v3, v4, v5, v6, v7)\n                .subscribe(onNext: { (x: Int) in result = x })\n\n            XCTAssertEqual(result, 36)\n        }\n    }\n\n    func testZip_Never8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7).map { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7) { (_: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int, _: Int) -> Int in 42 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e4 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e5 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e6 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let e7 = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n            XCTAssertEqual(e0.subscriptions, subscriptions)\n            XCTAssertEqual(e1.subscriptions, subscriptions)\n            XCTAssertEqual(e2.subscriptions, subscriptions)\n            XCTAssertEqual(e3.subscriptions, subscriptions)\n            XCTAssertEqual(e4.subscriptions, subscriptions)\n            XCTAssertEqual(e5.subscriptions, subscriptions)\n            XCTAssertEqual(e6.subscriptions, subscriptions)\n            XCTAssertEqual(e7.subscriptions, subscriptions)\n        }\n    }\n\n    func testZip_Empty8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                }\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(210)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(220)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(230)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(240)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(250)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(260)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(270)\n            ])\n\n            let e7: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(280)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(280)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 210)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 270)])\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 280)])\n        }\n    }\n\n    func testZip_SymmetricReturn8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .completed(400)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(250, 5),\n                .completed(400)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(270, 7),\n                .completed(400)\n            ])\n\n            let e7: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(280, 8),\n                .completed(400)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(280, 36),\n                .completed(400)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 400)])\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_AllCompleted8() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7).map { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                },\n                { e0, e1, e2, e3, e4, e5, e6, e7 in\n                    Observable.zip(e0, e1, e2, e3, e4, e5, e6, e7) { (a0: Int, a1: Int, a2: Int, a3: Int, a4: Int, a5: Int, a6: Int, a7: Int) -> Int in a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 }\n                }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .completed(220)\n            ])\n\n            let e1: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .completed(230)\n            ])\n\n            let e2: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .completed(240)\n            ])\n\n            let e3: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .completed(250)\n            ])\n\n            let e4: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .completed(260)\n            ])\n\n            let e5: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .completed(270)\n            ])\n\n            let e6: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .next(270, 11),\n                .completed(280)\n            ])\n\n            let e7: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n\n                .next(210, 5),\n                .next(220, 6),\n                .next(230, 7),\n                .next(240, 8),\n                .next(250, 9),\n                .next(260, 10),\n                .next(270, 11),\n                .next(280, 12),\n                .completed(290)\n            ])\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(e0, e1, e2, e3, e4, e5, e6, e7)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, 40),\n                .completed(290)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 220)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 240)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e4.subscriptions, [Subscription(200, 260)])\n            XCTAssertEqual(e5.subscriptions, [Subscription(200, 270)])\n            XCTAssertEqual(e6.subscriptions, [Subscription(200, 280)])\n            XCTAssertEqual(e7.subscriptions, [Subscription(200, 290)])\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ZipTests+arity.tt",
    "content": "//\n//  Observable+ZipTests+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 5/23/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\nimport RxSwift\nimport RxTest\n\n// combine latest\nextension ObservableZipTest {\n<% for i in 2 ... 8 { %>\n\n    // <%= i %>\n\n    func testZip_ImmediateSchedule<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"Observable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n            ]\n\n        for factory in factories {\n            <% for j in 0..<i { %>\n            let v<%= j %>: Observable<Int> = Observable.just(<%= j + 1 %>)<% } %>\n\n            var result: Int! = nil\n\n            _ = factory(<%= (Array(0..<i).map { \"v\\($0)\" }).joined(separator: \", \") %>)\n                .subscribe(onNext: { (x: Int) -> Void in result = x })\n\n            XCTAssertEqual(result, <%= (i + 1) * i / 2 %>)\n        }\n    }\n\n    func testZip_Never<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { _ in \"_: Int\" }).joined(separator: \", \") %>) -> Int in 42 }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { _ in \"_: Int\" }).joined(separator: \", \") %>) -> Int in 42 }\n                },\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            <% for j in 0..<i { %>\n            let e<%= j %> = scheduler.createHotObservable([\n                .next(150, 1)\n            ])\n            <% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [])\n\n            let subscriptions = [Subscription(200, 1000)]\n\n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, subscriptions)<% } %>\n        }\n    }\n\n    func testZip_Empty<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n            ]\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            <% for j in 0..<i { %>\n            let e<%= j %>: TestableObservable<Int> = scheduler.createHotObservable([\n                .completed(<%= 200 + (j + 1) * 10 %>)\n            ])\n            <% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(<%= 200 + i * 10 %>)\n            ])\n\n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 200 + (j + 1) * 10 %>)])<% } %>\n        }\n    }\n\n    func testZip_SymmetricReturn<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            <% for j in 0..<i { %>\n            let e<%= j %>: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(<%= 200 + (j + 1) * 10 %>, <%= j + 1 %>),\n                .completed(400)\n            ])\n            <% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(<%= 200 + i * 10 %>, <%= i * (i + 1) / 2 %>),\n                .completed(400)\n            ])\n\n<% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, 400)])<% } %>\n        }\n    }\n\n    func testZip_AllCompleted<%= i %>() {\n        let factories: [(<%= (Array(0..<i).map { _ in \"TestableObservable<Int>\" }).joined(separator: \", \") %>) -> Observable<Int>] =\n            [\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>).map { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n                { <%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %> in\n                    Observable.zip(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) { (<%= (Array(0..<i).map { \"a\\($0): Int\" }).joined(separator: \", \") %>) -> Int in <%= (Array(0..<i).map { \"a\\($0)\" }).joined(separator: \" + \") %> }\n                },\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            <% for j in 0..<i { %>\n            let e<%= j %>: TestableObservable<Int> = scheduler.createHotObservable([\n                .next(150, 1),\n    <% for k in 0...j { %> \n                .next(<%= 200 + (k + 1) * 10 %>, <%= 5 + k %>),<% } %>\n                .completed(<%= 200 + (j + 2) * 10 %>)\n            ])\n            <% } %>\n\n            let res = scheduler.start { () -> Observable<Int> in\n                factory(<%= (Array(0..<i).map { \"e\\($0)\" }).joined(separator: \", \") %>) \n            }\n\n            XCTAssertEqual(res.events, [\n                .next(210, <%= 5 * i %>),\n                .completed(<%= 220 + (i - 1) * 10 %>)\n            ])\n\n    <% for j in 0..<i { %>\n            XCTAssertEqual(e<%= j %>.subscriptions, [Subscription(200, <%= 220 + 10 * j %>)])<% } %>\n        }\n    }\n\n\n\n    <%} %>\n\n\n\n\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Observable+ZipTests.swift",
    "content": "//\n//  Observable+ZipTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/5/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableZipTest: RxTest {}\n\nextension ObservableZipTest {\n    func testZip_NeverEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let n = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let e = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(210)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(n, e) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [])\n\n        XCTAssertEqual(n.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(e.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testZip_EmptyNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let n = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let e = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(210)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(e, n) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [])\n\n        XCTAssertEqual(n.subscriptions, [\n            Subscription(200, 1000)\n        ])\n\n        XCTAssertEqual(e.subscriptions, [\n            Subscription(200, 210)\n        ])\n    }\n\n    func testZip_EmptyNonEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(210)\n        ])\n\n        let o = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(220)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(e, o) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.completed(220, Int.self)\n        ]\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(e.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(o.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_NonEmptyEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let e = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(210)\n        ])\n\n        let o = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(220)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o, e) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.completed(220, Int.self)\n        ]\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(e.subscriptions, [\n            Subscription(200, 210)\n        ])\n\n        XCTAssertEqual(o.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_NeverNonEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let n = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let o = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(220)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(n, o) { $0 + $1 }\n        }\n\n        let messages: [Recorded<Event<Int>>] = []\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(n.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testZip_NonEmptyNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let n = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let o = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(220)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o, n) { $0 + $1 }\n        }\n\n        let messages: [Recorded<Event<Int>>] = []\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(n.subscriptions, [\n            Subscription(200, 1000)\n        ])\n    }\n\n    func testZip_NonEmptyNonEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(230)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 3),\n            .completed(240)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { $0 + $1 }\n        }\n\n        let messages = Recorded.events(\n            .next(220, 2 + 3),\n            .completed(240)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 230)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 240)\n        ])\n    }\n\n    func testZip_EmptyError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_ErrorEmpty() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .completed(230)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_NeverError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_ErrorNever() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_ErrorError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(230, testError1)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError2)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError2, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_SomeError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(230)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError1)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError1, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_ErrorSome() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 2),\n            .completed(230)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .error(220, testError1)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { $0 + $1 }\n        }\n\n        let messages = [\n            Recorded.error(220, testError1, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_LeftCompletesFirst() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(220)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 4),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { $0 + $1 }\n        }\n\n        let messages = Recorded.events(\n            .next(215, 2 + 4),\n            .completed(225)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testZip_RightCompletesFirst() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 2),\n            .completed(220)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(215, 4),\n            .completed(225)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { $0 + $1 }\n        }\n\n        let messages = Recorded.events(\n            .next(215, 2 + 4),\n            .completed(225)\n        )\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 225)\n        ])\n    }\n\n    func testZip_LeftTriggersSelectorError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(220)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 4)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o1, o2) { _, _ throws -> Int in throw testError }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    func testZip_RightTriggersSelectorError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let o1 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(220, 2),\n            .completed(220)\n        ])\n\n        let o2 = scheduler.createHotObservable([\n            .next(150, 1),\n            .next(210, 4)\n        ])\n\n        let res = scheduler.start {\n            Observable.zip(o2, o1) { _, _ throws -> Int in throw testError }\n        }\n\n        let messages = [\n            Recorded.error(220, testError, Int.self)\n        ]\n\n        XCTAssertEqual(res.events, messages)\n\n        XCTAssertEqual(o1.subscriptions, [\n            Subscription(200, 220)\n        ])\n\n        XCTAssertEqual(o2.subscriptions, [\n            Subscription(200, 220)\n        ])\n    }\n\n    #if TRACE_RESOURCES\n    func testZipReleasesResourcesOnComplete1() {\n        _ = Observable.zip(Observable.just(1), Observable.just(1), resultSelector: +).subscribe()\n    }\n\n    func testZipReleasesResourcesOnError1() {\n        _ = Observable.zip(Observable.just(1), Observable<Int>.error(testError), resultSelector: +).subscribe()\n    }\n\n    func testZipReleasesResourcesOnComplete2() {\n        _ = Observable.zip(Observable.just(1), Observable.just(1)).subscribe()\n    }\n\n    func testZipReleasesResourcesOnError2() {\n        _ = Observable.zip(Observable.just(1), Observable<Int>.error(testError)).subscribe()\n    }\n\n    #endif\n}\n\nextension ObservableZipTest {\n    func testZip_NAry_emptyArray() {\n        let factories: [() -> Observable<EquatableArray<Int>>] =\n            [\n                { Observable.zip(([] as [Observable<Int>]).map { $0.asObservable() }) { EquatableArray($0) } },\n                { Observable.zip(([] as [Observable<Int>]).map { $0.asObservable() }).map { EquatableArray($0) } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let res = scheduler.start {\n                factory()\n            }\n\n            XCTAssertEqual(res.events, [\n                .completed(200)\n            ])\n        }\n    }\n\n    func testZip_NAry_symmetric() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<EquatableArray<Int>>] =\n            [\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }) { EquatableArray($0) } },\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }).map { EquatableArray($0) } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(250, 4),\n                .completed(420)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(240, 5),\n                .completed(410)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, EquatableArray([1, 2, 3])),\n                .next(260, EquatableArray([4, 5, 6])),\n                .completed(420)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 420)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 410)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 400)])\n        }\n    }\n\n    func testZip_NAry_asymmetric() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<EquatableArray<Int>>] =\n            [\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }) { EquatableArray($0) } },\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }).map { EquatableArray($0) } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .next(250, 4),\n                .completed(270)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(240, 5),\n                .next(290, 7),\n                .next(310, 9),\n                .completed(410)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(260, 6),\n                .next(280, 8),\n                .completed(300)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, EquatableArray([1, 2, 3])),\n                .next(260, EquatableArray([4, 5, 6])),\n                .completed(310)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 270)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 310)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 300)])\n        }\n    }\n\n    func testZip_NAry_error() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>) -> Observable<EquatableArray<Int>>] =\n            [\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }) { EquatableArray($0) } },\n                { e0, e1, e2 in Observable.zip([e0, e1, e2].map { $0.asObservable() }).map { EquatableArray($0) } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .error(250, testError)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .next(240, 5),\n                .completed(410)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(230, 3),\n                .next(260, 6),\n                .completed(400)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2)\n            }\n\n            XCTAssertEqual(res.events, [\n                .next(230, EquatableArray([1, 2, 3])),\n                .error(250, testError)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 250)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 250)])\n        }\n    }\n\n    func testZip_NAry_atLeastOneErrors4() {\n        let factories: [(TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>, TestableObservable<Int>)\n            -> Observable<Int>] =\n            [\n                { e0, e1, e2, e3 in Observable.zip([e0, e1, e2, e3].map { $0.asObservable() }) { _ in 42 } },\n                { e0, e1, e2, e3 in Observable.zip([e0, e1, e2, e3].map { $0.asObservable() }).map { _ in 42 } }\n            ]\n\n        for factory in factories {\n            let scheduler = TestScheduler(initialClock: 0)\n\n            let e0 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(210, 1),\n                .completed(400)\n            ])\n            let e1 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(220, 2),\n                .completed(400)\n            ])\n            let e2 = scheduler.createHotObservable([\n                .next(150, 1),\n                .error(230, testError)\n            ])\n            let e3 = scheduler.createHotObservable([\n                .next(150, 1),\n                .next(240, 4),\n                .completed(400)\n            ])\n\n            let res = scheduler.start {\n                factory(e0, e1, e2, e3)\n            }\n\n            XCTAssertEqual(res.events, [\n                .error(230, testError)\n            ])\n\n            XCTAssertEqual(e0.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e1.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e2.subscriptions, [Subscription(200, 230)])\n            XCTAssertEqual(e3.subscriptions, [Subscription(200, 230)])\n        }\n    }\n\n    #if TRACE_RESOURCES\n    func testZipArrayReleasesResourcesOnComplete1() {\n        _ = Observable.zip([Observable.just(1), Observable.just(1)]) { $0.reduce(0, +) }.subscribe()\n    }\n\n    func testZipArrayReleasesResourcesOnError1() {\n        _ = Observable.zip([Observable<Int>.error(testError), Observable.just(1)]) { $0.reduce(0, +) }.subscribe()\n    }\n\n    func testZipArrayReleasesResourcesOnComplete2() {\n        _ = Observable.zip([Observable.just(1), Observable.just(1)]).subscribe()\n    }\n\n    func testZipArrayReleasesResourcesOnError2() {\n        _ = Observable.zip([Observable<Int>.error(testError), Observable.just(1)]).subscribe()\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/ObservableType+SubscriptionTests.swift",
    "content": "//\n//  ObservableType+SubscriptionTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/15/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObservableSubscriptionTest: RxTest {}\n\nextension ObservableSubscriptionTest {\n    func testDefaultErrorHandler() {\n        var loggedErrors = [TestError]()\n\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [])\n\n        let originalErrorHandler = Hooks.defaultErrorHandler\n\n        Hooks.defaultErrorHandler = { _, error in\n            loggedErrors.append(error as! TestError)\n        }\n\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n\n        Hooks.defaultErrorHandler = originalErrorHandler\n\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n    }\n\n    func testCustomCaptureSubscriptionCallstack() {\n        var resultCallstack = [String]()\n\n        Hooks.defaultErrorHandler = { callstack, _ in\n            resultCallstack = callstack\n        }\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(resultCallstack, [])\n\n        Hooks.customCaptureSubscriptionCallstack = {\n            [\"frame1\"]\n        }\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(resultCallstack, [])\n\n        Hooks.recordCallStackOnError = true\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(resultCallstack, [\"frame1\"])\n\n        Hooks.customCaptureSubscriptionCallstack = {\n            [\"frame1\", \"frame2\"]\n        }\n        _ = Observable<Int>.error(testError).subscribe()\n        XCTAssertEqual(resultCallstack, [\"frame1\", \"frame2\"])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/ObserverTests.swift",
    "content": "//\n//  ObserverTests.swift\n//  Tests\n//\n//  Created by Rob Cheung on 9/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ObserverTests: RxTest {}\n\nextension ObserverTests {\n    func testConvenienceOn_Next() {\n        var observer: AnyObserver<Int>!\n        let a: Observable<Int> = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        }\n\n        var elements = [Int]()\n\n        let subscription = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer.onNext(0)\n\n        XCTAssertEqual(elements, [0])\n\n        subscription.dispose()\n    }\n\n    func testConvenienceOn_Error() {\n        var observer: AnyObserver<Int>!\n        let a: Observable<Int> = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        }\n\n        var elements = [Int]()\n        var errorNotification: Swift.Error!\n\n        _ = a.subscribe(\n            onNext: { n in elements.append(n) },\n            onError: { e in\n                errorNotification = e\n            }\n        )\n\n        XCTAssertEqual(elements, [])\n\n        observer.onNext(0)\n        XCTAssertEqual(elements, [0])\n\n        observer.onError(testError)\n\n        observer.onNext(1)\n        XCTAssertEqual(elements, [0])\n        XCTAssertErrorEqual(errorNotification, testError)\n    }\n\n    func testConvenienceOn_Complete() {\n        var observer: AnyObserver<Int>!\n        let a: Observable<Int> = Observable.create { o in\n            observer = o\n            return Disposables.create()\n        }\n\n        var elements = [Int]()\n\n        _ = a.subscribe(onNext: { n in\n            elements.append(n)\n        })\n\n        XCTAssertEqual(elements, [])\n\n        observer.onNext(0)\n        XCTAssertEqual(elements, [0])\n\n        observer.onCompleted()\n\n        observer.onNext(1)\n        XCTAssertEqual(elements, [0])\n    }\n}\n\nextension ObserverTests {\n    func testMapElement() {\n        let observer = PrimitiveMockObserver<Int>()\n\n        observer.mapObserver { (x: Int) -> Int in\n            return x / 2\n        }.on(.next(2))\n\n        XCTAssertEqual(observer.events, [.next(1)])\n    }\n\n    func testMapElementCompleted() {\n        let observer = PrimitiveMockObserver<Int>()\n\n        observer.mapObserver { (x: Int) -> Int in\n            return x / 2\n        }.on(.completed)\n\n        XCTAssertEqual(observer.events, [.completed()])\n    }\n\n    func testMapElementError() {\n        let observer = PrimitiveMockObserver<Int>()\n\n        observer.mapObserver { (x: Int) -> Int in\n            return x / 2\n        }.on(.error(testError))\n\n        XCTAssertEqual(observer.events, [.error(testError)])\n    }\n\n    func testMapElementThrow() {\n        let observer = PrimitiveMockObserver<Int>()\n\n        observer.mapObserver { _ -> Int in\n            throw testError\n        }.on(.next(2))\n\n        XCTAssertEqual(observer.events, [.error(testError)])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/PrimitiveSequence+ConcurrencyTests.swift",
    "content": "//\n//  PrimitiveSequence+ConcurrencyTests.swift\n//  Tests\n//\n//  Created by Shai Mishali on 22/09/2021.\n//  Copyright © 2021 Krunoslav Zaher. All rights reserved.\n//\n\n#if swift(>=5.7)\nimport Dispatch\nimport RxBlocking\nimport RxSwift\nimport RxTest\nimport XCTest\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nclass PrimitiveSequenceConcurrencyTests: RxTest {\n    let scheduler = TestScheduler(initialClock: 0)\n}\n\n// MARK: - Single\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension PrimitiveSequenceConcurrencyTests {\n    func testSingleEmitsElement() async throws {\n        let single = Single.just(\"Hello\")\n\n        do {\n            let value = try await single.value\n            XCTAssertEqual(value, \"Hello\")\n        } catch {\n            XCTFail(\"Should not throw an error\")\n        }\n    }\n\n    func testSingleThrowsError() async throws {\n        let single = Single<String>.error(RxError.unknown)\n\n        do {\n            _ = try await single.value\n            XCTFail(\"Should not proceed beyond try\")\n        } catch {\n            XCTAssertTrue(true)\n        }\n    }\n\n    func testSingleThrowsCancellationWithoutEvents() async throws {\n        let single = Single<Void>.never()\n\n        Task {\n            do {\n                try await single.value\n                XCTFail(\"Should not proceed beyond try\")\n            } catch {\n                XCTAssertTrue(Task.isCancelled)\n                XCTAssertTrue(error is CancellationError)\n            }\n        }.cancel()\n    }\n\n    func testSingleNotThrowingCancellation() async throws {\n        let single = Single.just(())\n\n        let task = Task {\n            do {\n                try await single.value\n                XCTAssertTrue(true)\n            } catch {\n                XCTFail()\n            }\n        }\n\n        try await Task.sleep(nanoseconds: 1_000_000)\n        task.cancel()\n    }\n\n    func testCreateSingleFromAsync() {\n        let randomResult = Int.random(in: 100 ... 100_000)\n        let work: () async throws -> Int = { randomResult }\n\n        let single = Single.create {\n            try await work()\n        }\n\n        XCTAssertEqual(\n            try! single.toBlocking().toArray(),\n            [randomResult]\n        )\n    }\n\n    /// A previous implementation of the `Single` to swift concurrency bridge had a bug where it would sometimes call the continuation twice.\n    /// The current number of iterations is a sweet spot to not make the tests too slow while still catching the bug in most runs.\n    /// If you are debugging this issue you might want to increase the iterations and/or run this test repeatedly.\n    func testSingleContinuationIsNotResumedTwice() {\n        let expectation = XCTestExpectation()\n        let iterations = 10000\n        for i in 0 ..< iterations {\n            DispatchQueue.global(qos: .userInitiated).async {\n                let single = Single<Int>.create { observer in\n                    DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                        observer(.success(42))\n                    }\n                    return Disposables.create()\n                }\n\n                let task = Task {\n                    _ = try await single.value\n                }\n\n                DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                    task.cancel()\n                }\n\n                self.sleep(Double.random(in: 0.004 ... 0.006))\n\n                if i == iterations - 1 {\n                    expectation.fulfill()\n                }\n            }\n        }\n\n        wait(for: [expectation], timeout: 10)\n    }\n}\n\n// MARK: - Maybe\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension PrimitiveSequenceConcurrencyTests {\n    func testMaybeEmitsElement() async throws {\n        let maybe = Maybe.just(\"Hello\")\n\n        do {\n            let value = try await maybe.value\n            XCTAssertNotNil(value)\n            XCTAssertEqual(value, \"Hello\")\n        } catch {\n            XCTFail(\"Should not throw an error\")\n        }\n    }\n\n    func testMaybeEmitsNilWithoutValue() async throws {\n        let maybe = Maybe<String>.empty()\n\n        do {\n            let value = try await maybe.value\n            XCTAssertNil(value)\n        } catch {\n            XCTFail(\"Should not throw an error\")\n        }\n    }\n\n    func testMaybeThrowsError() async throws {\n        let maybe = Maybe<String>.error(RxError.unknown)\n\n        do {\n            _ = try await maybe.value\n            XCTFail(\"Should not proceed beyond try\")\n        } catch {\n            XCTAssertTrue(true)\n        }\n    }\n\n    func testMaybeThrowsCancellationWithoutEvents() async throws {\n        let maybe = Maybe<Void>.never()\n\n        Task {\n            do {\n                try await maybe.value\n                XCTFail(\"Should not proceed beyond try\")\n            } catch {\n                XCTAssertTrue(Task.isCancelled)\n                XCTAssertTrue(error is CancellationError)\n            }\n        }.cancel()\n    }\n\n    func testMaybeNotThrowingCancellationWhenCompleted() async throws {\n        let maybe = Maybe<Int>.empty()\n\n        Task {\n            do {\n                let value = try await maybe.value\n                XCTAssertNil(value)\n            } catch {\n                XCTFail(\"Should not throw an error\")\n            }\n        }.cancel()\n    }\n\n    func testMaybeNotThrowingCancellation() async throws {\n        let maybe = Maybe.just(())\n\n        let task = Task {\n            do {\n                try await maybe.value\n                XCTAssertTrue(true)\n            } catch {\n                XCTFail(\"Should not throw an error\")\n            }\n        }\n\n        try await Task.sleep(nanoseconds: 1_000_000)\n        task.cancel()\n    }\n\n    /// A previous implementation of the `Single` to swift concurrency bridge had a bug where it would sometimes call the continuation twice.\n    /// The current number of iterations is a sweet spot to not make the tests too slow while still catching the bug in most runs.\n    /// If you are debugging this issue you might want to increase the iterations and/or run this test repeatedly.\n    func testMaybeContinuationIsNotResumedTwice() {\n        let expectation = XCTestExpectation()\n        let iterations = 10000\n        for i in 0 ..< iterations {\n            DispatchQueue.global(qos: .userInitiated).async {\n                let maybe = Maybe<Bool>.create { observer in\n                    DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                        observer(.success(true))\n                    }\n                    return Disposables.create()\n                }\n\n                let task = Task {\n                    _ = try await maybe.value\n                }\n\n                DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                    task.cancel()\n                }\n\n                self.sleep(Double.random(in: 0.004 ... 0.006))\n\n                if i == iterations - 1 {\n                    expectation.fulfill()\n                }\n            }\n        }\n\n        wait(for: [expectation], timeout: 10)\n    }\n}\n\n// MARK: - Completable\n\n@available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *)\nextension PrimitiveSequenceConcurrencyTests {\n    func testCompletableEmitsVoidOnCompletion() async throws {\n        let completable = Completable.empty()\n\n        do {\n            let value: Void = try await completable.value\n            XCTAssert(value == ())\n        } catch {\n            XCTFail(\"Should not throw an error\")\n        }\n    }\n\n    func testCompletableThrowsError() async throws {\n        let completable = Completable.error(RxError.unknown)\n\n        do {\n            _ = try await completable.value\n            XCTFail(\"Should not proceed beyond try\")\n        } catch {\n            XCTAssertTrue(true)\n        }\n    }\n\n    func testCompletableThrowsCancellationWithoutEvents() async throws {\n        let completable = Completable.never()\n\n        Task {\n            do {\n                try await completable.value\n                XCTFail()\n            } catch {\n                XCTAssertTrue(Task.isCancelled)\n                XCTAssertTrue(error is CancellationError)\n            }\n        }.cancel()\n    }\n\n    func testCompletableNotThrowingCancellation() async throws {\n        let completable = Completable.empty()\n\n        Task {\n            do {\n                try await completable.value\n                XCTAssertTrue(true)\n            } catch {\n                XCTFail(\"Should not throw an error\")\n            }\n        }.cancel()\n    }\n\n    /// A previous implementation of the `Single` to swift concurrency bridge had a bug where it would sometimes call the continuation twice.\n    /// The current number of iterations is a sweet spot to not make the tests too slow while still catching the bug in most runs.\n    /// If you are debugging this issue you might want to increase the iterations and/or run this test repeatedly.\n    func testCompletableContinuationIsNotResumedTwice() {\n        let expectation = XCTestExpectation()\n        let iterations = 10000\n        for i in 0 ..< iterations {\n            DispatchQueue.global(qos: .userInitiated).async {\n                let completable = Completable.create { observer in\n                    DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                        observer(.completed)\n                    }\n                    return Disposables.create()\n                }\n\n                let task = Task {\n                    _ = try await completable.value\n                }\n\n                DispatchQueue.global(qos: .userInitiated).asyncAfter(deadline: .now() + 0.005) {\n                    task.cancel()\n                }\n\n                self.sleep(Double.random(in: 0.004 ... 0.006))\n\n                if i == iterations - 1 {\n                    expectation.fulfill()\n                }\n            }\n        }\n\n        wait(for: [expectation], timeout: 10)\n    }\n}\n#endif\n"
  },
  {
    "path": "Tests/RxSwiftTests/PrimitiveSequenceTest+zip+arity.swift",
    "content": "// This file is autogenerated. Take a look at `Preprocessor` target in RxSwift project\n//\n//  PrimitiveSequenceTest+zip+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/12/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\n// 2\n\nextension SingleTest {\n    func testZip2_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1)) { $0 + $1 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 2)\n    }\n\n    func testZip2_tuple() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1)).map { $0 + $1 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 2)\n    }\n}\n\nextension MaybeTest {\n    func testZip2_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1)) { $0 + $1 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 2)\n    }\n\n    func testZip2_tuple() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1)).map { $0 + $1 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 2)\n    }\n}\n\n// 3\n\nextension SingleTest {\n    func testZip3_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 3)\n    }\n\n    func testZip3_tuple() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1)).map { $0 + $1 + $2 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 3)\n    }\n}\n\nextension MaybeTest {\n    func testZip3_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 3)\n    }\n\n    func testZip3_tuple() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1)).map { $0 + $1 + $2 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 3)\n    }\n}\n\n// 4\n\nextension SingleTest {\n    func testZip4_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 + $3 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 4)\n    }\n\n    func testZip4_tuple() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1)).map { $0 + $1 + $2 + $3 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 4)\n    }\n}\n\nextension MaybeTest {\n    func testZip4_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 + $3 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 4)\n    }\n\n    func testZip4_tuple() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)).map { $0 + $1 + $2 + $3 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 4)\n    }\n}\n\n// 5\n\nextension SingleTest {\n    func testZip5_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 + $3 + $4 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 5)\n    }\n\n    func testZip5_tuple() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1)).map { $0 + $1 + $2 + $3 + $4 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 5)\n    }\n}\n\nextension MaybeTest {\n    func testZip5_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 + $3 + $4 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 5)\n    }\n\n    func testZip5_tuple() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)).map { $0 + $1 + $2 + $3 + $4 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 5)\n    }\n}\n\n// 6\n\nextension SingleTest {\n    func testZip6_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 6)\n    }\n\n    func testZip6_tuple() {\n        let singleZip = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) -> Int in a + b + c + d + e + f }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 6)\n    }\n}\n\nextension MaybeTest {\n    func testZip6_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 6)\n    }\n\n    func testZip6_tuple() {\n        let singleZip = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) -> Int in a + b + c + d + e + f }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 6)\n    }\n}\n\n// 7\n\nextension SingleTest {\n    func testZip7_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 + $6 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 7)\n    }\n\n    func testZip7_tuple() {\n        let singleZip = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int) -> Int in a + b + c + d + e + f + g }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 7)\n    }\n}\n\nextension MaybeTest {\n    func testZip7_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 + $6 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 7)\n    }\n\n    func testZip7_tuple() {\n        let singleZip = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int) -> Int in a + b + c + d + e + f + g }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 7)\n    }\n}\n\n// 8\n\nextension SingleTest {\n    func testZip8_selector() {\n        let singleResult: Single<Int> = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 + $6 + $7 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 8)\n    }\n\n    func testZip8_tuple() {\n        let singleZip = Single.zip(Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1), Single.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int, h: Int) -> Int in a + b + c + d + e + f + g + h }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 8)\n    }\n}\n\nextension MaybeTest {\n    func testZip8_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1)) { $0 + $1 + $2 + $3 + $4 + $5 + $6 + $7 }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 8)\n    }\n\n    func testZip8_tuple() {\n        let singleZip = Maybe.zip(Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1), Maybe.just(1))\n        let singleResult = singleZip.map { (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int, g: Int, h: Int) -> Int in a + b + c + d + e + f + g + h }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, 8)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/PrimitiveSequenceTest+zip+arity.tt",
    "content": "//\n//  PrimitiveSequenceTest+zip+arity.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/12/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\nimport RxSwift\nimport RxTest\n\n<% for i in 2 ... 8 { %>\n\n// <%= i %>\n\nextension SingleTest {\n    func testZip<%= i %>_selector() {\n        let singleResult: Single<Int> = Single.zip(<%= (Array(1...i).map { _ in \"Single.just(1)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \" + \") %> }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, <%= i %>)\n    }\n\n    func testZip<%= i %>_tuple() {\n        let singleResult: Single<Int> = Single.zip(<%= (Array(1...i).map { _ in \"Single.just(1)\" }).joined(separator: \", \") %>).map { <%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \" + \") %> }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, <%= i %>)\n    }\n}\n\nextension MaybeTest {\n    func testZip<%= i %>_selector() {\n        let singleResult: Maybe<Int> = Maybe.zip(<%= (Array(1...i).map { _ in \"Maybe.just(1)\" }).joined(separator: \", \") %>) { <%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \" + \") %> }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, <%= i %>)\n    }\n\n    func testZip<%= i %>_tuple() {\n        let singleResult: Maybe<Int> = Maybe.zip(<%= (Array(1...i).map { _ in \"Maybe.just(1)\" }).joined(separator: \", \") %>).map { <%= (Array(0..<i).map { \"$\\($0)\" }).joined(separator: \" + \") %> }\n\n        let result = try! singleResult\n            .toBlocking().first()!\n        XCTAssertEqual(result, <%= i %>)\n    }\n}\n\n<% } %>\n"
  },
  {
    "path": "Tests/RxSwiftTests/PublishSubjectTest.swift",
    "content": "//\n//  PublishSubjectTest.swift\n//  Tests\n//\n//  Created by Ryszkiewicz Peter, US-204 on 5/18/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass PublishSubjectTest: RxTest {\n    func test_hasObserversNoObservers() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: PublishSubject<Int>! = nil\n\n        scheduler.scheduleAt(100) { subject = PublishSubject<Int>() }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversOneObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: PublishSubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = PublishSubject<Int>() }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversManyObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: PublishSubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = PublishSubject<Int>() }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(301) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(302) { subscription3 = subject.subscribe(results3) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(405) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(410) { subscription2.dispose() }\n        scheduler.scheduleAt(415) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(420) { subscription3.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/QueueTests.swift",
    "content": "//\n//  QueueTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/21/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\n@testable import RxSwift\nimport XCTest\n\nclass QueueTest: RxTest {\n    override func setUp() {\n        super.setUp()\n    }\n\n    override func tearDown() {\n        super.tearDown()\n    }\n}\n\nextension QueueTest {\n    func test() {\n        var queue: Queue<Int> = Queue(capacity: 2)\n\n        XCTAssertEqual(queue.count, 0)\n\n        for i in 100 ..< 200 {\n            queue.enqueue(i)\n\n            let allElements = Array(queue)\n            let correct = Array(100 ... i)\n\n            XCTAssertEqual(allElements, correct)\n            XCTAssertEqual(queue.peek(), 100)\n            XCTAssertEqual(queue.count, i - 100 + 1)\n        }\n\n        for i in 100 ..< 200 {\n            let allElements2 = Array(queue)\n            let correct2 = Array(i ... 199)\n\n            XCTAssertEqual(allElements2, correct2)\n            XCTAssertEqual(queue.dequeue(), i)\n            XCTAssertEqual(queue.count, 200 - i - 1)\n        }\n    }\n\n    func testComplexity() {\n        var queue: Queue<Int> = Queue(capacity: 2)\n\n        XCTAssertEqual(queue.count, 0)\n\n        for i in 0 ..< 200_000 {\n            queue.enqueue(i)\n        }\n\n        XCTAssertEqual(Array(0 ..< 200_000), Array(queue))\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Reactive+Tests.swift",
    "content": "//\n//  Reactive+Tests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/16/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n\nclass ReactiveTests: RxTest {}\n\nprotocol Objecting: ReactiveCompatible {\n    var number: Int { get set }\n}\n\nfinal class MyObject: Objecting {\n    var number = 0\n    fileprivate var something = \"\" // this emulates associated objects\n}\n\nstruct MyStruct: ReactiveCompatible {\n    var number = 0\n}\n\nextension Reactive where Base: MyObject {\n    var somethingPublic: String {\n        get { base.something }\n        set { base.something = newValue }\n    }\n}\n\nextension Reactive where Base: Objecting {\n    var numberPublic: Int { base.number }\n}\n\nextension Reactive where Base == MyStruct {\n    var numberPublic: Int { base.number }\n}\n\nextension ReactiveTests {\n    func testEnablesMutations() {\n        var object = MyObject()\n        object.rx.somethingPublic = \"Aha\"\n\n        XCTAssertEqual(object.something, \"Aha\")\n        XCTAssertEqual(object.rx.somethingPublic, \"Aha\")\n    }\n\n    func testReactiveStruct() {\n        var strct = MyStruct()\n        strct.number = 800\n        XCTAssertEqual(strct.rx.numberPublic, 800)\n    }\n\n    func testReactiveProtocol() {\n        let object = MyObject()\n        XCTAssertEqual(object.number, object.rx.numberPublic)\n\n        object.number = 1000\n        XCTAssertEqual(object.rx.numberPublic, 1000)\n    }\n\n    func testDynamicLookup() {\n        let object = MyObject()\n        _ = Observable.just(10).bind(to: object.rx.number)\n        XCTAssertEqual(object.number, 10)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/RecursiveLockTest.swift",
    "content": "//\n//  RecursiveLockTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/22/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport XCTest\n\n#if os(Linux)\nimport Foundation\nimport Glibc\n#else\nimport Darwin\n#endif\n\nprivate class StrandClosure {\n    let closure: () -> Void\n\n    init(closure: @escaping () -> Void) {\n        self.closure = closure\n    }\n}\n\n#if os(Linux)\nprivate func runner(arg: UnsafeMutableRawPointer?) -> UnsafeMutableRawPointer? {\n    guard let arg else { return nil }\n    let unmanaged = Unmanaged<StrandClosure>.fromOpaque(arg)\n    unmanaged.takeUnretainedValue().closure()\n    unmanaged.release()\n    return nil\n}\n#else\nprivate func runner(arg: UnsafeMutableRawPointer) -> UnsafeMutableRawPointer? {\n    let unmanaged = Unmanaged<StrandClosure>.fromOpaque(arg)\n    unmanaged.takeUnretainedValue().closure()\n    unmanaged.release()\n    return nil\n}\n#endif\n\nclass RecursiveLockTests: RxTest {\n    var joinPthreads = Synchronized([pthread_t]())\n\n    override func tearDown() {\n        super.tearDown()\n\n        for thread in joinPthreads.value {\n            pthread_join(thread, nil)\n        }\n    }\n\n    // code taken from https://github.com/ketzusaka/Strand/blob/master/Sources/Strand.swift\n\n    func thread(action: @escaping () -> Void) {\n        let holder = Unmanaged.passRetained(StrandClosure(closure: action))\n        let pointer = UnsafeMutableRawPointer(holder.toOpaque())\n        #if os(Linux)\n        var pthread: pthread_t = 0\n        guard pthread_create(&pthread, nil, runner, pointer) == 0 else {\n            holder.release()\n            fatalError(\"Something went wrong\")\n        }\n        #else\n        var maybePthread: pthread_t?\n        guard pthread_create(&maybePthread, nil, runner, pointer) == 0,\n              let pthread = maybePthread\n        else {\n            holder.release()\n            fatalError(\"Something went wrong\")\n        }\n        #endif\n\n        joinPthreads.mutate { $0.append(pthread) }\n    }\n}\n\nprivate protocol Lock {\n    func lock()\n    func unlock()\n}\n\nextension RecursiveLock: Lock {}\n\nprivate struct NoLock: Lock {\n    func lock() {}\n\n    func unlock() {}\n}\n\nextension RecursiveLockTests {\n    func testSynchronizes() {\n        func performTestLock(lock: Lock, expectedValues: [Int]) {\n            let values = Synchronized([Int]())\n\n            let expectation1 = expectation(description: \"first finishes\")\n            let expectation2 = expectation(description: \"second finishes\")\n\n            thread {\n                lock.lock()\n                self.thread {\n                    lock.lock()\n                    values.mutate { $0.append(2) }\n                    lock.unlock()\n\n                    expectation2.fulfill()\n                }\n                Thread.sleep(forTimeInterval: 0.3)\n                values.mutate { $0.append(1) }\n                lock.unlock()\n\n                expectation1.fulfill()\n            }\n\n            waitForExpectations(timeout: 2.0) { e in\n                XCTAssertNil(e)\n            }\n\n            XCTAssertEqual(values.value, expectedValues)\n        }\n\n        performTestLock(lock: RecursiveLock(), expectedValues: [1, 2])\n        performTestLock(lock: NoLock(), expectedValues: [2, 1])\n    }\n\n    func testIsReentrant() {\n        let recursiveLock = RecursiveLock()\n\n        recursiveLock.lock()\n        recursiveLock.lock()\n        recursiveLock.unlock()\n        recursiveLock.unlock()\n    }\n\n    #if TRACE_RESOURCES\n    func testLockUnlockCountsResources() {\n        let lock = RecursiveLock()\n\n        // Test that lock/unlock are balanced by checking the net effect.\n        let beforeLockUnlock = Resources.total\n        lock.lock()\n        lock.unlock()\n        let afterLockUnlock = Resources.total\n\n        XCTAssertEqual(beforeLockUnlock, afterLockUnlock)\n    }\n    #endif\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/ReplaySubjectTest.swift",
    "content": "//\n//  ReplaySubjectTest.swift\n//  Tests\n//\n//  Created by Ryszkiewicz Peter, US-204 on 5/18/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass ReplaySubjectTest: RxTest {\n    func test_hasObserversNoObservers() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 1) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversOneObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 1) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_hasObserversManyObserver() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n\n        let results1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let results2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        let results3 = scheduler.createObserver(Int.self)\n        var subscription3: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 1) }\n        scheduler.scheduleAt(250) { XCTAssertFalse(subject.hasObservers) }\n        scheduler.scheduleAt(300) { subscription1 = subject.subscribe(results1) }\n        scheduler.scheduleAt(301) { subscription2 = subject.subscribe(results2) }\n        scheduler.scheduleAt(302) { subscription3 = subject.subscribe(results3) }\n        scheduler.scheduleAt(350) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(400) { subscription1.dispose() }\n        scheduler.scheduleAt(405) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(410) { subscription2.dispose() }\n        scheduler.scheduleAt(415) { XCTAssertTrue(subject.hasObservers) }\n        scheduler.scheduleAt(420) { subscription3.dispose() }\n        scheduler.scheduleAt(450) { XCTAssertFalse(subject.hasObservers) }\n\n        scheduler.start()\n    }\n\n    func test_noEvents() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let subject = ReplaySubject<Int>.create(bufferSize: 3)\n        let result = scheduler.createObserver(Int.self)\n\n        _ = subject.subscribe(result)\n\n        XCTAssertTrue(result.events.isEmpty)\n    }\n\n    func test_fewerEventsThanBufferSize() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(300) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(350) {\n            XCTAssertEqual(result.events, [\n                .next(300, 1),\n                .next(300, 2)\n            ])\n        }\n        scheduler.scheduleAt(400) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_moreEventsThanBufferSize() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(250) { subject.onNext(3) }\n        scheduler.scheduleAt(300) { subject.onNext(4) }\n        scheduler.scheduleAt(350) { subject.onNext(5) }\n        scheduler.scheduleAt(400) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(450) {\n            XCTAssertEqual(result.events, [\n                .next(400, 3),\n                .next(400, 4),\n                .next(400, 5)\n            ])\n        }\n        scheduler.scheduleAt(500) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_moreEventsThanBufferSizeMultipleObservers() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result1 = scheduler.createObserver(Int.self)\n        var subscription1: Disposable! = nil\n\n        let result2 = scheduler.createObserver(Int.self)\n        var subscription2: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subscription1 = subject.subscribe(result1) }\n        scheduler.scheduleAt(200) { subject.onNext(1) }\n        scheduler.scheduleAt(250) { subject.onNext(2) }\n        scheduler.scheduleAt(300) { subject.onNext(3) }\n        scheduler.scheduleAt(350) { subject.onNext(4) }\n        scheduler.scheduleAt(400) { subject.onNext(5) }\n        scheduler.scheduleAt(450) { subscription2 = subject.subscribe(result2) }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result1.events, [\n                .next(200, 1),\n                .next(250, 2),\n                .next(300, 3),\n                .next(350, 4),\n                .next(400, 5)\n            ])\n            XCTAssertEqual(result2.events, [\n                .next(450, 3),\n                .next(450, 4),\n                .next(450, 5)\n            ])\n        }\n        scheduler.scheduleAt(550) {\n            subscription1.dispose()\n            subscription2.dispose()\n        }\n\n        scheduler.start()\n    }\n\n    func test_subscribingBeforeComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(250) { subject.onNext(3) }\n        scheduler.scheduleAt(300) { subject.onNext(4) }\n        scheduler.scheduleAt(350) { subject.onNext(5) }\n        scheduler.scheduleAt(400) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(450) { subject.onCompleted() }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result.events, [\n                .next(400, 3),\n                .next(400, 4),\n                .next(400, 5),\n                .completed(450)\n            ])\n        }\n        scheduler.scheduleAt(550) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_subscribingAfterComplete() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(250) { subject.onNext(3) }\n        scheduler.scheduleAt(300) { subject.onNext(4) }\n        scheduler.scheduleAt(350) { subject.onNext(5) }\n        scheduler.scheduleAt(400) { subject.onCompleted() }\n        scheduler.scheduleAt(450) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result.events, [\n                .next(450, 3),\n                .next(450, 4),\n                .next(450, 5),\n                .completed(450)\n            ])\n        }\n        scheduler.scheduleAt(550) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_subscribingBeforeError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(250) { subject.onNext(3) }\n        scheduler.scheduleAt(300) { subject.onNext(4) }\n        scheduler.scheduleAt(350) { subject.onNext(5) }\n        scheduler.scheduleAt(400) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(450) { subject.onError(testError) }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result.events, [\n                .next(400, 3),\n                .next(400, 4),\n                .next(400, 5),\n                .error(450, testError)\n            ])\n        }\n        scheduler.scheduleAt(550) { subscription.dispose() }\n\n        scheduler.start()\n    }\n\n    func test_subscribingAfterError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var subject: ReplaySubject<Int>! = nil\n        let result = scheduler.createObserver(Int.self)\n        var subscription: Disposable! = nil\n\n        scheduler.scheduleAt(100) { subject = ReplaySubject.create(bufferSize: 3) }\n        scheduler.scheduleAt(150) { subject.onNext(1) }\n        scheduler.scheduleAt(200) { subject.onNext(2) }\n        scheduler.scheduleAt(250) { subject.onNext(3) }\n        scheduler.scheduleAt(300) { subject.onNext(4) }\n        scheduler.scheduleAt(350) { subject.onNext(5) }\n        scheduler.scheduleAt(400) { subject.onError(testError) }\n        scheduler.scheduleAt(450) { subscription = subject.subscribe(result) }\n        scheduler.scheduleAt(500) {\n            XCTAssertEqual(result.events, [\n                .next(450, 3),\n                .next(450, 4),\n                .next(450, 5),\n                .error(450, testError)\n            ])\n        }\n        scheduler.scheduleAt(550) { subscription.dispose() }\n\n        scheduler.start()\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/SchedulerTests.swift",
    "content": "//\n//  SchedulerTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 7/22/16.\n//  Copyright © 2016 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n#if os(Linux)\nimport Dispatch\nimport Glibc\n#endif\n\nimport Foundation\n\nclass ConcurrentDispatchQueueSchedulerTests: RxTest {\n    func createScheduler() -> SchedulerType {\n        ConcurrentDispatchQueueScheduler(qos: .userInitiated)\n    }\n}\n\nfinal class SerialDispatchQueueSchedulerTests: RxTest {\n    func createScheduler() -> SchedulerType {\n        SerialDispatchQueueScheduler(qos: .userInitiated)\n    }\n}\n\nclass OperationQueueSchedulerTests: RxTest {}\n\nextension ConcurrentDispatchQueueSchedulerTests {\n    func test_scheduleRelative() {\n        let expectScheduling = expectation(description: \"wait\")\n        let start = Date()\n\n        var interval = 0.0\n\n        let scheduler = createScheduler()\n\n        _ = scheduler.scheduleRelative(1, dueTime: .milliseconds(500)) { _ -> Disposable in\n            interval = Date().timeIntervalSince(start)\n            expectScheduling.fulfill()\n            return Disposables.create()\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertEqual(interval, 0.5, accuracy: 0.2)\n    }\n\n    func test_scheduleRelativeCancel() {\n        let expectScheduling = expectation(description: \"wait\")\n        let start = Date()\n\n        var interval = 0.0\n\n        let scheduler = createScheduler()\n\n        let disposable = scheduler.scheduleRelative(1, dueTime: .milliseconds(100)) { _ -> Disposable in\n            interval = Date().timeIntervalSince(start)\n            expectScheduling.fulfill()\n            return Disposables.create()\n        }\n        disposable.dispose()\n\n        DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(200)) {\n            expectScheduling.fulfill()\n        }\n\n        waitForExpectations(timeout: 0.5) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertEqual(interval, 0.0, accuracy: 0.0)\n    }\n\n    func test_schedulePeriodic() {\n        let expectScheduling = expectation(description: \"wait\")\n        let start = Date()\n        let times = Synchronized([Date]())\n\n        let scheduler = createScheduler()\n\n        let disposable = scheduler.schedulePeriodic(0, startAfter: .milliseconds(200), period: .milliseconds(300)) { state -> Int in\n            times.mutate { $0.append(Date()) }\n            if state == 1 {\n                expectScheduling.fulfill()\n            }\n            return state + 1\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertNil(error)\n        }\n\n        disposable.dispose()\n\n        XCTAssertEqual(times.value.count, 2)\n        XCTAssertEqual(times.value[0].timeIntervalSince(start), 0.2, accuracy: 0.1)\n        XCTAssertEqual(times.value[1].timeIntervalSince(start), 0.5, accuracy: 0.2)\n    }\n\n    func test_schedulePeriodicCancel() {\n        let expectScheduling = expectation(description: \"wait\")\n        var times = [Date]()\n\n        let scheduler = createScheduler()\n\n        let disposable = scheduler.schedulePeriodic(0, startAfter: .milliseconds(200), period: .milliseconds(300)) { state -> Int in\n            times.append(Date())\n            return state + 1\n        }\n\n        disposable.dispose()\n\n        DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(300)) {\n            expectScheduling.fulfill()\n        }\n\n        waitForExpectations(timeout: 1.0) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertEqual(times.count, 0)\n    }\n}\n\nextension OperationQueueSchedulerTests {\n    func test_scheduleWithPriority() {\n        let expectScheduling = expectation(description: \"wait\")\n\n        let operationQueue = OperationQueue()\n        operationQueue.maxConcurrentOperationCount = 1\n\n        let highPriority = OperationQueueScheduler(operationQueue: operationQueue, queuePriority: .high)\n        let lowPriority = OperationQueueScheduler(operationQueue: operationQueue, queuePriority: .low)\n\n        var times = [String]()\n\n        _ = highPriority.schedule(Int.self) { _ -> Disposable in\n            Thread.sleep(forTimeInterval: 0.4)\n            times.append(\"HIGH\")\n\n            return Disposables.create()\n        }\n\n        _ = lowPriority.schedule(Int.self) { _ -> Disposable in\n            Thread.sleep(forTimeInterval: 1)\n            times.append(\"LOW\")\n\n            expectScheduling.fulfill()\n\n            return Disposables.create()\n        }\n\n        _ = highPriority.schedule(Int.self) { _ -> Disposable in\n            Thread.sleep(forTimeInterval: 0.2)\n            times.append(\"HIGH\")\n\n            return Disposables.create()\n        }\n\n        waitForExpectations(timeout: 4.0) { error in\n            XCTAssertNil(error)\n        }\n\n        XCTAssertEqual([\"HIGH\", \"HIGH\", \"LOW\"], times)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/SharingSchedulerTests.swift",
    "content": "//\n//  SharingSchedulerTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 8/27/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxCocoa\nimport RxSwift\nimport XCTest\n#if os(Linux)\nimport Glibc\n#endif\n\nimport Foundation\n\nclass SharingSchedulerTest: RxTest {}\n\nextension SharingSchedulerTest {\n    func testSharingSchedulerMockMake() {\n        XCTAssertTrue(SharingScheduler.make() is MainScheduler)\n\n        SharingScheduler.mock(makeScheduler: { Scheduler1() }) {\n            XCTAssertTrue(SharingScheduler.make() is Scheduler1)\n            SharingScheduler.mock(makeScheduler: { Scheduler2() }) {\n                XCTAssertTrue(SharingScheduler.make() is Scheduler2)\n            }\n            XCTAssertTrue(SharingScheduler.make() is Scheduler1)\n        }\n    }\n\n    func testSharingSchedulerMockInstance() {\n        XCTAssertTrue(SharingScheduler.make() is MainScheduler)\n\n        let scheduler1 = Scheduler1()\n        SharingScheduler.mock(scheduler: scheduler1) {\n            XCTAssertTrue(SharingScheduler.make() is Scheduler1 && SharingScheduler.make() as! Scheduler1 === scheduler1)\n            let scheduler2 = Scheduler2()\n            SharingScheduler.mock(scheduler: scheduler2) {\n                XCTAssertTrue(SharingScheduler.make() is Scheduler2 && SharingScheduler.make() as! Scheduler2 === scheduler2)\n            }\n            XCTAssertTrue(SharingScheduler.make() is Scheduler1)\n        }\n    }\n\n    func testSharingSchedulerMockThrows() {\n        XCTAssertTrue(SharingScheduler.make() is MainScheduler)\n\n        do {\n            try SharingScheduler.mock(makeScheduler: { Scheduler1() }) {\n                XCTAssertTrue(SharingScheduler.make() is Scheduler1)\n                throw TestError.dummyError\n            }\n            XCTFail()\n        } catch {\n            XCTAssertTrue(error is TestError)\n            XCTAssertTrue(SharingScheduler.make() is MainScheduler)\n            return\n        }\n        XCTFail()\n    }\n}\n\nclass Scheduler1: SchedulerType {\n    var now: RxTime {\n        fatalError()\n    }\n\n    func schedule<StateType>(_: StateType, action _: @escaping (StateType) -> Disposable) -> Disposable {\n        fatalError()\n    }\n\n    func scheduleRelative<StateType>(_: StateType, dueTime _: RxTimeInterval, action _: @escaping (StateType) -> Disposable) -> Disposable {\n        fatalError()\n    }\n\n    func schedulePeriodic<StateType>(_: StateType, startAfter _: RxTimeInterval, period _: RxTimeInterval, action _: @escaping (StateType) -> StateType) -> Disposable {\n        fatalError()\n    }\n}\n\nclass Scheduler2: SchedulerType {\n    var now: RxTime {\n        fatalError()\n    }\n\n    func schedule<StateType>(_: StateType, action _: @escaping (StateType) -> Disposable) -> Disposable {\n        fatalError()\n    }\n\n    func scheduleRelative<StateType>(_: StateType, dueTime _: RxTimeInterval, action _: @escaping (StateType) -> Disposable) -> Disposable {\n        fatalError()\n    }\n\n    func schedulePeriodic<StateType>(_: StateType, startAfter _: RxTimeInterval, period _: RxTimeInterval, action _: @escaping (StateType) -> StateType) -> Disposable {\n        fatalError()\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/SingleTest.swift",
    "content": "//\n//  SingleTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 9/17/17.\n//  Copyright © 2017 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\nimport XCTest\n\nclass SingleTest: RxTest {}\n\n// single\nextension SingleTest {\n    func testSingle_Subscription_success() {\n        let xs = Single.just(1)\n\n        var events: [SingleEvent<Int>] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.success(1)])\n    }\n\n    func testSingle_Subscription_error() {\n        let xs = Single<Int>.error(testError)\n\n        var events: [SingleEvent<Int>] = []\n\n        _ = xs.subscribe { event in\n            events.append(event)\n        }\n\n        XCTAssertEqual(events, [.failure(testError)])\n    }\n\n    func testSingle_Subscription_onDisposed() {\n        // Given\n        let scheduler = TestScheduler(initialClock: 0)\n        let res = scheduler.createObserver(Int.self)\n        var observer: ((SingleEvent<Int>) -> Void)!\n        var subscription: Disposable!\n        var onDisposesCalled = 0\n        // When\n        scheduler.scheduleAt(201) {\n            subscription = Single<Int>.create {\n                observer = $0\n                return Disposables.create()\n            }\n            .subscribe(onDisposed: { onDisposesCalled += 1 })\n        }\n        scheduler.scheduleAt(202) {\n            subscription.dispose()\n        }\n        scheduler.scheduleAt(203) {\n            observer(.failure(testError))\n        }\n        scheduler.start()\n        // Then\n        XCTAssertTrue(res.events.isEmpty)\n        XCTAssertEqual(onDisposesCalled, 1)\n    }\n\n    func testSingle_Subscription_onDisposed_success() {\n        // Given\n        let single = Single.just(1)\n        var onDisposedCalled = 0\n        // When\n        _ = single.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testSingle_Subscription_onDisposed_error() {\n        // Given\n        let single = Single<Int>.error(testError)\n        var onDisposedCalled = 0\n        // When\n        _ = single.subscribe(onDisposed: {\n            onDisposedCalled += 1\n        })\n        // Then\n        XCTAssertEqual(onDisposedCalled, 1)\n    }\n\n    func testSingle_create_success() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((SingleEvent<Int>) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.failure(testError))\n        })\n\n        let res = scheduler.start {\n            Single<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(201)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testSingle_create_error() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((SingleEvent<Int>) -> Void)! = nil\n\n        var disposedTime: Int?\n\n        scheduler.scheduleAt(201, action: {\n            observer(.failure(testError))\n        })\n        scheduler.scheduleAt(202, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.failure(testError))\n        })\n\n        let res = scheduler.start {\n            Single<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(201, testError)\n        ])\n\n        XCTAssertEqual(disposedTime, 201)\n    }\n\n    func testSingle_create_disposing() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var observer: ((SingleEvent<Int>) -> Void)! = nil\n        var disposedTime: Int?\n        var subscription: Disposable! = nil\n        let res = scheduler.createObserver(Int.self)\n\n        scheduler.scheduleAt(201, action: {\n            subscription = Single<Int>.create { _observer in\n                observer = _observer\n                return Disposables.create {\n                    disposedTime = scheduler.clock\n                }\n            }\n            .asObservable()\n            .subscribe(res)\n        })\n        scheduler.scheduleAt(202, action: {\n            subscription.dispose()\n        })\n        scheduler.scheduleAt(203, action: {\n            observer(.success(1))\n        })\n        scheduler.scheduleAt(204, action: {\n            observer(.failure(testError))\n        })\n\n        scheduler.start()\n\n        XCTAssertEqual(res.events, [\n        ])\n\n        XCTAssertEqual(disposedTime, 202)\n    }\n}\n\nextension SingleTest {\n    func test_just_producesElement() {\n        let result = try! (Single.just(1) as Single<Int>).toBlocking().first()!\n        XCTAssertEqual(result, 1)\n    }\n\n    func test_just2_producesElement() {\n        let result = try! (Single.just(1, scheduler: CurrentThreadScheduler.instance) as Single<Int>).toBlocking().first()!\n        XCTAssertEqual(result, 1)\n    }\n\n    func test_error_fails() {\n        do {\n            _ = try (Single<Int>.error(testError) as Single<Int>).toBlocking().first()\n            XCTFail()\n        } catch let e {\n            XCTAssertEqual(e as! TestError, testError)\n        }\n    }\n\n    func test_never_producesElement() {\n        var event: SingleEvent<Int>?\n        let subscription = (Single<Int>.never() as Single<Int>).subscribe { _event in\n            event = _event\n        }\n\n        XCTAssertNil(event)\n        subscription.dispose()\n    }\n\n    func test_deferred() {\n        let result = try! (Single.deferred { Single.just(1) } as Single<Int>).toBlocking().toArray()\n        XCTAssertEqual(result, [1])\n    }\n\n    func test_delay() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.just(1).delay(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 1),\n            .completed(203)\n        ])\n    }\n\n    func test_delaySubscription() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.just(1).delaySubscription(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 1),\n            .completed(202)\n        ])\n    }\n\n    func test_observeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.just(1).observe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(202)\n        ])\n    }\n\n    func test_subscribeOn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.just(1).subscribe(on: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(201, 1),\n            .completed(201)\n        ])\n    }\n\n    func test_catchError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.error(testError).catch { _ in Single.just(2) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_catchAndReturn() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.error(testError).catchAndReturn(2)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retry() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            (\n                Single.error(testError)\n                    .catch { e in\n                        defer {\n                            isFirst = false\n                        }\n                        if isFirst {\n                            return Single.error(e)\n                        }\n\n                        return Single.just(2)\n                    }\n                    .retry(2) as Single<Int>\n            )\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen1() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            (\n                Single.error(testError)\n                    .catch { e in\n                        defer {\n                            isFirst = false\n                        }\n                        if isFirst {\n                            return Single.error(e)\n                        }\n\n                        return Single.just(2)\n                    }\n                    .retry { (e: Observable<Error>) in\n                        e\n                    } as Single<Int>\n            )\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_retryWhen2() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var isFirst = true\n        let res = scheduler.start {\n            (\n                Single.error(testError)\n                    .catch { e in\n                        defer {\n                            isFirst = false\n                        }\n                        if isFirst {\n                            return Single.error(e)\n                        }\n\n                        return Single.just(2)\n                    }\n                    .retry { e in\n                        e\n                    } as Single<Int>\n            )\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_debug() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.just(1).debug()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_using() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        var disposeInvoked = 0\n        var createInvoked = 0\n\n        var disposable: MockDisposable!\n        var xs: TestableObservable<Int>!\n        var _d: MockDisposable!\n\n        let res = scheduler.start {\n            Single.using { () -> MockDisposable in\n                disposeInvoked += 1\n                disposable = MockDisposable(scheduler: scheduler)\n                return disposable\n            } primitiveSequenceFactory: { (d: MockDisposable) -> Single<Int> in\n                _d = d\n                createInvoked += 1\n                xs = scheduler.createColdObservable([\n                    .next(100, scheduler.clock),\n                    .completed(100)\n                ])\n                return xs.asObservable().asSingle()\n            }\n        }\n\n        XCTAssert(disposable === _d)\n\n        XCTAssertEqual(1, createInvoked)\n        XCTAssertEqual(1, disposeInvoked)\n\n        XCTAssertEqual(res.events, [\n            .next(300, 200),\n            .completed(300)\n        ])\n\n        XCTAssertEqual(xs.subscriptions, [\n            Subscription(200, 300)\n        ])\n\n        XCTAssertEqual(disposable.ticks, [\n            200,\n            300\n        ])\n    }\n\n    func test_timeout() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asSingle()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(205, RxError.timeout)\n        ])\n    }\n\n    func test_timeout_other() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asSingle()\n\n        let xs2 = scheduler.createColdObservable([\n            .next(20, 2),\n            .completed(20)\n        ]).asSingle()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(5), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(225, 2),\n            .completed(225)\n        ])\n    }\n\n    func test_timeout_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asSingle()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 1),\n            .completed(220)\n        ])\n    }\n\n    func test_timeout_other_succeeds() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let xs = scheduler.createColdObservable([\n            .next(10, 1),\n            .completed(20)\n        ]).asSingle()\n\n        let xs2 = scheduler.createColdObservable([\n            .next(20, 2),\n            .completed(20)\n        ]).asSingle()\n\n        let res = scheduler.start {\n            xs.timeout(.seconds(30), other: xs2, scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(220, 1),\n            .completed(220)\n        ])\n    }\n}\n\nextension SingleTest {\n    func test_timer() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.timer(.seconds(2), scheduler: scheduler)\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(202, 0),\n            .completed(202)\n        ])\n    }\n}\n\nextension SingleTest {\n    func test_do() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).do(onSuccess: { _ in () }, onError: { _ in () }, onSubscribe: { () in () }, onSubscribed: { () in () }, onDispose: { () in () })\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_filter() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).filter { _ in false }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_map() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).map { $0 * 2 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_compactMap() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Single<String>.just(\"1\").compactMap(Int.init) as Maybe<Int>).asObservable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_compactMapNil() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Single<String>.just(\"a\").compactMap(Int.init) as Maybe<Int>).asObservable()\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_flatMap() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).flatMap { .just($0 * 2) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_flatMapMaybe() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).flatMapMaybe { Maybe.just($0 * 2) }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 2),\n            .completed(200)\n        ])\n    }\n\n    func test_flatMapCompletable() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(10).flatMapCompletable { _ in Completable.empty() }\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_asMaybe() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(1).asMaybe() as Maybe<Int>\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 1),\n            .completed(200)\n        ])\n    }\n\n    func test_asCompletable() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.just(5).asCompletable() as Completable\n        }\n\n        XCTAssertEqual(res.events, [\n            .completed(200)\n        ])\n    }\n\n    func test_asCompletableError() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single<Int>.error(testError).asCompletable() as Completable\n        }\n\n        XCTAssertEqual(res.events, [\n            .error(200, testError)\n        ])\n    }\n}\n\nextension SingleTest {\n    func test_zip_tuple() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            (Single.zip(Single.just(1), Single.just(2)) as Single<(Int, Int)>).map { $0.0 + $0.1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 3),\n            .completed(200)\n        ])\n    }\n\n    func test_zip_resultSelector() {\n        let scheduler = TestScheduler(initialClock: 0)\n\n        let res = scheduler.start {\n            Single.zip(Single.just(1), Single.just(2)) { $0 + $1 }\n        }\n\n        XCTAssertEqual(res.events, [\n            .next(200, 3),\n            .completed(200)\n        ])\n    }\n\n    func testZipCollection_selector() {\n        let collection = [Single<Int>.just(1), Single<Int>.just(1), Single<Int>.just(1)]\n        let singleResult: Single<Int> = Single.zip(collection) { $0.reduce(0, +) }\n\n        let result = try! singleResult\n            .toBlocking()\n            .first()!\n\n        XCTAssertEqual(result, 3)\n    }\n\n    func testZipCollection_selector_when_empty() {\n        let collection: [Single<Int>] = []\n        let singleResult = Single.zip(collection) { $0.reduce(0, +) }\n\n        let result = try! singleResult\n            .toBlocking()\n            .first()!\n\n        XCTAssertEqual(result, 0)\n    }\n\n    func testZipCollection_tuple() {\n        let collection = [Single<Int>.just(1), Single<Int>.just(1), Single<Int>.just(1)]\n        let singleResult: Single<Int> = Single.zip(collection).map { $0.reduce(0, +) }\n\n        let result = try! singleResult\n            .toBlocking()\n            .first()!\n\n        XCTAssertEqual(result, 3)\n    }\n\n    func testZipCollection_tuple_when_empty() {\n        let collection: [Single<Int>] = []\n        let singleResult = Single.zip(collection)\n\n        let result = try! singleResult\n            .toBlocking()\n            .first()!\n\n        XCTAssertEqual(result, [])\n    }\n}\n\nextension SingleTest {\n    func testDefaultErrorHandler() {\n        var loggedErrors = [TestError]()\n\n        _ = Single<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [])\n\n        let originalErrorHandler = Hooks.defaultErrorHandler\n\n        Hooks.defaultErrorHandler = { _, error in\n            loggedErrors.append(error as! TestError)\n        }\n\n        _ = Single<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n\n        Hooks.defaultErrorHandler = originalErrorHandler\n\n        _ = Single<Int>.error(testError).subscribe()\n        XCTAssertEqual(loggedErrors, [testError])\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/SubjectConcurrencyTest.swift",
    "content": "//\n//  SubjectConcurrencyTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 11/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\n@testable import RxSwift\nimport XCTest\n\nfinal class ReplaySubjectConcurrencyTest: SubjectConcurrencyTest {\n    override func createSubject() -> (Observable<Int>, AnyObserver<Int>) {\n        let s = ReplaySubject<Int>.create(bufferSize: 1)\n        return (s.asObservable(), AnyObserver(eventHandler: s.asObserver().on))\n    }\n}\n\nfinal class BehaviorSubjectConcurrencyTest: SubjectConcurrencyTest {\n    override func createSubject() -> (Observable<Int>, AnyObserver<Int>) {\n        let s = BehaviorSubject<Int>(value: -1)\n        return (s.asObservable(), AnyObserver(eventHandler: s.asObserver().on))\n    }\n}\n\nclass SubjectConcurrencyTest: RxTest {\n    // default test is for publish subject\n    func createSubject() -> (Observable<Int>, AnyObserver<Int>) {\n        let s = PublishSubject<Int>()\n        return (s.asObservable(), AnyObserver(eventHandler: s.asObserver().on))\n    }\n}\n\nextension SubjectConcurrencyTest {\n    func testSubjectIsReentrantForNextAndComplete() {\n        let (observable, _observer) = createSubject()\n\n        var state = 0\n\n        let o = RxMutableBox(_observer)\n\n        var ranAll = false\n\n        _ = observable.subscribe(onNext: { [unowned o] n in\n            if n < 0 {\n                return\n            }\n\n            if state == 0 {\n                state = 1\n\n                // if isn't reentrant, this will cause deadlock\n                o.value.on(.next(1))\n            } else if state == 1 {\n                // if isn't reentrant, this will cause deadlock\n                o.value.on(.completed)\n                ranAll = true\n            }\n        })\n\n        o.value.on(.next(0))\n        XCTAssertTrue(ranAll)\n    }\n\n    func testSubjectIsReentrantForNextAndError() {\n        let (observable, _observer) = createSubject()\n\n        var state = 0\n\n        let o = RxMutableBox(_observer)\n\n        var ranAll = false\n\n        _ = observable.subscribe(onNext: { [unowned o] n in\n            if n < 0 {\n                return\n            }\n\n            if state == 0 {\n                state = 1\n\n                // if isn't reentrant, this will cause deadlock\n                o.value.on(.next(1))\n            } else if state == 1 {\n                // if isn't reentrant, this will cause deadlock\n                o.value.on(.error(testError))\n                ranAll = true\n            }\n        })\n\n        o.value.on(.next(0))\n        XCTAssertTrue(ranAll)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/Synchronized.swift",
    "content": "//\n//  Synchronized.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 1/29/19.\n//  Copyright © 2019 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\nclass Synchronized<Value> {\n    private let lock = NSRecursiveLock()\n    private var _value: Value\n\n    init(_ value: Value) {\n        _value = value\n    }\n\n    var value: Value {\n        lock.lock(); defer { self.lock.unlock() }\n        return _value\n    }\n\n    func mutate<Result>(_ mutate: (inout Value) -> Result) -> Result {\n        lock.lock(); defer { self.lock.unlock() }\n        return mutate(&_value)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/ElementIndexPair.swift",
    "content": "//\n//  ElementIndexPair.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 6/12/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct ElementIndexPair<Element: Equatable, I: Equatable>: Equatable {\n    let element: Element\n    let index: I\n\n    init(_ element: Element, _ index: I) {\n        self.element = element\n        self.index = index\n    }\n}\n\nfunc == <Element, I>(lhs: ElementIndexPair<Element, I>, rhs: ElementIndexPair<Element, I>) -> Bool {\n    lhs.element == rhs.element && lhs.index == rhs.index\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/EquatableArray.swift",
    "content": "//\n//  EquatableArray.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/15/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nstruct EquatableArray<Element: Equatable>: Equatable {\n    let elements: [Element]\n    init(_ elements: [Element]) {\n        self.elements = elements\n    }\n}\n\nfunc == <Element>(lhs: EquatableArray<Element>, rhs: EquatableArray<Element>) -> Bool {\n    lhs.elements == rhs.elements\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/BackgroundThreadPrimitiveHotObservable.swift",
    "content": "//\n//  BackgroundThreadPrimitiveHotObservable.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\nimport XCTest\n\nfinal class BackgroundThreadPrimitiveHotObservable<Element: Equatable>: PrimitiveHotObservable<Element> {\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        XCTAssertTrue(!DispatchQueue.isMain)\n        return super.subscribe(observer)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/MainThreadPrimitiveHotObservable.swift",
    "content": "//\n//  MainThreadPrimitiveHotObservable.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 10/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\nimport XCTest\n\nfinal class MainThreadPrimitiveHotObservable<Element: Equatable>: PrimitiveHotObservable<Element> {\n    override func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        XCTAssertTrue(DispatchQueue.isMain)\n        return super.subscribe(observer)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/MockDisposable.swift",
    "content": "//\n//  MockDisposable.swift\n//  Tests\n//\n//  Created by Yury Korolev on 10/17/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\n\nfinal class MockDisposable: Disposable {\n    var ticks = [Int]()\n    private let scheduler: TestScheduler\n\n    init(scheduler: TestScheduler) {\n        self.scheduler = scheduler\n        ticks.append(self.scheduler.clock)\n    }\n\n    func dispose() {\n        ticks.append(scheduler.clock)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/MySubject.swift",
    "content": "//\n//  MySubject.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/18/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nfinal class MySubject<Element>: SubjectType, ObserverType where Element: Hashable {\n    typealias SubjectObserverType = MySubject<Element>\n\n    var disposeOn: [Element: Disposable] = [:]\n    var observer: AnyObserver<Element>!\n    var subscriptionCount: Int = 0\n    var disposed: Bool = false\n\n    var subscribeCount: Int { subscriptionCount }\n    var isDisposed: Bool { disposed }\n\n    func disposeOn(_ value: Element, disposable: Disposable) {\n        disposeOn[value] = disposable\n    }\n\n    func on(_ event: Event<Element>) {\n        observer.on(event)\n        switch event {\n        case let .next(value):\n            if let disposable = disposeOn[value] {\n                disposable.dispose()\n            }\n        default: break\n        }\n    }\n\n    func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        subscriptionCount += 1\n        self.observer = AnyObserver(observer)\n\n        return Disposables.create {\n            self.observer = AnyObserver { _ in () }\n            self.disposed = true\n        }\n    }\n\n    func asObserver() -> MySubject<Element> {\n        self\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/Observable.Extensions.swift",
    "content": "//\n//  Observable.Extensions.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 3/14/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nextension Observable: @retroactive Equatable {}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveHotObservable.swift",
    "content": "//\n//  PrimitiveHotObservable.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 6/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport RxSwift\nimport RxTest\n\nlet SubscribedToHotObservable = Subscription(0)\nlet UnsunscribedFromHotObservable = Subscription(0, 0)\n\nclass PrimitiveHotObservable<Element>: ObservableType {\n    typealias Events = Recorded<Element>\n    typealias Observer = AnyObserver<Element>\n\n    var _subscriptions = [Subscription]()\n    let observers = PublishSubject<Element>()\n\n    var subscriptions: [Subscription] {\n        lock.lock()\n        defer { lock.unlock() }\n        return _subscriptions\n    }\n\n    let lock = RecursiveLock()\n\n    init() {}\n\n    func on(_ event: Event<Element>) {\n        lock.lock()\n        defer { lock.unlock() }\n        observers.on(event)\n    }\n\n    func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        lock.lock()\n        defer { lock.unlock() }\n\n        let removeObserver = observers.subscribe(observer)\n        _subscriptions.append(SubscribedToHotObservable)\n\n        let i = subscriptions.count - 1\n\n        var count = 0\n\n        return Disposables.create {\n            self.lock.lock()\n            defer { self.lock.unlock() }\n\n            removeObserver.dispose()\n            count += 1\n            assert(count == 1)\n\n            self._subscriptions[i] = UnsunscribedFromHotObservable\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/PrimitiveMockObserver.swift",
    "content": "//\n//  PrimitiveMockObserver.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 6/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\n\nfinal class PrimitiveMockObserver<Element>: ObserverType {\n    private let _events = Synchronized([Recorded<Event<Element>>]())\n\n    var events: [Recorded<Event<Element>>] {\n        _events.value\n    }\n\n    func on(_ event: Event<Element>) {\n        _events.mutate { $0.append(Recorded(time: 0, value: event)) }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Mocks/TestConnectableObservable.swift",
    "content": "//\n//  TestConnectableObservable.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 4/19/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\n\nfinal class TestConnectableObservable<Subject: SubjectType>: ConnectableObservableType where Subject.Element == Subject.Observer.Element {\n    typealias Element = Subject.Element\n\n    let o: ConnectableObservable<Subject.Element>\n\n    init(o: Observable<Subject.Element>, s: Subject) {\n        self.o = o.multicast(s)\n    }\n\n    func connect() -> Disposable {\n        o.connect()\n    }\n\n    func subscribe<Observer: ObserverType>(_ observer: Observer) -> Disposable where Observer.Element == Element {\n        o.subscribe(observer)\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/Observable+Extensions.swift",
    "content": "//\n//  Observable+Extensions.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 6/4/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport RxTest\n\npublic func == <T>(lhs: Observable<T>, rhs: Observable<T>) -> Bool {\n    lhs === rhs\n}\n\nextension TestableObservable: @retroactive Equatable {}\n\npublic func == <T>(lhs: TestableObservable<T>, rhs: TestableObservable<T>) -> Bool {\n    lhs === rhs\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/TestImplementations/TestVirtualScheduler.swift",
    "content": "//\n//  TestVirtualScheduler.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\n\n/**\n Scheduler that tests virtual scheduler\n */\nfinal class TestVirtualScheduler: VirtualTimeScheduler<TestVirtualSchedulerVirtualTimeConverter> {\n    init(initialClock: Int = 0) {\n        super.init(initialClock: initialClock, converter: TestVirtualSchedulerVirtualTimeConverter())\n    }\n}\n\n/**\n One virtual unit is equal to 10 seconds.\n */\nstruct TestVirtualSchedulerVirtualTimeConverter: VirtualTimeConverterType {\n    typealias VirtualTimeUnit = Int\n    typealias VirtualTimeIntervalUnit = Int\n\n    func convertFromVirtualTime(_ virtualTime: VirtualTimeUnit) -> RxTime {\n        Date(timeIntervalSince1970: Foundation.TimeInterval(virtualTime) * 10.0)\n    }\n\n    func convertToVirtualTime(_ time: RxTime) -> VirtualTimeUnit {\n        Int(time.timeIntervalSince1970 / 10.0)\n    }\n\n    func convertFromVirtualTimeInterval(_ virtualTimeInterval: VirtualTimeIntervalUnit) -> Foundation.TimeInterval {\n        Foundation.TimeInterval(virtualTimeInterval * 10)\n    }\n\n    func convertToVirtualTimeInterval(_ timeInterval: Foundation.TimeInterval) -> VirtualTimeIntervalUnit {\n        Int(timeInterval / 10.0)\n    }\n\n    func offsetVirtualTime(_ time: VirtualTimeUnit, offset: VirtualTimeIntervalUnit) -> VirtualTimeUnit {\n        time + offset\n    }\n\n    func compareVirtualTime(_ lhs: VirtualTimeUnit, _ rhs: VirtualTimeUnit) -> VirtualTimeComparison {\n        if lhs < rhs {\n            .lessThan\n        } else if lhs > rhs {\n            .greaterThan\n        } else {\n            .equal\n        }\n    }\n}\n"
  },
  {
    "path": "Tests/RxSwiftTests/VirtualSchedulerTest.swift",
    "content": "//\n//  VirtualSchedulerTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/27/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport RxSwift\nimport XCTest\n#if os(Linux)\nimport Glibc\n#endif\n\nimport Foundation\n\nclass VirtualSchedulerTest: RxTest {}\n\nextension VirtualSchedulerTest {\n    func testVirtualScheduler_initialClock() {\n        let scheduler = TestVirtualScheduler(initialClock: 10)\n        XCTAssertEqual(scheduler.now, Date(timeIntervalSince1970: 100.0))\n        XCTAssertEqual(scheduler.clock, 10)\n    }\n\n    func testVirtualScheduler_start() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.clock)\n            _ = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n            return scheduler.schedule(()) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            1,\n            1,\n            3\n        ])\n    }\n\n    func testVirtualScheduler_disposeStart() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.clock)\n            let d = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n            let d2 = scheduler.schedule(()) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n\n            d2.dispose()\n            d.dispose()\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            1\n        ])\n    }\n\n    func testVirtualScheduler_advanceToAfter() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { _ in\n            times.append(scheduler.clock)\n            _ = scheduler.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n            return scheduler.schedule(()) { _ in\n                times.append(scheduler.clock)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.advanceTo(10)\n\n        XCTAssertEqual(times, [\n            1,\n            1,\n            3\n        ])\n    }\n\n    func testVirtualScheduler_advanceToBefore() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.clock)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n            return scheduler!.schedule(()) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.advanceTo(1)\n\n        XCTAssertEqual(times, [\n            1,\n            1\n        ])\n    }\n\n    func testVirtualScheduler_disposeAdvanceTo() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.clock)\n            let d1 = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n            let d2 = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n\n            d1.dispose()\n            d2.dispose()\n            return Disposables.create()\n        }\n\n        scheduler.advanceTo(20)\n\n        XCTAssertEqual(times, [\n            1\n        ])\n    }\n\n    func testVirtualScheduler_stop() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.clock)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n            _ = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n\n            scheduler!.stop()\n\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            1\n        ])\n    }\n\n    func testVirtualScheduler_sleep() {\n        let scheduler = TestVirtualScheduler()\n\n        var times: [Int] = []\n\n        _ = scheduler.scheduleRelative((), dueTime: .seconds(10)) { [weak scheduler] _ in\n            times.append(scheduler!.clock)\n            scheduler!.sleep(10)\n            _ = scheduler!.scheduleRelative((), dueTime: .seconds(20)) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n            _ = scheduler!.schedule(()) { _ in\n                times.append(scheduler!.clock)\n                return Disposables.create()\n            }\n\n            return Disposables.create()\n        }\n\n        scheduler.start()\n\n        XCTAssertEqual(times, [\n            1,\n            11,\n            13\n        ])\n    }\n\n    func testVirtualScheduler_stress() {\n        let scheduler = TestVirtualScheduler()\n\n        var times = [Int]()\n        var ticks = [Int]()\n        for _ in 0 ..< 20000 {\n            #if os(Linux)\n            let random = Int(Glibc.random() % 10000)\n            #else\n            let random = Int(arc4random() % 10000)\n            #endif\n            times.append(random)\n            _ = scheduler.scheduleRelative((), dueTime: .seconds(10 * random)) { [weak scheduler] _ in\n                ticks.append(scheduler!.clock)\n                return Disposables.create()\n            }\n        }\n\n        scheduler.start()\n\n        times = times.sorted()\n        XCTAssertEqual(times, ticks)\n    }\n}\n"
  },
  {
    "path": "Tests/RxTest.swift",
    "content": "//\n//  RxTest.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 2/8/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\nimport RxSwift\nimport RxTest\nimport XCTest\n\n#if TRACE_RESOURCES\n#elseif RELEASE\n#elseif os(macOS) || os(iOS) || os(tvOS) || os(watchOS)\n#elseif os(Linux)\n#else\nlet failure = unhandled_case()\n#endif\n\n// because otherwise macOS unit tests won't run\n#if os(iOS)\nimport UIKit\n#elseif os(macOS)\nimport AppKit\n#endif\n\n#if os(Linux)\n// TODO: Implement PerformanceTests.swift for Linux\nfunc getMemoryInfo() -> (bytes: Int64, allocations: Int64) {\n    (0, 0)\n}\n#endif\n\nclass RxTest:\n    XCTestCase\n{\n    #if TRACE_RESOURCES\n    private var startResourceCount: Int32 = 0\n    #endif\n\n    var accumulateStatistics: Bool {\n        true\n    }\n\n    #if TRACE_RESOURCES\n    static var totalNumberOfAllocations: Int64 = 0\n    static var totalNumberOfAllocatedBytes: Int64 = 0\n\n    var startNumberOfAllocations: Int64 = 0\n    var startNumberOfAllocatedBytes: Int64 = 0\n    #endif\n\n    override func setUp() {\n        super.setUp()\n        setUpActions()\n    }\n\n    override func tearDown() {\n        // Put teardown code here. This method is called after the invocation of each test method in the class.\n        super.tearDown()\n\n        // There seems to be an issue with overlong hanging onto memory in\n        // Swift 5.5 and Xcode 13. It will take a while to really dig deep into\n        // this to figure out what's the cause; for now we'll live with not\n        // having the best test coverage here\n        #if !swift(>=5.5)\n        tearDownActions()\n        #endif\n    }\n}\n\nextension RxTest {\n    enum Defaults {\n        static let created = 100\n        static let subscribed = 200\n        static let disposed = 1000\n    }\n\n    func sleep(_ time: TimeInterval) {\n        Thread.sleep(forTimeInterval: time)\n    }\n\n    func setUpActions() {\n        _ = Hooks.defaultErrorHandler // lazy load resource so resource count matches\n        _ = Hooks.customCaptureSubscriptionCallstack // lazy load resource so resource count matches\n        #if TRACE_RESOURCES\n        startResourceCount = Resources.total\n        // registerMallocHooks()\n        (startNumberOfAllocatedBytes, startNumberOfAllocations) = getMemoryInfo()\n        #endif\n    }\n\n    func tearDownActions() {\n        #if TRACE_RESOURCES\n        // give 5 sec to clean up resources\n        for _ in 0 ..< 30 {\n            if startResourceCount < Resources.total {\n                // main schedulers need to finish work\n                print(\"Waiting for resource cleanup ...\")\n                let mode = RunLoop.Mode.default\n\n                RunLoop.current.run(mode: mode, before: Date(timeIntervalSinceNow: 0.05))\n            } else {\n                break\n            }\n        }\n\n        XCTAssertEqual(startResourceCount, Resources.total)\n        let (endNumberOfAllocatedBytes, endNumberOfAllocations) = getMemoryInfo()\n\n        let (newBytes, newAllocations) = (endNumberOfAllocatedBytes - startNumberOfAllocatedBytes, endNumberOfAllocations - startNumberOfAllocations)\n\n        if accumulateStatistics {\n            RxTest.totalNumberOfAllocations += newAllocations\n            RxTest.totalNumberOfAllocatedBytes += newBytes\n        }\n        print(\"allocatedBytes = \\(newBytes), allocations = \\(newAllocations) (totalBytes = \\(RxTest.totalNumberOfAllocatedBytes), totalAllocations = \\(RxTest.totalNumberOfAllocations))\")\n        #endif\n    }\n}\n"
  },
  {
    "path": "Tests/TestErrors.swift",
    "content": "//\n//  TestErrors.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nenum TestError: Error {\n    case dummyError\n    case dummyError1\n    case dummyError2\n}\n\nlet testError = TestError.dummyError\nlet testError1 = TestError.dummyError1\nlet testError2 = TestError.dummyError2\n"
  },
  {
    "path": "Tests/XCTest+AllTests.swift",
    "content": "//\n//  XCTest+AllTests.swift\n//  Tests\n//\n//  Created by Krunoslav Zaher on 12/25/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Dispatch\nimport Foundation\nimport RxSwift\nimport RxTest\nimport XCTest\n\nfunc XCTAssertErrorEqual(_ lhs: Swift.Error, _ rhs: Swift.Error, file: StaticString = #file, line: UInt = #line) {\n    let lhsEvent: Event<Int> = .error(lhs)\n    let rhsEvent: Event<Int> = .error(rhs)\n\n    XCTAssertTrue(lhsEvent == rhsEvent, \"expected \\(rhsEvent) but received \\(lhsEvent)\", file: file, line: line)\n}\n\nfunc XCTAssertThrowsErrorEqual(_ expression: @autoclosure () throws -> some Any, _ expectedError: Error, file: StaticString = #file, line: UInt = #line) {\n    XCTAssertThrowsError(try expression(), file: file, line: line) { actualError in\n        XCTAssertErrorEqual(actualError, expectedError, file: file, line: line)\n    }\n}\n\nfunc NSValuesAreEqual(_ lhs: Any, _ rhs: Any) -> Bool {\n    if let lhsValue = lhs as? NSValue, let rhsValue = rhs as? NSValue {\n        #if os(Linux)\n        return lhsValue.isEqual(rhsValue)\n        #else\n        return lhsValue.isEqual(rhsValue)\n            || (lhs as AnyObject).pointerValue == (rhs as AnyObject).pointerValue\n        #endif\n    }\n\n    return false\n}\n\nfunc XCTAssertEqualNSValues(_ lhs: AnyObject, rhs: AnyObject, file: StaticString = #file, line: UInt = #line) {\n    let areEqual = NSValuesAreEqual(lhs, rhs)\n    XCTAssertTrue(areEqual, file: file, line: line)\n    if !areEqual {\n        print(lhs)\n        print(rhs)\n    }\n}\n\nfunc XCTAssertEqualAnyObjectArrayOfArrays(_ lhs: [[Any]], _ rhs: [[Any]], file: StaticString = #file, line: UInt = #line) {\n    XCTAssertArraysEqual(lhs, rhs, file: file, line: line) { (lhs: [Any], rhs: [Any]) in\n        if lhs.count != rhs.count {\n            return false\n        }\n\n        return zip(lhs, rhs).reduce(true) { acc, n in\n            let res = (n.0 as! NSObject).isEqual(n.1) || NSValuesAreEqual(n.0, n.1)\n            return acc && res\n        }\n    }\n}\n\nfunc XCTAssertEqual<T>(_ lhs: T, _ rhs: T, file: StaticString = #file, line: UInt = #line, _ comparison: (T, T) -> Bool) {\n    let areEqual = comparison(lhs, rhs)\n    XCTAssertTrue(areEqual, file: file, line: line)\n    if !areEqual {\n        print(lhs)\n        print(rhs)\n    }\n}\n\nfunc XCTAssertArraysEqual<T>(_ lhs: [T], _ rhs: [T], file: StaticString = #file, line: UInt = #line, _ comparison: (T, T) -> Bool) {\n    XCTAssertEqual(lhs.count, rhs.count, file: file, line: line)\n    let areEqual = zip(lhs, rhs).reduce(true) { (a: Bool, z: (T, T)) in a && comparison(z.0, z.1) }\n    XCTAssertTrue(areEqual, file: file, line: line)\n    if !areEqual || lhs.count != rhs.count {\n        print(lhs)\n        print(rhs)\n    }\n}\n\nfunc doOnBackgroundQueue(_ action: @escaping () -> Void) {\n    DispatchQueue.global(qos: .default).async(execute: action)\n}\n\nfunc doOnMainQueue(_ action: @escaping () -> Void) {\n    DispatchQueue.main.async(execute: action)\n}\n"
  },
  {
    "path": "Version.xcconfig",
    "content": "RX_VERSION = 6.10.1\n"
  },
  {
    "path": "assets/CNAME.txt",
    "content": "reactivex.io\n"
  },
  {
    "path": "assets/LICENSE.txt",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "docs/Classes/AsyncSubject.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>AsyncSubject Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/AsyncSubject\" class=\"dashAnchor\"></a>\n\n    <a title=\"AsyncSubject Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      AsyncSubject Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>AsyncSubject</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">AsyncSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span></code></pre>\n\n                </div>\n              </div>\n            <p>An AsyncSubject emits the last value (and only the last value) emitted by the source Observable,\nand only after that source Observable completes.</p>\n\n<p>(If the source Observable does not emit any values, the AsyncSubject also completes without emitting any values.)</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC0D12ObserverTypea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SubjectObserverType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC0D12ObserverTypea\">SubjectObserverType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">SubjectObserverType</span> <span class=\"o\">=</span> <span class=\"kt\">AsyncSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC12hasObserversSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/hasObservers\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC12hasObserversSbvp\">hasObservers</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has any observers</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">hasObservers</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectCACyxGycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectCACyxGycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Notifies all subscribed observers about next event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event to send to the observers.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an observer to the subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observer to subscribe to the subject.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Disposable object that can be used to unsubscribe the observer from the subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC10asObserverACyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC10asObserverACyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns observer interface for subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">AsyncSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/BehaviorSubject.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>BehaviorSubject Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/BehaviorSubject\" class=\"dashAnchor\"></a>\n\n    <a title=\"BehaviorSubject Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      BehaviorSubject Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>BehaviorSubject</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">BehaviorSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a value that changes over time.</p>\n\n<p>Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC0D12ObserverTypea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SubjectObserverType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC0D12ObserverTypea\">SubjectObserverType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">SubjectObserverType</span> <span class=\"o\">=</span> <span class=\"kt\">BehaviorSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC12hasObserversSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/hasObservers\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC12hasObserversSbvp\">hasObservers</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has any observers</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">hasObservers</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has been disposed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC5valueACyxGx_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(value:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC5valueACyxGx_tcfc\">init(value:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the subject that caches its last value and starts with the specified value.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>value</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Initial value sent to observers when no other value has been received by the subject yet.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC5valuexyKF\"></a>\n                    <a name=\"//apple_ref/swift/Method/value()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC5valuexyKF\">value()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Gets the current value or throws an error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">value</span><span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Latest value.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Notifies all subscribed observers about next event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event to send to the observers.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an observer to the subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observer to subscribe to the subject.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Disposable object that can be used to unsubscribe the observer from the subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC10asObserverACyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC10asObserverACyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns observer interface for subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">BehaviorSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Unsubscribe all observers and release resources.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/BooleanDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>BooleanDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/BooleanDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"BooleanDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      BooleanDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>BooleanDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">BooleanDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource that can be checked for disposal status.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17BooleanDisposableCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17BooleanDisposableCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>BooleanDisposable</code> class</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17BooleanDisposableC10isDisposedACSb_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(isDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17BooleanDisposableC10isDisposedACSb_tcfc\">init(isDisposed:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>BooleanDisposable</code> class with given value</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17BooleanDisposableC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17BooleanDisposableC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Was resource disposed.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17BooleanDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17BooleanDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sets the status to disposed, which can be observer through the <code><a href=\"../Classes/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableC10isDisposedSbvp\">isDisposed</a></code> property.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/CompositeDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>CompositeDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/CompositeDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"CompositeDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      CompositeDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>CompositeDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">CompositeDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a group of disposable resources that are disposed together.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC10DisposeKeyV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/DisposeKey\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">DisposeKey</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Key used to remove disposable from composite disposable</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">DisposeKey</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10CancelableP10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10CancelableP10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_ptcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_ptcfc\">init(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_ptcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_ptcfc\">init(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_pAaD_pAaD_pdtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_pAaD_pAaD_pdtcfc\">init(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">...</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC11disposablesACSayAA0D0_pG_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(disposables:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC11disposablesACSayAA0D0_pG_tcfc\">init(disposables:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC6insertyAC10DisposeKeyVSgAA0D0_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/insert(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC6insertyAC10DisposeKeyVSgAA0D0_pF\">insert(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">insert</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">DisposeKey</a></span><span class=\"p\">?</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>disposable</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Disposable to add.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Key that can be used to remove disposable from composite disposable. In case dispose bag was already\ndisposed <code>nil</code> will be returned.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC5countSivp\"></a>\n                    <a name=\"//apple_ref/swift/Property/count\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC5countSivp\">count</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Gets the number of disposables contained in the <code>CompositeDisposable</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC6remove3foryAC10DisposeKeyV_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/remove(for:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC6remove3foryAC10DisposeKeyV_tF\">remove(for:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Removes and disposes the disposable identified by <code>disposeKey</code> from the CompositeDisposable.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">remove</span><span class=\"p\">(</span><span class=\"k\">for</span> <span class=\"nv\">disposeKey</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">DisposeKey</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>disposeKey</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Key used to identify disposable to be removed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Disposes all disposables in the group and removes them from the group.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/ConcurrentDispatchQueueScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ConcurrentDispatchQueueScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ConcurrentDispatchQueueScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"ConcurrentDispatchQueueScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ConcurrentDispatchQueueScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ConcurrentDispatchQueueScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ConcurrentDispatchQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. You can also pass a serial dispatch queue, it shouldn&rsquo;t cause any problems.</p>\n\n<p>This scheduler is suitable when some work needs to be performed in background.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC12TimeIntervala\"></a>\n                    <a name=\"//apple_ref/swift/Alias/TimeInterval\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC12TimeIntervala\">TimeInterval</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">TimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">Foundation</span><span class=\"o\">.</span><span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC4Timea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Time\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC4Timea\">Time</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Time</span> <span class=\"o\">=</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/now\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\">now</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">now</span><span class=\"p\">:</span> <span class=\"kt\">Date</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC5queue6leewayACSo012OS_dispatch_G0C_0D00D12TimeIntervalOtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(queue:leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC5queue6leewayACSo012OS_dispatch_G0C_0D00D12TimeIntervalOtcfc\">init(queue:<wbr>leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new <code>ConcurrentDispatchQueueScheduler</code> that wraps <code>queue</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">queue</span><span class=\"p\">:</span> <span class=\"kt\">DispatchQueue</span><span class=\"p\">,</span> <span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">DispatchTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span><span class=\"o\">.</span><span class=\"nf\">nanoseconds</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>queue</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Target dispatch queue.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The amount of time, in nanoseconds, that the system will defer the timer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC3qos6leewayAC0D00D3QoSV_AF0D12TimeIntervalOtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(qos:leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC3qos6leewayAC0D00D3QoSV_AF0D12TimeIntervalOtcfc\">init(qos:<wbr>leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience init for scheduler that wraps one of the global concurrent dispatch queues.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">qos</span><span class=\"p\">:</span> <span class=\"kt\">DispatchQoS</span><span class=\"p\">,</span> <span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">DispatchTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span><span class=\"o\">.</span><span class=\"nf\">nanoseconds</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>qos</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Target global dispatch queue, by quality of service class.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The amount of time, in nanoseconds, that the system will defer the timer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed immediately.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelative(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\">scheduleRelative(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleRelative</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time after which to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedulePeriodic(_:startAfter:period:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\">schedulePeriodic(_:<wbr>startAfter:<wbr>period:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules a periodic piece of work.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedulePeriodic</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">startAfter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>startAfter</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period after which initial work should be run.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period for running the work periodically.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/ConcurrentMainScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ConcurrentMainScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ConcurrentMainScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"ConcurrentMainScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ConcurrentMainScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ConcurrentMainScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">ConcurrentMainScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Abstracts work that needs to be performed on <code>MainThread</code>. In case <code>schedule</code> methods are called from main thread, it will perform action immediately without scheduling.</p>\n\n<p>This scheduler is optimized for <code>subscribeOn</code> operator. If you want to observe observable sequence elements on main thread using <code>observeOn</code> operator,\n<code><a href=\"../Classes/MainScheduler.html\">MainScheduler</a></code> is more suitable for that purpose.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC12TimeIntervala\"></a>\n                    <a name=\"//apple_ref/swift/Alias/TimeInterval\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC12TimeIntervala\">TimeInterval</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">TimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">Foundation</span><span class=\"o\">.</span><span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC4Timea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Time\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC4Timea\">Time</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Time</span> <span class=\"o\">=</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC3now10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/now\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC3now10Foundation4DateVvp\">now</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">now</span><span class=\"p\">:</span> <span class=\"kt\">Date</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Current time.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC8instanceACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/instance\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC8instanceACvpZ\">instance</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Singleton instance of <code>ConcurrentMainScheduler</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">instance</span><span class=\"p\">:</span> <span class=\"kt\">ConcurrentMainScheduler</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed immediately.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_8Dispatch0lI8IntervalOAaG_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelative(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_8Dispatch0lI8IntervalOAaG_pxctlF\">scheduleRelative(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleRelative</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time after which to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_8Dispatch0M12TimeIntervalOAKxxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedulePeriodic(_:startAfter:period:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_8Dispatch0M12TimeIntervalOAKxxctlF\">schedulePeriodic(_:<wbr>startAfter:<wbr>period:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules a periodic piece of work.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedulePeriodic</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">startAfter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>startAfter</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period after which initial work should be run.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period for running the work periodically.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/ConnectableObservable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ConnectableObservable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ConnectableObservable\" class=\"dashAnchor\"></a>\n\n    <a title=\"ConnectableObservable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Classes.html\">Other Classes</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ConnectableObservable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ConnectableObservable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ConnectableObservable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21ConnectableObservableC7connectAA10Disposable_pyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/connect()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21ConnectableObservableC7connectAA10Disposable_pyF\">connect()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">connect</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/CurrentThreadScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>CurrentThreadScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/CurrentThreadScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"CurrentThreadScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      CurrentThreadScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>CurrentThreadScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">CurrentThreadScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that schedules units of work on the current thread.</p>\n\n<p>This is the default scheduler for operators that generate elements.</p>\n\n<p>This scheduler is also sometimes called <code>trampoline scheduler</code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22CurrentThreadSchedulerC8instanceACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/instance\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22CurrentThreadSchedulerC8instanceACvpZ\">instance</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The singleton instance of the current thread scheduler.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">instance</span><span class=\"p\">:</span> <span class=\"kt\">CurrentThreadScheduler</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22CurrentThreadSchedulerC18isScheduleRequiredSbvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/isScheduleRequired\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22CurrentThreadSchedulerC18isScheduleRequiredSbvpZ\">isScheduleRequired</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Gets a value that indicates whether the caller must call a <code>schedule</code> method.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">private(set)</span> <span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">isScheduleRequired</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22CurrentThreadSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22CurrentThreadSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed as soon as possible on current thread.</p>\n\n<p>If this method is called on some thread that doesn&rsquo;t have <code>CurrentThreadScheduler</code> installed, scheduler will be\nautomatically installed and uninstalled after all work is performed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/DisposeBag/DisposableBuilder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>DisposableBuilder Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../../js/jquery.min.js\" defer></script>\n    <script src=\"../../js/jazzy.js\" defer></script>\n    \n    <script src=\"../../js/lunr.min.js\" defer></script>\n    <script src=\"../../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/DisposableBuilder\" class=\"dashAnchor\"></a>\n\n    <a title=\"DisposableBuilder Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../../Classes/DisposeBag.html\">DisposeBag</a>\n      <img class=\"carat\" src=\"../../img/carat.png\" alt=\"\"/>\n      DisposableBuilder Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>DisposableBuilder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">@resultBuilder</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">DisposableBuilder</span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC17DisposableBuilderV10buildBlockySayAA0E0_pGAaG_pd_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/buildBlock(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC17DisposableBuilderV10buildBlockySayAA0E0_pGAaG_pd_tFZ\">buildBlock(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">buildBlock</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/DisposeBag.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>DisposeBag Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/DisposeBag\" class=\"dashAnchor\"></a>\n\n    <a title=\"DisposeBag Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      DisposeBag Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>DisposeBag</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">DisposeBag</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Thread safe bag that disposes added disposables on <code>deinit</code>.</p>\n\n<p>This returns ARC (RAII) like resource management to <code>RxSwift</code>.</p>\n\n<p>In case contained disposables need to be disposed, just put a different dispose bag\nor create a new one in its place.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">self</span><span class=\"o\">.</span><span class=\"n\">existingDisposeBag</span> <span class=\"o\">=</span> <span class=\"kt\">DisposeBag</span><span class=\"p\">()</span>\n</code></pre>\n\n<p>In case explicit disposal is necessary, there is also <code><a href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a></code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new empty dispose bag.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/insert(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pF\">insert(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Adds <code>disposable</code> to be disposed when dispose bag is being deinited.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">insert</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>disposable</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Disposable to add.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC9disposingAcA10Disposable_pd_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(disposing:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC9disposingAcA10Disposable_pd_tcfc\">init(disposing:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience init allows a list of disposables to be gathered for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">disposing</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">...</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC7builderACSayAA10Disposable_pGyXE_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(builder:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC7builderACSayAA10Disposable_pGyXE_tcfc\">init(builder:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience init which utilizes a function builder to let you pass in a list of\ndisposables to make a DisposeBag of.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"kd\">@DisposeBag</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Classes/DisposeBag/DisposableBuilder.html\">DisposableBuilder</a></span> <span class=\"nv\">builder</span><span class=\"p\">:</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC9disposingACSayAA10Disposable_pG_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(disposing:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC9disposingACSayAA10Disposable_pG_tcfc\">init(disposing:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience init allows an array of disposables to be gathered for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">disposing</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pd_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/insert(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pd_tF\">insert(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience function allows a list of disposables to be gathered for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">insert</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">...</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC6insert7builderySayAA10Disposable_pGyXE_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/insert(builder:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC6insert7builderySayAA10Disposable_pGyXE_tF\">insert(builder:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience function allows a list of disposables to be gathered for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">insert</span><span class=\"p\">(</span><span class=\"kd\">@DisposeBag</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Classes/DisposeBag/DisposableBuilder.html\">DisposableBuilder</a></span> <span class=\"nv\">builder</span><span class=\"p\">:</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC6insertyySayAA10Disposable_pGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/insert(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC6insertyySayAA10Disposable_pGF\">insert(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience function allows an array of disposables to be gathered for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">insert</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC17DisposableBuilderV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/DisposableBuilder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC17DisposableBuilderV\">DisposableBuilder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                        <a href=\"../Classes/DisposeBag/DisposableBuilder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@resultBuilder</span>\n<span class=\"kd\">struct</span> <span class=\"kt\">DisposableBuilder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/HistoricalScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>HistoricalScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/HistoricalScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"HistoricalScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      HistoricalScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>HistoricalScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">HistoricalScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                </div>\n              </div>\n            <p>Provides a virtual time scheduler that uses <code>Date</code> for absolute time and <code>TimeInterval</code> for relative time.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19HistoricalSchedulerC12initialClockAC10Foundation4DateV_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(initialClock:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19HistoricalSchedulerC12initialClockAC10Foundation4DateV_tcfc\">init(initialClock:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a new historical scheduler with initial clock value.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">initialClock</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span> <span class=\"o\">=</span> <span class=\"kt\">Date</span><span class=\"p\">(</span><span class=\"nv\">timeIntervalSince1970</span><span class=\"p\">:</span> <span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>initialClock</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Initial value for virtual clock.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/MainScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>MainScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/MainScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"MainScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      MainScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>MainScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">MainScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Abstracts work that needs to be performed on <code>DispatchQueue.main</code>. In case <code>schedule</code> methods are called from <code>DispatchQueue.main</code>, it will perform action immediately without scheduling.</p>\n\n<p>This scheduler is usually used to perform UI work.</p>\n\n<p>Main scheduler is a specialization of <code><a href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a></code>.</p>\n\n<p>This scheduler is optimized for <code>observeOn</code> operator. To ensure observable sequence is subscribed on main thread using <code>subscribeOn</code>\noperator please use <code><a href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a></code> because it is more optimized for that purpose.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes new instance of <code>MainScheduler</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerC8instanceACvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/instance\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerC8instanceACvpZ\">instance</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Singleton instance of <code>MainScheduler</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">instance</span><span class=\"p\">:</span> <span class=\"kt\">MainScheduler</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerC13asyncInstanceAA019SerialDispatchQueueD0CvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/asyncInstance\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerC13asyncInstanceAA019SerialDispatchQueueD0CvpZ\">asyncInstance</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Singleton instance of <code>MainScheduler</code> that always schedules work asynchronously\nand doesn&rsquo;t perform optimizations for calls scheduled from main queue.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">let</span> <span class=\"nv\">asyncInstance</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerC017ensureExecutingOnD012errorMessageySSSg_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ensureExecutingOnScheduler(errorMessage:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerC017ensureExecutingOnD012errorMessageySSSg_tFZ\">ensureExecutingOnScheduler(errorMessage:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>In case this method is called on a background thread it will throw an exception.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ensureExecutingOnScheduler</span><span class=\"p\">(</span><span class=\"nv\">errorMessage</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerC015ensureRunningOnC6Thread12errorMessageySSSg_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/ensureRunningOnMainThread(errorMessage:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerC015ensureRunningOnC6Thread12errorMessageySSSg_tFZ\">ensureRunningOnMainThread(errorMessage:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>In case this method is running on a background thread it will throw an exception.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">ensureRunningOnMainThread</span><span class=\"p\">(</span><span class=\"nv\">errorMessage</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/Observable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Observable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/Observable\" class=\"dashAnchor\"></a>\n\n    <a title=\"Observable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Observable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Observable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">Observable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">_</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\">asObservable()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Observable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/OperationQueueScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>OperationQueueScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/OperationQueueScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"OperationQueueScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      OperationQueueScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>OperationQueueScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">OperationQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Abstracts the work that needs to be performed on a specific <code>NSOperationQueue</code>.</p>\n\n<p>This scheduler is suitable for cases when there is some bigger chunk of work that needs to be performed in background and you want to fine tune concurrent processing using <code>maxConcurrentOperationCount</code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23OperationQueueSchedulerC09operationD0So011NSOperationD0Cvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/operationQueue\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23OperationQueueSchedulerC09operationD0So011NSOperationD0Cvp\">operationQueue</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">operationQueue</span><span class=\"p\">:</span> <span class=\"kt\">OperationQueue</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23OperationQueueSchedulerC13queuePrioritySo011NSOperationdG0Vvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/queuePriority\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23OperationQueueSchedulerC13queuePrioritySo011NSOperationdG0Vvp\">queuePriority</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">queuePriority</span><span class=\"p\">:</span> <span class=\"kt\">Operation</span><span class=\"o\">.</span><span class=\"kt\">QueuePriority</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23OperationQueueSchedulerC09operationD013queuePriorityACSo011NSOperationD0C_So0idH0Vtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(operationQueue:queuePriority:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23OperationQueueSchedulerC09operationD013queuePriorityACSo011NSOperationD0C_So0idH0Vtcfc\">init(operationQueue:<wbr>queuePriority:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new instance of <code>OperationQueueScheduler</code> that performs work on <code><a href=\"../Classes/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC09operationD0So011NSOperationD0Cvp\">operationQueue</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">operationQueue</span><span class=\"p\">:</span> <span class=\"kt\">OperationQueue</span><span class=\"p\">,</span> <span class=\"nv\">queuePriority</span><span class=\"p\">:</span> <span class=\"kt\">Operation</span><span class=\"o\">.</span><span class=\"kt\">QueuePriority</span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">normal</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>operationQueue</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Operation queue targeted to perform work on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>queuePriority</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Queue priority which will be assigned to new operations.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23OperationQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23OperationQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed recursively.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/PublishSubject.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PublishSubject Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/PublishSubject\" class=\"dashAnchor\"></a>\n\n    <a title=\"PublishSubject Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      PublishSubject Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>PublishSubject</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">PublishSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n<p>Each notification is broadcasted to all subscribed observers.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC0D12ObserverTypea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SubjectObserverType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC0D12ObserverTypea\">SubjectObserverType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">SubjectObserverType</span> <span class=\"o\">=</span> <span class=\"kt\">PublishSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC12hasObserversSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/hasObservers\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC12hasObserversSbvp\">hasObservers</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has any observers</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">hasObservers</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has been isDisposed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectCACyxGycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectCACyxGycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Notifies all subscribed observers about next event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event to send to the observers.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an observer to the subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observer to subscribe to the subject.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Disposable object that can be used to unsubscribe the observer from the subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC10asObserverACyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC10asObserverACyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns observer interface for subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PublishSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Unsubscribe all observers and release resources.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/RefCountDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RefCountDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/RefCountDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"RefCountDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      RefCountDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RefCountDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">RefCountDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18RefCountDisposableC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18RefCountDisposableC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Was resource disposed.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18RefCountDisposableC10disposableAcA0E0_p_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(disposable:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18RefCountDisposableC10disposableAcA0E0_p_tcfc\">init(disposable:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>RefCountDisposable</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18RefCountDisposableC6retainAA0E0_pyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retain()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18RefCountDisposableC6retainAA0E0_pyF\">retain()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Holds a dependent disposable that when disposed decreases the refcount on the underlying disposable.</p>\n\n<p>When getter is called, a dependent disposable contributing to the reference count that manages the underlying disposable&rsquo;s lifetime is returned.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">retain</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18RefCountDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18RefCountDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Disposes the underlying disposable only when all dependent disposables have been disposed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/ReplaySubject.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ReplaySubject Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ReplaySubject\" class=\"dashAnchor\"></a>\n\n    <a title=\"ReplaySubject Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ReplaySubject Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ReplaySubject</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n<p>Each notification is broadcasted to all subscribed and future observers, subject to buffer trimming policies.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC0D12ObserverTypea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SubjectObserverType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC0D12ObserverTypea\">SubjectObserverType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">SubjectObserverType</span> <span class=\"o\">=</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC12hasObserversSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/hasObservers\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC12hasObserversSbvp\">hasObservers</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Indicates whether the subject has any observers</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">hasObservers</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Notifies all subscribed observers about next event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"nv\">_</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event to send to the observers.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC10asObserverACyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC10asObserverACyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns observer interface for subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Unsubscribe all observers and release resources.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC6create10bufferSizeACyxGSi_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(bufferSize:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC6create10bufferSizeACyxGSi_tFZ\">create(bufferSize:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates new instance of <code>ReplaySubject</code> that replays at most <code>bufferSize</code> last elements of sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"nv\">bufferSize</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>bufferSize</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximal number of elements to replay to observer after subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>New instance of replay subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC15createUnboundedACyxGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/createUnbounded()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC15createUnboundedACyxGyFZ\">createUnbounded()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a new instance of <code>ReplaySubject</code> that buffers all the elements of a sequence.\nTo avoid filling up memory, developer needs to make sure that the use case will only ever store a &lsquo;reasonable&rsquo;\nnumber of elements.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">createUnbounded</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/ScheduledDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ScheduledDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/ScheduledDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"ScheduledDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ScheduledDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ScheduledDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">ScheduledDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19ScheduledDisposableC9schedulerAA22ImmediateSchedulerType_pvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/scheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19ScheduledDisposableC9schedulerAA22ImmediateSchedulerType_pvp\">scheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19ScheduledDisposableC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19ScheduledDisposableC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Was resource disposed.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19ScheduledDisposableC9scheduler10disposableAcA22ImmediateSchedulerType_p_AA0D0_ptcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(scheduler:disposable:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19ScheduledDisposableC9scheduler10disposableAcA22ImmediateSchedulerType_p_AA0D0_ptcfc\">init(scheduler:<wbr>disposable:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>ScheduledDisposable</code> that uses a <code><a href=\"../Classes/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC9schedulerAA22ImmediateSchedulerType_pvp\">scheduler</a></code> on which to dispose the <code>disposable</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">,</span> <span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler where the disposable resource will be disposed on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>disposable</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Disposable resource to dispose on the given scheduler.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19ScheduledDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19ScheduledDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Disposes the wrapped disposable on the provided scheduler.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/SerialDispatchQueueScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SerialDispatchQueueScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/SerialDispatchQueueScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"SerialDispatchQueueScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SerialDispatchQueueScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SerialDispatchQueueScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">SerialDispatchQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. It will make sure\nthat even if concurrent dispatch queue is passed, it&rsquo;s transformed into a serial one.</p>\n\n<p>It is extremely important that this scheduler is serial, because\ncertain operator perform optimizations that rely on that property.</p>\n\n<p>Because there is no way of detecting is passed dispatch queue serial or\nconcurrent, for every queue that is being passed, worst case (concurrent)\nwill be assumed, and internal serial proxy dispatch queue will be created.</p>\n\n<p>This scheduler can also be used with internal serial queue alone.</p>\n\n<p>In case some customization need to be made on it before usage,\ninternal serial queue can be customized using <code>serialQueueConfiguration</code>\ncallback.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC12TimeIntervala\"></a>\n                    <a name=\"//apple_ref/swift/Alias/TimeInterval\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC12TimeIntervala\">TimeInterval</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">TimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">Foundation</span><span class=\"o\">.</span><span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC4Timea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Time\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC4Timea\">Time</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Time</span> <span class=\"o\">=</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC3now10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/now\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC3now10Foundation4DateVvp\">now</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">now</span><span class=\"p\">:</span> <span class=\"kt\">Date</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Current time.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC08internalcE4Name06serialE13Configuration6leewayACSS_ySo17OS_dispatch_queueCcSg0D00D12TimeIntervalOtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(internalSerialQueueName:serialQueueConfiguration:leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC08internalcE4Name06serialE13Configuration6leewayACSS_ySo17OS_dispatch_queueCcSg0D00D12TimeIntervalOtcfc\">init(internalSerialQueueName:<wbr>serialQueueConfiguration:<wbr>leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new <code>SerialDispatchQueueScheduler</code> with internal serial queue named <code>internalSerialQueueName</code>.</p>\n\n<p>Additional dispatch queue properties can be set after dispatch queue is created using <code>serialQueueConfiguration</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">internalSerialQueueName</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"nv\">serialQueueConfiguration</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">DispatchQueue</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">DispatchTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span><span class=\"o\">.</span><span class=\"nf\">nanoseconds</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>internalSerialQueueName</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Name of internal serial dispatch queue.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>serialQueueConfiguration</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Additional configuration of internal serial dispatch queue.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The amount of time, in nanoseconds, that the system will defer the timer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC5queue08internalcE4Name6leewayACSo012OS_dispatch_G0C_SS0D00D12TimeIntervalOtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(queue:internalSerialQueueName:leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC5queue08internalcE4Name6leewayACSo012OS_dispatch_G0C_SS0D00D12TimeIntervalOtcfc\">init(queue:<wbr>internalSerialQueueName:<wbr>leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new <code>SerialDispatchQueueScheduler</code> named <code>internalSerialQueueName</code> that wraps <code>queue</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">queue</span><span class=\"p\">:</span> <span class=\"kt\">DispatchQueue</span><span class=\"p\">,</span> <span class=\"nv\">internalSerialQueueName</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">,</span> <span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">DispatchTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span><span class=\"o\">.</span><span class=\"nf\">nanoseconds</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>queue</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Possibly concurrent dispatch queue used to perform work.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>internalSerialQueueName</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Name of internal serial dispatch queue proxy.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The amount of time, in nanoseconds, that the system will defer the timer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC3qos08internalcE4Name6leewayAC0D00D3QoSV_SSAG0D12TimeIntervalOtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(qos:internalSerialQueueName:leeway:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC3qos08internalcE4Name6leewayAC0D00D3QoSV_SSAG0D12TimeIntervalOtcfc\">init(qos:<wbr>internalSerialQueueName:<wbr>leeway:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs new <code>SerialDispatchQueueScheduler</code> that wraps one of the global concurrent dispatch queues.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"n\">macOS</span> <span class=\"mf\">10.10</span><span class=\"p\">,</span> <span class=\"o\">*</span><span class=\"p\">)</span>\n<span class=\"kd\">public</span> <span class=\"kd\">convenience</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">qos</span><span class=\"p\">:</span> <span class=\"kt\">DispatchQoS</span><span class=\"p\">,</span> <span class=\"nv\">internalSerialQueueName</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"o\">=</span> <span class=\"s\">\"rx.global_dispatch_queue.serial\"</span><span class=\"p\">,</span> <span class=\"nv\">leeway</span><span class=\"p\">:</span> <span class=\"kt\">DispatchTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span><span class=\"o\">.</span><span class=\"nf\">nanoseconds</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>qos</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Identifier for global dispatch queue with specified quality of service class.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>internalSerialQueueName</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Custom name for internal serial dispatch queue proxy.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>leeway</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The amount of time, in nanoseconds, that the system will defer the timer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed immediately.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelative(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\">scheduleRelative(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleRelative</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time after which to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedulePeriodic(_:startAfter:period:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\">schedulePeriodic(_:<wbr>startAfter:<wbr>period:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules a periodic piece of work.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedulePeriodic</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">startAfter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>startAfter</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period after which initial work should be run.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period for running the work periodically.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/SerialDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SerialDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/SerialDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"SerialDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SerialDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SerialDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">SerialDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16SerialDisposableC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16SerialDisposableC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Was resource disposed.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16SerialDisposableCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16SerialDisposableCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>SerialDisposable</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16SerialDisposableC10disposableAA0D0_pvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/disposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16SerialDisposableC10disposableAA0D0_pvp\">disposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Gets or sets the underlying disposable.</p>\n\n<p>Assigning this property disposes the previous disposable object.</p>\n\n<p>If the <code>SerialDisposable</code> has already been disposed, assignment to this property causes immediate disposal of the given disposable object.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16SerialDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16SerialDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Disposes the underlying disposable as well as all future replacements.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/SingleAssignmentDisposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SingleAssignmentDisposable Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/SingleAssignmentDisposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"SingleAssignmentDisposable Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SingleAssignmentDisposable Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SingleAssignmentDisposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">SingleAssignmentDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource which only allows a single assignment of its underlying disposable resource.</p>\n\n<p>If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an exception.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift26SingleAssignmentDisposableC10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift26SingleAssignmentDisposableC10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A value that indicates whether the object is disposed.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift26SingleAssignmentDisposableCACycfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift26SingleAssignmentDisposableCACycfc\">init()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a new instance of the <code>SingleAssignmentDisposable</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">override</span> <span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift26SingleAssignmentDisposableC03setE0yyAA0E0_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/setDisposable(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift26SingleAssignmentDisposableC03setE0yyAA0E0_pF\">setDisposable(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined.</p>\n\n<p><strong>Throws exception if the <code>SingleAssignmentDisposable</code> has already been assigned to.</strong></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">setDisposable</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift26SingleAssignmentDisposableC7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift26SingleAssignmentDisposableC7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Disposes the underlying disposable.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Classes/VirtualTimeScheduler.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>VirtualTimeScheduler Class Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Class/VirtualTimeScheduler\" class=\"dashAnchor\"></a>\n\n    <a title=\"VirtualTimeScheduler Class Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      VirtualTimeScheduler Class Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>VirtualTimeScheduler</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">open</span> <span class=\"kd\">class</span> <span class=\"kt\">VirtualTimeScheduler</span><span class=\"o\">&lt;</span><span class=\"kt\">Converter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a></span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">VirtualTimeScheduler</span><span class=\"p\">:</span> <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n\n                </div>\n              </div>\n            <p>Base class for virtual time schedulers using a priority queue for scheduled items.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC0cD0a\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTime\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">VirtualTime</span> <span class=\"o\">=</span> <span class=\"kt\">Converter</span><span class=\"o\">.</span><span class=\"kt\">VirtualTimeUnit</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC0cD8Intervala\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTimeInterval\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC0cD8Intervala\">VirtualTimeInterval</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">VirtualTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">Converter</span><span class=\"o\">.</span><span class=\"kt\">VirtualTimeIntervalUnit</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC3now10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/now\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC3now10Foundation4DateVvp\">now</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">now</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Current time.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC5clock0cD4UnitQzvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/clock\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC5clock0cD4UnitQzvp\">clock</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">clock</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Scheduler&rsquo;s absolute time clock value.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC12initialClock9converterACyxG0cD4UnitQz_xtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(initialClock:converter:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC12initialClock9converterACyxG0cD4UnitQz_xtcfc\">init(initialClock:<wbr>converter:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a new virtual time scheduler.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">initialClock</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span><span class=\"p\">,</span> <span class=\"nv\">converter</span><span class=\"p\">:</span> <span class=\"kt\">Converter</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>initialClock</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Initial value for the clock.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed immediately.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC16scheduleRelative_03dueD06actionAA10Disposable_pqd___8Dispatch0kD8IntervalOAaG_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelative(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC16scheduleRelative_03dueD06actionAA10Disposable_pqd___8Dispatch0kD8IntervalOAaG_pqd__ctlF\">scheduleRelative(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleRelative</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time after which to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC016scheduleRelativeC0_03dueD06actionAA10Disposable_pqd___0cD12IntervalUnitQzAaG_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelativeVirtual(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC016scheduleRelativeC0_03dueD06actionAA10Disposable_pqd___0cD12IntervalUnitQzAaG_pqd__ctlF\">scheduleRelativeVirtual(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed after relative time has passed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleRelativeVirtual</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD8Intervala\">VirtualTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>time</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Absolute time when to execute the action. If this is less or equal then <code><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC3now10Foundation4DateVvp\">now</a></code>, <code>now + 1</code>  will be used.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC016scheduleAbsoluteC0_4time6actionAA10Disposable_pqd___0cD4UnitQzAaG_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleAbsoluteVirtual(_:time:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC016scheduleAbsoluteC0_4time6actionAA10Disposable_pqd___0cD4UnitQzAaG_pqd__ctlF\">scheduleAbsoluteVirtual(_:<wbr>time:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed at absolute virtual time.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">scheduleAbsoluteVirtual</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>time</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Absolute time when to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC015adjustScheduledD0y0cD4UnitQzAFF\"></a>\n                    <a name=\"//apple_ref/swift/Method/adjustScheduledTime(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC015adjustScheduledD0y0cD4UnitQzAFF\">adjustScheduledTime(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Adjusts time of scheduling before adding item to schedule queue.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">open</span> <span class=\"kd\">func</span> <span class=\"nf\">adjustScheduledTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC5startyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/start()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC5startyyF\">start()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Starts the virtual time scheduler.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">start</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC9advanceToyy0cD4UnitQzF\"></a>\n                    <a name=\"//apple_ref/swift/Method/advanceTo(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC9advanceToyy0cD4UnitQzF\">advanceTo(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Advances the scheduler&rsquo;s clock to the specified time, running all work till that point.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">advanceTo</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\">VirtualTime</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>virtualTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Absolute time to advance the scheduler&rsquo;s clock to.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC5sleepyy0cD12IntervalUnitQzF\"></a>\n                    <a name=\"//apple_ref/swift/Method/sleep(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC5sleepyy0cD12IntervalUnitQzF\">sleep(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Advances the scheduler&rsquo;s clock by the specified relative time.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">sleep</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualInterval</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD8Intervala\">VirtualTimeInterval</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC4stopyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/stop()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC4stopyyF\">stop()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Stops the virtual time scheduler.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">stop</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/description\"></a>\n                <a name=\"//apple_ref/swift/Section/description\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/description\"></a>\n                  <h3 class=\"section-name\"><span>description</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC16debugDescriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/debugDescription\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC16debugDescriptionSSvp\">debugDescription</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A textual representation of <code>self</code>, suitable for debugging.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">debugDescription</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/CompletableEvent.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>CompletableEvent Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/CompletableEvent\" class=\"dashAnchor\"></a>\n\n    <a title=\"CompletableEvent Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      CompletableEvent Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>CompletableEvent</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">CompletableEvent</span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16CompletableEventO5erroryACs5Error_pcACmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16CompletableEventO5erroryACs5Error_pcACmF\">error(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence terminated with an error. (underlying observable sequence emits: <code>.error(Error)</code>)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16CompletableEventO9completedyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/completed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16CompletableEventO9completedyA2CmF\">completed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence completed successfully.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">completed</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/Event.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Event Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/Event\" class=\"dashAnchor\"></a>\n\n    <a title=\"Event Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Event Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Event</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">Event</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">Event</span><span class=\"p\">:</span> <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">Event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/EventConvertible.html\">EventConvertible</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a sequence event.</p>\n\n<p>Sequence grammar:\n<strong>next* (error | completed)</strong></p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO4nextyACyxGxcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/next(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO4nextyACyxGxcAEmlF\">next(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Next element is produced.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO5erroryACyxGs5Error_pcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO5erroryACyxGs5Error_pcAEmlF\">error(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence terminated with an error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO9completedyACyxGAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/completed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO9completedyACyxGAEmlF\">completed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence completed successfully.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">completed</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO16debugDescriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/debugDescription\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO16debugDescriptionSSvp\">debugDescription</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Description of event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">debugDescription</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO06isStopC0Sbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isStopEvent\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO06isStopC0Sbvp\">isStopEvent</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Is <code><a href=\"../Enums/Event.html#/s:7RxSwift5EventO9completedyACyxGAEmlF\">completed</a></code> or <code><a href=\"../Enums/Event.html#/s:7RxSwift5EventO5errors5Error_pSgvp\">error</a></code> event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">isStopEvent</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO7elementxSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO7elementxSgvp\">element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>If <code>next</code> event, returns element value.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO5errors5Error_pSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/error\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO5errors5Error_pSgvp\">error</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>If <code>error</code> event, returns error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO11isCompletedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isCompleted\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO11isCompletedSbvp\">isCompleted</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>If <code><a href=\"../Enums/Event.html#/s:7RxSwift5EventO9completedyACyxGAEmlF\">completed</a></code> event, returns <code>true</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">isCompleted</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO3mapyACyqd__Gqd__xKXElF\"></a>\n                    <a name=\"//apple_ref/swift/Method/map(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO3mapyACyqd__Gqd__xKXElF\">map(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Maps sequence elements using transform. If error happens during the transform, <code><a href=\"../Enums/Event.html#/s:7RxSwift5EventO5errors5Error_pSgvp\">.error</a></code>\nwill be returned as value.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">map</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Event</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO5eventACyxGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/event\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO5eventACyxGvp\">event</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Event representation of this instance</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\">Event</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/Hooks.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Hooks Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/Hooks\" class=\"dashAnchor\"></a>\n\n    <a title=\"Hooks Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Hooks Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Hooks</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">Hooks</span></code></pre>\n\n                </div>\n              </div>\n            <p>RxSwift global hooks</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO22recordCallStackOnErrorSbvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/recordCallStackOnError\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO22recordCallStackOnErrorSbvpZ\">recordCallStackOnError</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">recordCallStackOnError</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO19DefaultErrorHandlera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/DefaultErrorHandler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO19DefaultErrorHandlera\">DefaultErrorHandler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">DefaultErrorHandler</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">subscriptionCallStack</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">],</span> <span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO34CustomCaptureSubscriptionCallstacka\"></a>\n                    <a name=\"//apple_ref/swift/Alias/CustomCaptureSubscriptionCallstack\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO34CustomCaptureSubscriptionCallstacka\">CustomCaptureSubscriptionCallstack</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">CustomCaptureSubscriptionCallstack</span> <span class=\"o\">=</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"p\">[</span><span class=\"kt\">String</span><span class=\"p\">]</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO19defaultErrorHandleryySaySSG_s0E0_ptcvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/defaultErrorHandler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO19defaultErrorHandleryySaySSG_s0E0_ptcvpZ\">defaultErrorHandler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Error handler called in case onError handler wasn&rsquo;t provided.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">defaultErrorHandler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Hooks.html#/s:7RxSwift5HooksO19DefaultErrorHandlera\">DefaultErrorHandler</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO34customCaptureSubscriptionCallstackSaySSGycvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/customCaptureSubscriptionCallstack\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO34customCaptureSubscriptionCallstackSaySSGycvpZ\">customCaptureSubscriptionCallstack</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscription callstack block to fetch custom callstack information.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">customCaptureSubscriptionCallstack</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Hooks.html#/s:7RxSwift5HooksO34CustomCaptureSubscriptionCallstacka\">CustomCaptureSubscriptionCallstack</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/InfallibleEvent.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>InfallibleEvent Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/InfallibleEvent\" class=\"dashAnchor\"></a>\n\n    <a title=\"InfallibleEvent Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      InfallibleEvent Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>InfallibleEvent</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">InfallibleEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">InfallibleEvent</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/EventConvertible.html\">EventConvertible</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15InfallibleEventO4nextyACyxGxcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/next(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15InfallibleEventO4nextyACyxGxcAEmlF\">next(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Next element is produced.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15InfallibleEventO9completedyACyxGAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/completed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15InfallibleEventO9completedyACyxGAEmlF\">completed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence completed successfully.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">completed</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/event\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\">event</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/MaybeEvent.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>MaybeEvent Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/MaybeEvent\" class=\"dashAnchor\"></a>\n\n    <a title=\"MaybeEvent Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      MaybeEvent Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>MaybeEvent</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">MaybeEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10MaybeEventO7successyACyxGxcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/success(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10MaybeEventO7successyACyxGxcAEmlF\">success(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>One and only sequence element is produced. (underlying observable sequence emits: <code>.next(Element)</code>, <code><a href=\"../Enums/MaybeEvent.html#/s:7RxSwift10MaybeEventO9completedyACyxGAEmlF\">.completed</a></code>)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">success</span><span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10MaybeEventO5erroryACyxGs5Error_pcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10MaybeEventO5erroryACyxGs5Error_pcAEmlF\">error(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence terminated with an error. (underlying observable sequence emits: <code>.error(Error)</code>)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10MaybeEventO9completedyACyxGAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/completed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10MaybeEventO9completedyACyxGAEmlF\">completed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence completed successfully.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">completed</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/Resources.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Resources Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/Resources\" class=\"dashAnchor\"></a>\n\n    <a title=\"Resources Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Resources Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Resources</h1>\n            <p>Resource utilization information</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Variable/total\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">total</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Counts internal Rx resource allocations (Observables, Observers, Disposables, etc.). This provides a simple way to detect leaks during development.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Method/incrementTotal()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">incrementTotal()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Increments <code><a href=\"../Enums/Resources.html#/total\">Resources.total</a></code> resource count.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Method/decrementTotal()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">decrementTotal()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decrements <code><a href=\"../Enums/Resources.html#/total\">Resources.total</a></code> resource count</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Variable/numberOfSerialDispatchQueueObservables\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">numberOfSerialDispatchQueueObservables</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Counts number of <code>SerialDispatchQueueObservables</code>.</p>\n\n<p>Purposed for unit tests.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/RxError.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxError Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/RxError\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxError Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      RxError Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxError</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">RxError</span><span class=\"p\">:</span>\n    <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">,</span>\n    <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n\n                </div>\n              </div>\n            <p>Generic Rx error codes.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO7unknownyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/unknown\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO7unknownyA2CmF\">unknown</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Unknown error occurred.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">unknown</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO8disposedyACyXl_tcACmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/disposed(object:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO8disposedyACyXl_tcACmF\">disposed(object:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Performing an action on disposed object.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">disposed</span><span class=\"p\">(</span><span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO8overflowyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/overflow\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO8overflowyA2CmF\">overflow</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Arithmetic overflow error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">overflow</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO18argumentOutOfRangeyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/argumentOutOfRange\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO18argumentOutOfRangeyA2CmF\">argumentOutOfRange</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Argument out of range error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">argumentOutOfRange</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO10noElementsyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/noElements\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\">noElements</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence doesn&rsquo;t contain any elements.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">noElements</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/moreThanOneElement\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\">moreThanOneElement</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence contains more than one element.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">moreThanOneElement</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO7timeoutyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/timeout\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO7timeoutyA2CmF\">timeout</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Timeout error.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">timeout</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO16debugDescriptionSSvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/debugDescription\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO16debugDescriptionSSvp\">debugDescription</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A textual representation of <code>self</code>, suitable for debugging.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">debugDescription</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/SingleEvent.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SingleEvent Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/SingleEvent\" class=\"dashAnchor\"></a>\n\n    <a title=\"SingleEvent Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.1.0-beta.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      SingleEvent Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SingleEvent.html\">SingleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeUntilBehavior.html\">TakeUntilBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Structs.html\">Other Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Resources.html\">Resources</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SingleEvent</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">SingleEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                </div>\n              </div>\n            <p>Undocumented</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SingleEventO7successyACyxGxcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/success(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SingleEventO7successyACyxGxcAEmlF\">success(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>One and only sequence element is produced. (underlying observable sequence emits: <code>.next(Element)</code>, <code>.completed</code>)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">success</span><span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SingleEventO5erroryACyxGs5Error_pcAEmlF\"></a>\n                    <a name=\"//apple_ref/swift/Element/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SingleEventO5erroryACyxGs5Error_pcAEmlF\">error(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence terminated with an error. (underlying observable sequence emits: <code>.error(Error)</code>)</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/ReactiveX/RxSwift\" target=\"_blank\" rel=\"external\">Krunoslav Zaher</a>. All rights reserved. (Last updated: 2020-08-28)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.5</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Enums/SubjectLifetimeScope.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SubjectLifetimeScope Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/SubjectLifetimeScope\" class=\"dashAnchor\"></a>\n\n    <a title=\"SubjectLifetimeScope Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SubjectLifetimeScope Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SubjectLifetimeScope</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">SubjectLifetimeScope</span></code></pre>\n\n                </div>\n              </div>\n            <p>Subject lifetime scope</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20SubjectLifetimeScopeO14whileConnectedyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/whileConnected\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20SubjectLifetimeScopeO14whileConnectedyA2CmF\">whileConnected</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p><strong>Each connection will have it&rsquo;s own subject instance to store replay events.</strong>\n<strong>Connections will be isolated from each another.</strong></p>\n\n<p>Configures the underlying implementation to behave equivalent to.</p>\n<pre class=\"highlight swift\"><code><span class=\"n\">source</span><span class=\"o\">.</span><span class=\"nf\">multicast</span><span class=\"p\">(</span><span class=\"nv\">makeSubject</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"kt\">MySubject</span><span class=\"p\">()</span> <span class=\"p\">})</span><span class=\"o\">.</span><span class=\"nf\">refCount</span><span class=\"p\">()</span>\n</code></pre>\n\n<p><strong>This is the recommended default.</strong></p>\n\n<p>This has the following consequences:</p>\n\n<ul>\n<li><code>retry</code> or <code>concat</code> operators will function as expected because terminating the sequence will clear internal state.</li>\n<li>Each connection to source observable sequence will use it&rsquo;s own subject.</li>\n<li>When the number of subscribers drops from 1 to 0 and connection to source sequence is disposed, subject will be cleared.</li>\n</ul>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">xs</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"n\">deferred</span> <span class=\"p\">{</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Observable</span><span class=\"o\">&lt;</span><span class=\"kt\">TimeInterval</span><span class=\"o\">&gt;</span> <span class=\"k\">in</span>\n        <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Performing work ...\"</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"kt\">Date</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">timeIntervalSince1970</span><span class=\"p\">)</span>\n    <span class=\"p\">}</span>\n    <span class=\"o\">.</span><span class=\"nf\">share</span><span class=\"p\">(</span><span class=\"nv\">replay</span><span class=\"p\">:</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"nv\">scope</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">whileConnected</span><span class=\"p\">)</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n\n</code></pre>\n\n<p>Notice how time interval is different and <code>Performing work ...</code> is printed each time)</p>\n<pre class=\"highlight swift\"><code><span class=\"kt\">Performing</span> <span class=\"n\">work</span> <span class=\"o\">...</span>\n<span class=\"n\">next</span> <span class=\"mf\">1495998900.82141</span>\n<span class=\"n\">completed</span>\n\n<span class=\"kt\">Performing</span> <span class=\"n\">work</span> <span class=\"o\">...</span>\n<span class=\"n\">next</span> <span class=\"mf\">1495998900.82359</span>\n<span class=\"n\">completed</span>\n\n<span class=\"kt\">Performing</span> <span class=\"n\">work</span> <span class=\"o\">...</span>\n<span class=\"n\">next</span> <span class=\"mf\">1495998900.82444</span>\n<span class=\"n\">completed</span>\n\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">whileConnected</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20SubjectLifetimeScopeO7foreveryA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/forever\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20SubjectLifetimeScopeO7foreveryA2CmF\">forever</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p><strong>One subject will store replay events for all connections to source.</strong>\n<strong>Connections won&rsquo;t be isolated from each another.</strong></p>\n\n<p>Configures the underlying implementation behave equivalent to.</p>\n<pre class=\"highlight swift\"><code><span class=\"n\">source</span><span class=\"o\">.</span><span class=\"nf\">multicast</span><span class=\"p\">(</span><span class=\"kt\">MySubject</span><span class=\"p\">())</span><span class=\"o\">.</span><span class=\"nf\">refCount</span><span class=\"p\">()</span>\n</code></pre>\n\n<p>This has the following consequences:</p>\n\n<ul>\n<li>Using <code>retry</code> or <code>concat</code> operators after this operator usually isn&rsquo;t advised.</li>\n<li>Each connection to source observable sequence will share the same subject.</li>\n<li>After number of subscribers drops from 1 to 0 and connection to source observable sequence is dispose, this operator will\ncontinue holding a reference to the same subject.\nIf at some later moment a new observer initiates a new connection to source it can potentially receive\nsome of the stale events received during previous connection.</li>\n<li>After source sequence terminates any new observer will always immediately receive replayed elements and terminal event.\nNo new subscriptions to source observable sequence will be attempted.</li>\n</ul>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">xs</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"n\">deferred</span> <span class=\"p\">{</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Observable</span><span class=\"o\">&lt;</span><span class=\"kt\">TimeInterval</span><span class=\"o\">&gt;</span> <span class=\"k\">in</span>\n        <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Performing work ...\"</span><span class=\"p\">)</span>\n        <span class=\"k\">return</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"kt\">Date</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">timeIntervalSince1970</span><span class=\"p\">)</span>\n    <span class=\"p\">}</span>\n    <span class=\"o\">.</span><span class=\"nf\">share</span><span class=\"p\">(</span><span class=\"nv\">replay</span><span class=\"p\">:</span> <span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"nv\">scope</span><span class=\"p\">:</span> <span class=\"o\">.</span><span class=\"n\">forever</span><span class=\"p\">)</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">xs</span><span class=\"o\">.</span><span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"next </span><span class=\"se\">\\(</span><span class=\"nv\">$0</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">},</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">{</span> <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"completed</span><span class=\"se\">\\n</span><span class=\"s\">\"</span><span class=\"p\">)</span> <span class=\"p\">})</span>\n</code></pre>\n\n<p>Notice how time interval is the same, replayed, and <code>Performing work ...</code> is printed only once</p>\n<pre class=\"highlight swift\"><code><span class=\"kt\">Performing</span> <span class=\"n\">work</span> <span class=\"o\">...</span>\n<span class=\"n\">next</span> <span class=\"mf\">1495999013.76356</span>\n<span class=\"n\">completed</span>\n\n<span class=\"n\">next</span> <span class=\"mf\">1495999013.76356</span>\n<span class=\"n\">completed</span>\n\n<span class=\"n\">next</span> <span class=\"mf\">1495999013.76356</span>\n<span class=\"n\">completed</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">forever</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/TakeBehavior.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>TakeBehavior Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/TakeBehavior\" class=\"dashAnchor\"></a>\n\n    <a title=\"TakeBehavior Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      TakeBehavior Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>TakeBehavior</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">TakeBehavior</span></code></pre>\n\n                </div>\n              </div>\n            <p>Behaviors for the take operator family.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12TakeBehaviorO9inclusiveyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/inclusive\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12TakeBehaviorO9inclusiveyA2CmF\">inclusive</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Include the last element matching the predicate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">inclusive</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12TakeBehaviorO9exclusiveyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/exclusive\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12TakeBehaviorO9exclusiveyA2CmF\">exclusive</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Exclude the last element matching the predicate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">exclusive</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Enums/TakeUntilBehavior.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>TakeUntilBehavior Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/TakeUntilBehavior\" class=\"dashAnchor\"></a>\n\n    <a title=\"TakeUntilBehavior Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.1.0-beta.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      TakeUntilBehavior Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SingleEvent.html\">SingleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeUntilBehavior.html\">TakeUntilBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Structs.html\">Other Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Resources.html\">Resources</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>TakeUntilBehavior</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">TakeUntilBehavior</span></code></pre>\n\n                </div>\n              </div>\n            <p>Behaviors for the <code>takeUntil(_ behavior:predicate:)</code> operator.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17TakeUntilBehaviorO9inclusiveyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/inclusive\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17TakeUntilBehaviorO9inclusiveyA2CmF\">inclusive</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Include the last element matching the predicate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">inclusive</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17TakeUntilBehaviorO9exclusiveyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/exclusive\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17TakeUntilBehaviorO9exclusiveyA2CmF\">exclusive</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Exclude the last element matching the predicate.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">exclusive</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/ReactiveX/RxSwift\" target=\"_blank\" rel=\"external\">Krunoslav Zaher</a>. All rights reserved. (Last updated: 2020-08-28)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.5</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/Enums/VirtualTimeComparison.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>VirtualTimeComparison Enumeration Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Enum/VirtualTimeComparison\" class=\"dashAnchor\"></a>\n\n    <a title=\"VirtualTimeComparison Enumeration Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      VirtualTimeComparison Enumeration Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>VirtualTimeComparison</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">VirtualTimeComparison</span></code></pre>\n\n                </div>\n              </div>\n            <p>Virtual time comparison result.</p>\n\n<p>This is additional abstraction because <code>Date</code> is unfortunately not comparable.\nExtending <code>Date</code> with <code>Comparable</code> would be too risky because of possible collisions with other libraries.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21VirtualTimeComparisonO8lessThanyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/lessThan\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21VirtualTimeComparisonO8lessThanyA2CmF\">lessThan</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>lhs &lt; rhs.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">lessThan</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21VirtualTimeComparisonO5equalyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/equal\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21VirtualTimeComparisonO5equalyA2CmF\">equal</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>lhs == rhs.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">equal</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21VirtualTimeComparisonO11greaterThanyA2CmF\"></a>\n                    <a name=\"//apple_ref/swift/Element/greaterThan\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21VirtualTimeComparisonO11greaterThanyA2CmF\">greaterThan</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>lhs &gt; rhs.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">case</span> <span class=\"n\">greaterThan</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Extensions/AsyncSequence.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>AsyncSequence Extension Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Extension/AsyncSequence\" class=\"dashAnchor\"></a>\n\n    <a title=\"AsyncSequence Extension Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      _Concurrency.AsyncSequence Extension Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>AsyncSequence</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">extension</span> <span class=\"kt\">AsyncSequence</span></code></pre>\n\n                </div>\n              </div>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:Sci7RxSwiftE12asObservable8priorityAA0D0Cy7ElementQzGScPSg_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable(priority:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:Sci7RxSwiftE12asObservable8priorityAA0D0Cy7ElementQzGScPSg_tF\">asObservable(priority:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert an <code>AsyncSequence</code> to an <code><a href=\"../Classes/Observable.html\">Observable</a></code>.</p>\n\n<p>Iteration runs in a detached task to prevent blocking the calling thread.\nUse <code>.observe(on:)</code> to control event delivery (e.g., <code><a href=\"../Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerC8instanceACvpZ\">MainScheduler.instance</a></code> for UI updates).</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">(</span><span class=\"nv\">priority</span><span class=\"p\">:</span> <span class=\"kt\">TaskPriority</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>priority</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Priority for the detached task</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An <code><a href=\"../Classes/Observable.html\">Observable</a></code> of the async sequence&rsquo;s element type</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Classes.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Classes  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Classes\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Classes  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Classes  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Classes</h1>\n            <p>The following classes are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21ConnectableObservableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ConnectableObservable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21ConnectableObservableC\">ConnectableObservable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence.</p>\n\n                        <a href=\"Classes/ConnectableObservable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ConnectableObservable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Enums.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Enumerations  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Enumerations\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Enumerations  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Enumerations  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Enumerations</h1>\n            <p>The following enumerations are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A5ErrorO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/RxError\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A5ErrorO\">RxError</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Generic Rx error codes.</p>\n\n                        <a href=\"Enums/RxError.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">RxError</span><span class=\"p\">:</span>\n    <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">,</span>\n    <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5HooksO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/Hooks\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5HooksO\">Hooks</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>RxSwift global hooks</p>\n\n                        <a href=\"Enums/Hooks.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">Hooks</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Enum/Resources\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">Resources</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Resource utilization information</p>\n\n                        <a href=\"Enums/Resources.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20SubjectLifetimeScopeO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/SubjectLifetimeScope\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20SubjectLifetimeScopeO\">SubjectLifetimeScope</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subject lifetime scope</p>\n\n                        <a href=\"Enums/SubjectLifetimeScope.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">SubjectLifetimeScope</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12TakeBehaviorO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/TakeBehavior\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12TakeBehaviorO\">TakeBehavior</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Behaviors for the take operator family.</p>\n\n                        <a href=\"Enums/TakeBehavior.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">TakeBehavior</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21VirtualTimeComparisonO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/VirtualTimeComparison\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21VirtualTimeComparisonO\">VirtualTimeComparison</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Virtual time comparison result.</p>\n\n<p>This is additional abstraction because <code>Date</code> is unfortunately not comparable.\nExtending <code>Date</code> with <code>Comparable</code> would be too risky because of possible collisions with other libraries.</p>\n\n                        <a href=\"Enums/VirtualTimeComparison.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">VirtualTimeComparison</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15InfallibleEventO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/InfallibleEvent\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15InfallibleEventO\">InfallibleEvent</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                        <a href=\"Enums/InfallibleEvent.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">InfallibleEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">InfallibleEvent</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/EventConvertible.html\">EventConvertible</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16CompletableTraitO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/CompletableTrait\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence containing 0 elements</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">CompletableTrait</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16CompletableEventO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/CompletableEvent\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16CompletableEventO\">CompletableEvent</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                        <a href=\"Enums/CompletableEvent.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">CompletableEvent</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10MaybeTraitO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/MaybeTrait\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence containing 0 or 1 elements</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">MaybeTrait</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10MaybeEventO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/MaybeEvent\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10MaybeEventO\">MaybeEvent</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                        <a href=\"Enums/MaybeEvent.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">MaybeEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SingleTraitO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/SingleTrait\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence containing exactly 1 element</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">SingleTrait</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Extensions.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Extensions  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Extensions\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Extensions  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Extensions  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Extensions</h1>\n            <p>The following extensions are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:Sci\"></a>\n                    <a name=\"//apple_ref/swift/Extension/AsyncSequence\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:Sci\">AsyncSequence</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                        <a href=\"Extensions/AsyncSequence.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">extension</span> <span class=\"kt\">AsyncSequence</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:10Foundation11JSONDecoderC\"></a>\n                    <a name=\"//apple_ref/swift/Extension/JSONDecoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">JSONDecoder</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/DataDecoder.html\">DataDecoder</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:10Foundation19PropertyListDecoderC\"></a>\n                    <a name=\"//apple_ref/swift/Extension/PropertyListDecoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PropertyListDecoder</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/DataDecoder.html\">DataDecoder</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/c:objc(cs)NSObject\"></a>\n                    <a name=\"//apple_ref/swift/Extension/NSObject\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/c:objc(cs)NSObject\">NSObject</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Extend NSObject with <code>rx</code> proxy.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">NSObject</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Global Variables.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Global Variables  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Global Variables\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Global Variables  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Global Variables  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Global Variables</h1>\n            <p>The following global variables are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\"></a>\n                    <a name=\"//apple_ref/swift/Global/maxTailRecursiveSinkStackSize\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">maxTailRecursiveSinkStackSize</span><span class=\"p\">:</span> <span class=\"kt\">Int</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Protocols.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Protocols  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Protocols\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Protocols  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Protocols  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Protocols</h1>\n            <p>The following protocols are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16EventConvertibleP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/EventConvertible\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16EventConvertibleP\">EventConvertible</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A type that can be converted to <code><a href=\"Enums/Event.html\">Event&lt;Element&gt;</a></code>.</p>\n\n                        <a href=\"Protocols/EventConvertible.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">EventConvertible</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DataDecoderP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/DataDecoder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DataDecoderP\">DataDecoder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an entity capable of decoding raw <code>Data</code>\ninto a concrete <code>Decodable</code> type</p>\n\n                        <a href=\"Protocols/DataDecoder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">DataDecoder</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatibleP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ReactiveCompatible\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatibleP\">ReactiveCompatible</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A type that has reactive extensions.</p>\n\n                        <a href=\"Protocols/ReactiveCompatible.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ReactiveCompatible</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/InfallibleType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypeP\">InfallibleType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p><code><a href=\"Structs/Infallible.html\">Infallible</a></code> is an <code><a href=\"Classes/Observable.html\">Observable</a></code>-like push-style interface\nwhich is guaranteed to not emit error events.</p>\n\n<p>Unlike <code>SharedSequence</code>, it does not share its resources or\nreplay its events, but acts as a standard <code><a href=\"Classes/Observable.html\">Observable</a></code>.</p>\n\n                        <a href=\"Protocols/InfallibleType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">InfallibleType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/PrimitiveSequenceType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypeP\">PrimitiveSequenceType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Observable sequences containing 0 or 1 element</p>\n\n                        <a href=\"Protocols/PrimitiveSequenceType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">PrimitiveSequenceType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Structs.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Structures  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n\n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Structures\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Structures  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.9.0 Docs\n        </a>\n         (95% documented)\n      </p>\n\n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n\n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n\n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift Reference</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Structures  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Structs.html\">Other Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Resources.html\">Resources</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Structures</h1>\n            <p>The following structures are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Resources\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">Resources</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Resource utilization information</p>\n\n                        <a href=\"Structs/Resources.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2024 <a class=\"link\" href=\"https://github.com/ReactiveX/RxSwift\" target=\"_blank\" rel=\"external noopener\">Shai Mishali and Krunoslav Zaher</a>. All rights reserved. (Last updated: 2024-10-06)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.14.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Other Typealiases.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Other Type Aliases  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/Other Type Aliases\" class=\"dashAnchor\"></a>\n\n    <a title=\"Other Type Aliases  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      Other Type Aliases  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Other Type Aliases</h1>\n            <p>The following type aliases are available globally.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A10Observablea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/RxObservable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A10Observablea\">RxObservable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A type-erased <code><a href=\"Protocols/ObservableType.html\">ObservableType</a></code>.</p>\n\n<p>It represents a push style sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">RxObservable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\">RxSwift</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A12TimeIntervala\"></a>\n                    <a name=\"//apple_ref/swift/Alias/RxTimeInterval\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">RxTimeInterval</span> <span class=\"o\">=</span> <span class=\"kt\">DispatchTimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A4Timea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/RxTime\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A4Timea\">RxTime</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type that represents absolute time in the context of RxSwift.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">RxTime</span> <span class=\"o\">=</span> <span class=\"kt\">Date</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift0A15AbstractIntegera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/RxAbstractInteger\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">RxAbstractInteger</span> <span class=\"o\">=</span> <span class=\"kt\">FixedWidthInteger</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SingleEventa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SingleEvent\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">SingleEvent</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\">Result</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/Cancelable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Cancelable Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/Cancelable\" class=\"dashAnchor\"></a>\n\n    <a title=\"Cancelable Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Cancelable Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Cancelable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Cancelable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents disposable resource with state tracking.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10CancelableP10isDisposedSbvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/isDisposed\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10CancelableP10isDisposedSbvp\">isDisposed</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Was resource disposed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">isDisposed</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ConnectableObservableType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ConnectableObservableType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ConnectableObservableType\" class=\"dashAnchor\"></a>\n\n    <a title=\"ConnectableObservableType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ConnectableObservableType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ConnectableObservableType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ConnectableObservableType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ConnectableObservableTypeP7connectAA10Disposable_pyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/connect()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ConnectableObservableTypeP7connectAA10Disposable_pyF\">connect()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">connect</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ConnectableObservableTypePAAE8refCountAA0D0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/refCount()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ConnectableObservableTypePAAE8refCountAA0D0Cy7ElementQzGyF\">refCount()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/refcount.html\">refCount operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">refCount</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/DataDecoder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>DataDecoder Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/DataDecoder\" class=\"dashAnchor\"></a>\n\n    <a title=\"DataDecoder Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      DataDecoder Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>DataDecoder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">DataDecoder</span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an entity capable of decoding raw <code>Data</code>\ninto a concrete <code>Decodable</code> type</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DataDecoderP6decode_4fromqd__qd__m_10Foundation0C0VtKSeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(_:from:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DataDecoderP6decode_4fromqd__qd__m_10Foundation0C0VtKSeRd__lF\">decode(_:<wbr>from:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">Item</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">Item</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span> <span class=\"n\">from</span> <span class=\"nv\">data</span><span class=\"p\">:</span> <span class=\"kt\">Data</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Item</span> <span class=\"k\">where</span> <span class=\"kt\">Item</span> <span class=\"p\">:</span> <span class=\"kt\">Decodable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/Disposable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Disposable Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/Disposable\" class=\"dashAnchor\"></a>\n\n    <a title=\"Disposable Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Disposable Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Disposable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Disposable</span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a disposable resource.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposableP7disposeyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dispose()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposableP7disposeyyF\">dispose()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Dispose resource.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">dispose</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposablePAAE8disposed2byyAA10DisposeBagC_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/disposed(by:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposablePAAE8disposed2byyAA10DisposeBagC_tF\">disposed(by:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Adds <code>self</code> to <code>bag</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">disposed</span><span class=\"p\">(</span><span class=\"n\">by</span> <span class=\"nv\">bag</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/DisposeBag.html\">DisposeBag</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>bag</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p><code><a href=\"../Classes/DisposeBag.html\">DisposeBag</a></code> to add <code>self</code> to.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/EventConvertible.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>EventConvertible Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/EventConvertible\" class=\"dashAnchor\"></a>\n\n    <a title=\"EventConvertible Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      EventConvertible Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>EventConvertible</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">EventConvertible</span></code></pre>\n\n                </div>\n              </div>\n            <p>A type that can be converted to <code><a href=\"../Enums/Event.html\">Event&lt;Element&gt;</a></code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16EventConvertibleP7ElementQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16EventConvertibleP7ElementQa\">Element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type of element in event</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/event\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\">event</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Event representation of this instance</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/EventConvertible.html#/s:7RxSwift16EventConvertibleP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ImmediateSchedulerType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ImmediateSchedulerType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ImmediateSchedulerType\" class=\"dashAnchor\"></a>\n\n    <a title=\"ImmediateSchedulerType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ImmediateSchedulerType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ImmediateSchedulerType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ImmediateSchedulerType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that immediately schedules units of work.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22ImmediateSchedulerTypeP8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedule(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22ImmediateSchedulerTypeP8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\">schedule(_:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed immediately.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">schedule</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22ImmediateSchedulerTypePAAE17scheduleRecursive_6actionAA10Disposable_pqd___yqd___yqd__XEtctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRecursive(_:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22ImmediateSchedulerTypePAAE17scheduleRecursive_6actionAA10Disposable_pqd___yqd___yqd__XEtctlF\">scheduleRecursive(_:<wbr>action:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed recursively.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scheduleRecursive</span><span class=\"o\">&lt;</span><span class=\"kt\">State</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">State</span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">State</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">recurse</span><span class=\"p\">:</span> <span class=\"p\">(</span><span class=\"kt\">State</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to execute recursively. The last parameter passed to the action is used to trigger recursive scheduling of the action, passing in recursive invocation state.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/InfallibleType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>InfallibleType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/InfallibleType\" class=\"dashAnchor\"></a>\n\n    <a title=\"InfallibleType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      InfallibleType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>InfallibleType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">InfallibleType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p><code><a href=\"../Structs/Infallible.html\">Infallible</a></code> is an <code><a href=\"../Classes/Observable.html\">Observable</a></code>-like push-style interface\nwhich is guaranteed to not emit error events.</p>\n\n<p>Unlike <code>SharedSequence</code>, it does not share its resources or\nreplay its events, but acts as a standard <code><a href=\"../Classes/Observable.html\">Observable</a></code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE13combineLatest_14resultSelectorAA0C0Vy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE13combineLatest_14resultSelectorAA0C0Vy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\">combineLatest(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combinelatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">([</span><span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">])</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE13combineLatestyAA0C0VySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE13combineLatestyAA0C0VySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\">combineLatest(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combinelatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Infallible\"></a>\n                <a name=\"//apple_ref/swift/Section/Infallible\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Infallible\"></a>\n                  <h3 class=\"section-name\"><span>Infallible</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6valuesScSy7ElementQzGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/values\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6valuesScSy7ElementQzGvp\">values</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Allows iterating over the values of an Infallible\nasynchronously via Swift&rsquo;s concurrency features (<code>async/await</code>)</p>\n\n<p>A sample usage would look like so:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">for</span> <span class=\"k\">await</span> <span class=\"n\">value</span> <span class=\"k\">in</span> <span class=\"n\">observable</span><span class=\"o\">.</span><span class=\"n\">values</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// Handle emitted values</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">values</span><span class=\"p\">:</span> <span class=\"kt\">AsyncStream</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Static%20allocation\"></a>\n                <a name=\"//apple_ref/swift/Section/Static allocation\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Static%20allocation\"></a>\n                  <h3 class=\"section-name\"><span>Static allocation</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4justyAA0C0Vy7ElementQzGAHFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4justyAA0C0Vy7ElementQzGAHFZ\">just(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an infallible sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting infallible sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4just_9schedulerAA0C0Vy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4just_9schedulerAA0C0Vy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\">just(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an infallible sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting infallible sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send the single element on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5neverAA0C0Vy7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/never()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5neverAA0C0Vy7ElementQzGyFZ\">never()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a non-terminating infallible sequence, which can be used to denote an infinite duration.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">never operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">never</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence whose observers will never get called.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5emptyAA0C0Vy7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/empty()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5emptyAA0C0Vy7ElementQzGyFZ\">empty()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an empty infallible sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">empty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">empty</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence with no elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE8deferredyAA0C0Vy7ElementQzGAIyKcFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/deferred(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE8deferredyAA0C0Vy7ElementQzGAIyKcFZ\">deferred(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an infallible sequence that invokes the specified factory function whenever a new observer subscribes.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defer.html\">defer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">deferred</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observableFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observableFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable factory function to invoke for each observer that subscribes to the resulting sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers trigger an invocation of the given observable factory function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Filter\"></a>\n                <a name=\"//apple_ref/swift/Section/Filter\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Filter\"></a>\n                  <h3 class=\"section-name\"><span>Filter</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6filteryAA0C0Vy7ElementQzGSbAHcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/filter(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6filteryAA0C0Vy7ElementQzGSbAHcF\">filter(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Filters the elements of an observable sequence based on a predicate.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/filter.html\">filter operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">filter</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each source element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains elements from the input sequence that satisfy the condition.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Map\"></a>\n                <a name=\"//apple_ref/swift/Section/Map\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Map\"></a>\n                  <h3 class=\"section-name\"><span>Map</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3mapyAA0C0Vyqd__Gqd__7ElementQzclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/map(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3mapyAA0C0Vyqd__Gqd__7ElementQzclF\">map(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new form.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/map.html\">map operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">map</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE10compactMapyAA0C0Vyqd__Gqd__Sg7ElementQzclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compactMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE10compactMapyAA0C0Vyqd__Gqd__Sg7ElementQzclF\">compactMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">compactMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">?)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element and which returns an element or nil.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of filtering the transform function for each element of the source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Distinct\"></a>\n                <a name=\"//apple_ref/swift/Section/Distinct\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Distinct\"></a>\n                  <h3 class=\"section-name\"><span>Distinct</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGqd__AHKcSQRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGqd__AHKcSQRd__lF\">distinctUntilChanged(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>keySelector</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">keySelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">Equatable</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keySelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to compute the comparison key for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGSbAH_AHtKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGSbAH_AHtKcF\">distinctUntilChanged(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>comparer</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">comparer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>comparer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Equality comparer for computed key values.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on <code>comparer</code>, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged_8comparerAA0C0Vy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:comparer:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged_8comparerAA0C0Vy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\">distinctUntilChanged(_:<wbr>comparer:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">distinctUntilChanged</span><span class=\"o\">&lt;</span><span class=\"kt\">K</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">keySelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">K</span><span class=\"p\">,</span> <span class=\"nv\">comparer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">K</span><span class=\"p\">,</span> <span class=\"kt\">K</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keySelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to compute the comparison key for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>comparer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Equality comparer for computed key values.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged2atAA0C0Vy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(at:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged2atAA0C0Vy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\">distinctUntilChanged(at:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">at</span> <span class=\"nv\">keyPath</span><span class=\"p\">:</span> <span class=\"kt\">KeyPath</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kd\">some</span> <span class=\"kt\">Equatable</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span>\n    <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on equality operator on the provided key path</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Throttle\"></a>\n                <a name=\"//apple_ref/swift/Section/Throttle\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Throttle\"></a>\n                  <h3 class=\"section-name\"><span>Throttle</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE8debounce_9schedulerAA0C0Vy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/debounce(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE8debounce_9schedulerAA0C0Vy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">debounce(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/debounce.html\">debounce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">debounce</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Throttling duration for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the throttle timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The throttled sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE8throttle_6latest9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/throttle(_:latest:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE8throttle_6latest9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\">throttle(_:<wbr>latest:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.</p>\n\n<p>This operator makes sure that no two elements are emitted in less then dueTime.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/debounce.html\">debounce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">throttle</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">latest</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Throttling duration for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>latest</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Should latest element received in a dueTime wide time window since last element emission be emitted.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the throttle timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The throttled sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/FlatMap\"></a>\n                <a name=\"//apple_ref/swift/Section/FlatMap\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/FlatMap\"></a>\n                  <h3 class=\"section-name\"><span>FlatMap</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE7flatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE7flatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\">flatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE13flatMapLatestyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapLatest(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE13flatMapLatestyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\">flatMapLatest(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new sequence of observable sequences and then\ntransforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.</p>\n\n<p>It is a combination of <code>map</code> + <code>switchLatest</code> operator</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMapLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\nObservable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE12flatMapFirstyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapFirst(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE12flatMapFirstyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\">flatMapFirst(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\nIf element is received while there is some projected observable sequence being merged it will simply be ignored.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMapFirst operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapFirst</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to element that was observed while no observable is executing in parallel.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Concat\"></a>\n                <a name=\"//apple_ref/swift/Section/Concat\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Concat\"></a>\n                  <h3 class=\"section-name\"><span>Concat</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__AA021ObservableConvertibleD0Rd__AGQyd__AHRSlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__AA021ObservableConvertibleD0Rd__AGQyd__AHRSlF\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__STRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__STRd__AiGRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGAId_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGAId_tFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">concat</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE9concatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE9concatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\">concatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">concatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each observed inner sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Merge\"></a>\n                <a name=\"//apple_ref/swift/Section/Merge\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Merge\"></a>\n                  <h3 class=\"section-name\"><span>Merge</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all observable sequences from collection into a single observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">merge</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Collection</span> <span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGSayAIGFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGSayAIGFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all infallible sequences from array into a single infallible sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">])</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Array of infallible sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The infallible sequence that merges the elements of the infallible sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGAId_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGAId_tFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all infallible sequences into a single infallible sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of infallible sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The infallible sequence that merges the elements of the infallible sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Scan\"></a>\n                <a name=\"//apple_ref/swift/Section/Scan\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Scan\"></a>\n                  <h3 class=\"section-name\"><span>Scan</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4scan4into11accumulatorAA0C0Vyqd__Gqd___yqd__z_7ElementQztctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scan(into:accumulator:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4scan4into11accumulatorAA0C0Vyqd__Gqd___yqd__z_7ElementQztctlF\">scan(into:<wbr>accumulator:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with no intermediate results, see <code>reduce</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/scan.html\">scan operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scan</span><span class=\"o\">&lt;</span><span class=\"kt\">Seed</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">into</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">Seed</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"k\">inout</span> <span class=\"kt\">Seed</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Seed</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>An accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the accumulated values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4scan_11accumulatorAA0C0Vyqd__Gqd___qd__qd___7ElementQztctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scan(_:accumulator:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4scan_11accumulatorAA0C0Vyqd__Gqd___qd__qd___7ElementQztctlF\">scan(_:<wbr>accumulator:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with no intermediate results, see <code>reduce</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/scan.html\">scan operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scan</span><span class=\"o\">&lt;</span><span class=\"kt\">Seed</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">Seed</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Seed</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Seed</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Seed</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>An accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the accumulated values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Start%20with\"></a>\n                <a name=\"//apple_ref/swift/Section/Start with\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Start%20with\"></a>\n                  <h3 class=\"section-name\"><span>Start with</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE9startWithyAA0C0Vy7ElementQzGAHF\"></a>\n                    <a name=\"//apple_ref/swift/Method/startWith(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE9startWithyAA0C0Vy7ElementQzGAHF\">startWith(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Prepends a value to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/startwith.html\">startWith operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">startWith</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Element to prepend to the specified sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence prepended with the specified values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Take%20and%20Skip%20%7B\"></a>\n                <a name=\"//apple_ref/swift/Section/Take and Skip {\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Take%20and%20Skip%20%7B\"></a>\n                  <h3 class=\"section-name\"><span>Take and Skip {</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(until:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAaBRd__lF\">take(until:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">until</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that terminates propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(until:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\">take(until:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">until</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that terminates propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4take5until8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(until:behavior:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4take5until8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\">take(until:<wbr>behavior:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence until the specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span>\n    <span class=\"n\">until</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">,</span>\n    <span class=\"nv\">behavior</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/TakeBehavior.html\">TakeBehavior</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">exclusive</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>behavior</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Whether or not to include the last element matching the predicate. Defaults to <code>exclusive</code>.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4take5while8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(while:behavior:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4take5while8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\">take(while:<wbr>behavior:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence as long as a specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takewhile.html\">takeWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span>\n    <span class=\"k\">while</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">,</span>\n    <span class=\"nv\">behavior</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/TakeBehavior.html\">TakeBehavior</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">exclusive</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4takeyAA0C0Vy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4takeyAA0C0Vy7ElementQzGSiF\">take(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a specified number of contiguous elements from the start of an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/take.html\">take operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The number of elements to return.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the specified number of elements from the start of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4take3for9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(for:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4take3for9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\">take(for:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Takes elements for the specified duration from the start of the infallible source sequence, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/take.html\">take operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"k\">for</span> <span class=\"nv\">duration</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>duration</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Duration for taking elements from the start of the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence with the elements taken during the specified duration from the start of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4skip5whileAA0C0Vy7ElementQzGSbAIKc_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(while:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4skip5whileAA0C0Vy7ElementQzGSbAIKc_tF\">skip(while:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Bypasses elements in an infallible sequence as long as a specified condition is true and then returns the remaining elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipwhile.html\">skipWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"k\">while</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE4skip5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(until:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE4skip5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\">skip(until:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source infallible sequence that are emitted after the other infallible sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipuntil.html\">skipUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"n\">until</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Infallible sequence that starts propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An infallible sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Share\"></a>\n                <a name=\"//apple_ref/swift/Section/Share\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Share\"></a>\n                  <h3 class=\"section-name\"><span>Share</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE5share6replay5scopeAA0C0Vy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/share(replay:scope:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE5share6replay5scopeAA0C0Vy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\">share(replay:<wbr>scope:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that <strong>shares a single subscription to the underlying sequence</strong>, and immediately upon subscription replays  elements in buffer.</p>\n\n<p>This operator is equivalent to:</p>\n\n<ul>\n<li><code>.whileConnected</code>\n<code>\n// Each connection will have it&#39;s own subject instance to store replay events.\n// Connections will be isolated from each another.\nsource.multicast(makeSubject: { Replay.create(bufferSize: replay) }).refCount()\n</code></li>\n<li><code>.forever</code>\n<code>\n// One subject will store replay events for all connections to source.\n// Connections won&#39;t be isolated from each another.\nsource.multicast(Replay.create(bufferSize: replay)).refCount()\n</code></li>\n</ul>\n\n<p>It uses optimized versions of the operators for most common operations.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/replay.html\">shareReplay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">share</span><span class=\"p\">(</span><span class=\"nv\">replay</span><span class=\"p\">:</span> <span class=\"kt\">Int</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"nv\">scope</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">whileConnected</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>replay</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum element count of the replay buffer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scope</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Lifetime scope of sharing subject. For more information see <code><a href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a></code> enum.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of a sequence produced by multicasting the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/withUnretained\"></a>\n                <a name=\"//apple_ref/swift/Section/withUnretained\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/withUnretained\"></a>\n                  <h3 class=\"section-name\"><span>withUnretained</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE14withUnretained_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withUnretained(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE14withUnretained_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\">withUnretained(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\n\n<p>In the case the provided object cannot be retained successfully, the sequence will complete.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Be careful when using this operator in a sequence that has a buffer or replay, for example <code>share(replay: 1)</code>, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withUnretained</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"p\">,</span> <span class=\"kt\">Out</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">_</span> <span class=\"nv\">obj</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Out</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Out</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>obj</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to combine the unretained referenced on <code>obj</code> and the value of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the result of <code>resultSelector</code> being called with an unretained reference on <code>obj</code> and the values of the original sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE14withUnretainedyAA0C0Vyqd___7ElementQztGqd__Rld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withUnretained(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE14withUnretainedyAA0C0Vyqd___7ElementQztGqd__Rld__ClF\">withUnretained(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\n\n<p>In the case the provided object cannot be retained successfully, the sequence will complete.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Be careful when using this operator in a sequence that has a buffer or replay, for example <code>share(replay: 1)</code>, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withUnretained</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">obj</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Object</span> <span class=\"p\">:</span> <span class=\"kt\">AnyObject</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>obj</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence of tuples that contains both an unretained reference on <code>obj</code> and the values of the original sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/withLatestFrom\"></a>\n                <a name=\"//apple_ref/swift/Section/withLatestFrom\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/withLatestFrom\"></a>\n                  <h3 class=\"section-name\"><span>withLatestFrom</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE14withLatestFrom_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAaBRd__r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withLatestFrom(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE14withLatestFrom_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAaBRd__r0_lF\">withLatestFrom(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Elements emitted by self before the second source has emitted any values will be omitted.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withLatestFrom</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">,</span> <span class=\"kt\">ResultType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">ResultType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">ResultType</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable source.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each element from the self combined with the latest element from the second source, if any.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE14withLatestFromyAA0C0Vy7ElementQyd__Gqd__AaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withLatestFrom(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE14withLatestFromyAA0C0Vy7ElementQyd__Gqd__AaBRd__lF\">withLatestFrom(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when <code>self</code> emits an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Elements emitted by self before the second source has emitted any values will be omitted.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withLatestFrom</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable source.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Zip\"></a>\n                <a name=\"//apple_ref/swift/Section/Zip\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Zip\"></a>\n                  <h3 class=\"section-name\"><span>Zip</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip__14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAIqd___qd_0_tKctr0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip__14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAIqd___qd_0_tKctr0_lFZ\">zip(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip___14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAIqd___qd_0_qd_1_tKctr1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip___14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAIqd___qd_0_qd_1_tKctr1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAIqd___qd_0_qd_1_qd_2_tKctr2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAIqd___qd_0_qd_1_qd_2_tKctr2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip_____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAIqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip_____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAIqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip_______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip_______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE3zip________14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAGyqd_6_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE3zip________14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAGyqd_6_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE9subscribe4with6onNext0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd__cSgAMtRld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(with:onNext:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE9subscribe4with6onNext0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd__cSgAMtRld__ClF\">subscribe(with:<wbr>onNext:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an element handler, a completion handler and disposed handler to an observable sequence.</p>\n\n<p>Error callback is not exposed because <code><a href=\"../Structs/Infallible.html\">Infallible</a></code> can&rsquo;t error out.</p>\n\n<p>Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If <code>object</code> can&rsquo;t be retained, none of the other closures will be invoked.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">with</span> <span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>object</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.\ngracefully completed, errored, or if the generation is canceled by disposing subscription)</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription)</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE9subscribe6onNext0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_yycSgALtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onNext:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE9subscribe6onNext0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_yycSgALtF\">subscribe(onNext:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an element handler, a completion handler and disposed handler to an observable sequence.</p>\n\n<p>Error callback is not exposed because <code><a href=\"../Structs/Infallible.html\">Infallible</a></code> can&rsquo;t error out.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.\ngracefully completed, errored, or if the generation is canceled by disposing subscription)</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription)</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAE9subscribeyAA10Disposable_pyAA0C5EventOy7ElementQzGcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAE9subscribeyAA10Disposable_pyAA0C5EventOy7ElementQzGcF\">subscribe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an event handler to an observable sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">on</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>on</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each event in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code> == <code>Any</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\">combineLatest(_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"p\">:</span> <span class=\"kt\">InfallibleType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">O8</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60Equatable%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `Equatable`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60Equatable%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code>Equatable</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14InfallibleTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0VyAEGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14InfallibleTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0VyAEGyF\">distinctUntilChanged()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to equality operator.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ObservableConvertibleType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ObservableConvertibleType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ObservableConvertibleType\" class=\"dashAnchor\"></a>\n\n    <a title=\"ObservableConvertibleType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ObservableConvertibleType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ObservableConvertibleType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObservableConvertibleType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Type that can be converted to observable sequence (<code><a href=\"../Classes/Observable.html\">Observable&lt;Element&gt;</a></code>).</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type of elements in sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\">asObservable()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts <code>self</code> to <code><a href=\"../Classes/Observable.html\">Observable</a></code> sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypePAAE6valuesScsy7ElementQzs5Error_pGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/values\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypePAAE6valuesScsy7ElementQzs5Error_pGvp\">values</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Allows iterating over the values of an Observable\nasynchronously via Swift&rsquo;s concurrency features (<code>async/await</code>)</p>\n\n<p>A sample usage would look like so:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">do</span> <span class=\"p\">{</span>\n    <span class=\"k\">for</span> <span class=\"k\">try</span> <span class=\"k\">await</span> <span class=\"n\">value</span> <span class=\"k\">in</span> <span class=\"n\">observable</span><span class=\"o\">.</span><span class=\"n\">values</span> <span class=\"p\">{</span>\n        <span class=\"c1\">// Handle emitted values</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// Handle error</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">values</span><span class=\"p\">:</span> <span class=\"kt\">AsyncThrowingStream</span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"p\">,</span> <span class=\"kt\">Error</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorJustReturnAA0G0Vy7ElementQzGAI_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asInfallible(onErrorJustReturn:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorJustReturnAA0G0Vy7ElementQzGAI_tF\">asInfallible(onErrorJustReturn:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert to an <code><a href=\"../Structs/Infallible.html\">Infallible</a></code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asInfallible</span><span class=\"p\">(</span><span class=\"n\">onErrorJustReturn</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p><code><a href=\"../Structs/Infallible.html\">Infallible&lt;Element&gt;</a></code></p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorFallbackToAA0G0Vy7ElementQzGAJ_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asInfallible(onErrorFallbackTo:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorFallbackToAA0G0Vy7ElementQzGAJ_tF\">asInfallible(onErrorFallbackTo:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert to an <code><a href=\"../Structs/Infallible.html\">Infallible</a></code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asInfallible</span><span class=\"p\">(</span><span class=\"n\">onErrorFallbackTo</span> <span class=\"nv\">infallible</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>infallible</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Fall back to this provided infallible on error</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p><code><a href=\"../Structs/Infallible.html\">Infallible&lt;Element&gt;</a></code></p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible14onErrorRecoverAA0G0Vy7ElementQzGAJs0I0_pc_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asInfallible(onErrorRecover:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible14onErrorRecoverAA0G0Vy7ElementQzGAJs0I0_pc_tF\">asInfallible(onErrorRecover:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert to an <code><a href=\"../Structs/Infallible.html\">Infallible</a></code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asInfallible</span><span class=\"p\">(</span><span class=\"nv\">onErrorRecover</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onErrorRecover</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Recover with the this infallible closure</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p><code><a href=\"../Structs/Infallible.html\">Infallible&lt;Element&gt;</a></code></p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ObservableType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ObservableType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ObservableType\" class=\"dashAnchor\"></a>\n\n    <a title=\"ObservableType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ObservableType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ObservableType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObservableType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents a push style sequence.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes <code>observer</code> to receive events for this sequence.</p>\n<h3 id='grammar' class='heading'>Grammar</h3>\n\n<p><strong>Next* (Error | Completed)?</strong></p>\n\n<ul>\n<li>sequences can produce zero or more elements so zero or more <code>Next</code> events can be sent to <code>observer</code></li>\n<li>once an <code>Error</code> or <code>Completed</code> event is sent, the sequence terminates and can&rsquo;t produce any other elements</li>\n</ul>\n\n<p>It is possible that events are sent from different threads, but no two events can be sent concurrently to\n<code>observer</code>.</p>\n<h3 id='resource-management' class='heading'>Resource Management</h3>\n\n<p>When sequence sends <code>Complete</code> or <code>Error</code> event all internal resources that compute sequence elements\nwill be freed.</p>\n\n<p>To cancel production of sequence elements and free resources immediately, call <code>dispose</code> on returned\nsubscription.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription for <code>observer</code> that can be used to cancel production of sequence elements and free resources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9subscribeyAA10Disposable_pyAA5EventOy7ElementQzGcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9subscribeyAA10Disposable_pyAA5EventOy7ElementQzGcF\">subscribe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an event handler to an observable sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">on</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>on</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each event in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9subscribe4with6onNext0G5Error0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0I0_ptcSgyqd__cSgAPtRld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(with:onNext:onError:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9subscribe4with6onNext0G5Error0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0I0_ptcSgyqd__cSgAPtRld__ClF\">subscribe(with:<wbr>onNext:<wbr>onError:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.</p>\n\n<p>Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If <code>object</code> can&rsquo;t be retained, none of the other closures will be invoked.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">with</span> <span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>object</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9subscribe6onNext0F5Error0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_ys0H0_pcSgyycSgAOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onNext:onError:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9subscribe6onNext0F5Error0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_ys0H0_pcSgyycSgAOtF\">subscribe(onNext:<wbr>onError:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE02asC0AA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE02asC0AA0C0Cy7ElementQzGyF\">asObservable()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Default implementation of converting <code>ObservableType</code> to <code><a href=\"../Classes/Observable.html\">Observable</a></code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/amb(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\">amb(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Propagates the observable sequence that reacts first.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/amb.html\">amb operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">amb</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that surfaces any of the given sequences, whichever reacted first.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__AaBRd__AGQyd__AHRSlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/amb(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__AaBRd__AGQyd__AHRSlF\">amb(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Propagates the observable sequence that reacts first.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/amb.html\">amb operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">amb</span><span class=\"o\">&lt;</span><span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">right</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>right</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that surfaces either of the given sequences, whichever reacted first.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6buffer8timeSpan5count9schedulerAA0C0CySay7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/buffer(timeSpan:count:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6buffer8timeSpan5count9schedulerAA0C0CySay7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\">buffer(timeSpan:<wbr>count:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a buffer that&rsquo;s sent out when either it&rsquo;s full or a given amount of time has elapsed, using the specified scheduler to run timers.</p>\n\n<p>A useful real-world analogy of this overload is the behavior of a ferry leaving the dock when all seats are taken, or at the scheduled time of departure, whichever event occurs first.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/buffer.html\">buffer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">buffer</span><span class=\"p\">(</span><span class=\"nv\">timeSpan</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">]</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>timeSpan</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum time length of a buffer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum element count of a buffer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run buffering timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence of buffers.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5catchyAA0C0Cy7ElementQzGAIs5Error_pKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catch(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5catchyAA0C0Cy7ElementQzGAIs5Error_pKcF\">catch(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">catch</span><span class=\"p\">`(</span><span class=\"n\">_</span> <span class=\"nv\">handler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>handler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Error handler function, producing another observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the elements produced by the handler&rsquo;s resulting observable sequence in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGAIs0F0_pKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchError(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGAIs0F0_pKcF\">catchError(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catch(_:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">catchError</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">handler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>handler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Error handler function, producing another observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the elements produced by the handler&rsquo;s resulting observable sequence in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14catchAndReturnyAA0C0Cy7ElementQzGAHF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchAndReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14catchAndReturnyAA0C0Cy7ElementQzGAHF\">catchAndReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">catchAndReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE20catchErrorJustReturnyAA0C0Cy7ElementQzGAHF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchErrorJustReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE20catchErrorJustReturnyAA0C0Cy7ElementQzGAHF\">catchErrorJustReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catchAndReturn(_:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">catchErrorJustReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchError(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\">catchError(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the next observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catch(onSuccess:onFailure:onDisposed:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">catchError</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5catch8sequenceAA0C0Cy7ElementQzGqd___tSTRd__AjHRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/catch(sequence:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5catch8sequenceAA0C0Cy7ElementQzGqd___tSTRd__AjHRtd__lFZ\">catch(sequence:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the next observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">catch</span><span class=\"p\">`</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing elements from consecutive source sequences until a source sequence terminates successfully.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5retryAA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5retryAA0C0Cy7ElementQzGyF\">retry()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence until it successfully terminates.</p>\n\n<p><strong>This could potentially create an infinite sequence.</strong></p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">retry</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence to repeat until it successfully terminates.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5retryyAA0C0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5retryyAA0C0Cy7ElementQzGSiF\">retry(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence the specified number of times in case of an error or until it successfully terminates.</p>\n\n<p>If you encounter an error and want it to retry once, then you must use <code>retry(2)</code></p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">retry</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">maxAttemptCount</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>maxAttemptCount</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum number of times to repeat the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\">combineLatest(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combinelatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">([</span><span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">])</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatestyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatestyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\">combineLatest(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combinelatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\">combineLatest(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13combineLatest________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13combineLatest________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">O8</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE10compactMapyAA0C0Cyqd__Gqd__Sg7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compactMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE10compactMapyAA0C0Cyqd__Gqd__Sg7ElementQzKclF\">compactMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">compactMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">?)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element and which returns an element or nil.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of filtering the transform function for each element of the source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__AA0c11ConvertibleD0Rd__AGQyd__AHRSlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__AA0c11ConvertibleD0Rd__AGQyd__AHRSlF\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGAId_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGAId_tFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\n\n<p>This operator has tail recursive optimizations that will prevent stack overflow.</p>\n\n<p>Optimizations will be performed in cases equivalent to following:</p>\n\n<p>[1, [2, [3, &hellip;..].concat()].concat].concat()</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">concat</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/create\"></a>\n                <a name=\"//apple_ref/swift/Section/create\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/create\"></a>\n                  <h3 class=\"section-name\"><span>create</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6createyAA0C0Cy7ElementQzGAA10Disposable_pAA11AnyObserverVyAHGcFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6createyAA0C0Cy7ElementQzGAA10Disposable_pAA11AnyObserverVyAHGcFZ\">create(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates an observable sequence from a specified subscribe method implementation.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">subscribe</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Structs/AnyObserver.html\">AnyObserver</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Implementation of the resulting observable sequence&rsquo;s <code>subscribe</code> method.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence with the specified implementation for the <code>subscribe</code> method.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8debounce_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/debounce(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8debounce_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">debounce(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/debounce.html\">debounce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">debounce</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Throttling duration for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the throttle timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The throttled sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5debug_10trimOutput4file4line8functionAA0C0Cy7ElementQzGSSSg_SbSSSuSStF\"></a>\n                    <a name=\"//apple_ref/swift/Method/debug(_:trimOutput:file:line:function:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5debug_10trimOutput4file4line8functionAA0C0Cy7ElementQzGSSSg_SbSSSuSStF\">debug(_:<wbr>trimOutput:<wbr>file:<wbr>line:<wbr>function:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Prints received events for all observers on standard output.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">debug</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">identifier</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">trimOutput</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"kc\">false</span><span class=\"p\">,</span> <span class=\"nv\">file</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"o\">=</span> <span class=\"k\">#file</span><span class=\"p\">,</span> <span class=\"nv\">line</span><span class=\"p\">:</span> <span class=\"kt\">UInt</span> <span class=\"o\">=</span> <span class=\"k\">#line</span><span class=\"p\">,</span> <span class=\"nv\">function</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"o\">=</span> <span class=\"k\">#function</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>identifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Identifier that is printed together with event description to standard output.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>trimOutput</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Should output be trimmed to max 40 characters.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose events are printed to standard output.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7ifEmpty7defaultAA0C0Cy7ElementQzGAI_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ifEmpty(default:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7ifEmpty7defaultAA0C0Cy7ElementQzGAI_tF\">ifEmpty(default:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defaultifempty.html\">DefaultIfEmpty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ifEmpty</span><span class=\"p\">(</span><span class=\"k\">default</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>default</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Default element to be sent if the source does not emit any elements</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence which emits default element end completes in case the original sequence is empty</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8deferredyAA0C0Cy7ElementQzGAIyKcFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/deferred(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8deferredyAA0C0Cy7ElementQzGAIyKcFZ\">deferred(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defer.html\">defer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">deferred</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observableFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observableFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable factory function to invoke for each observer that subscribes to the resulting sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers trigger an invocation of the given observable factory function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5delay_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/delay(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5delay_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">delay(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/delay.html\">delay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">delay</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time shift of the source by.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the subscription delay timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>the source Observable shifted in time by the specified delay.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE17delaySubscription_9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/delaySubscription(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE17delaySubscription_9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\">delaySubscription(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/delay.html\">delay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">delaySubscription</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time shift of the subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the subscription delay timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Time-shifted sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGqd__AHKcSQRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGqd__AHKcSQRd__lF\">distinctUntilChanged(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>keySelector</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">keySelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">Equatable</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keySelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to compute the comparison key for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on a computed key value, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGSbAH_AHtKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGSbAH_AHtKcF\">distinctUntilChanged(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>comparer</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">comparer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>comparer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Equality comparer for computed key values.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on <code>comparer</code>, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged_8comparerAA0C0Cy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(_:comparer:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged_8comparerAA0C0Cy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\">distinctUntilChanged(_:<wbr>comparer:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">distinctUntilChanged</span><span class=\"o\">&lt;</span><span class=\"kt\">K</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">keySelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">K</span><span class=\"p\">,</span> <span class=\"nv\">comparer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">K</span><span class=\"p\">,</span> <span class=\"kt\">K</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>keySelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to compute the comparison key for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>comparer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Equality comparer for computed key values.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on a computed key value and the comparer, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged2atAA0C0Cy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged(at:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged2atAA0C0Cy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\">distinctUntilChanged(at:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">(</span><span class=\"n\">at</span> <span class=\"nv\">keyPath</span><span class=\"p\">:</span> <span class=\"kt\">KeyPath</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kd\">some</span> <span class=\"kt\">Equatable</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on equality operator on the provided key path</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE2do6onNext05afterG00F5Error0hI00F9Completed0hJ00F9Subscribe0F10Subscribed0F7DisposeAA0C0Cy7ElementQzGyAQKcSg_ASys0I0_pKcSgAUyyKcSgAVyycSgA2WtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/do(onNext:afterNext:onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE2do6onNext05afterG00F5Error0hI00F9Completed0hJ00F9Subscribe0F10Subscribed0F7DisposeAA0C0Cy7ElementQzGyAQKcSg_ASys0I0_pKcSgAUyyKcSgAVyycSgA2WtF\">do(onNext:<wbr>afterNext:<wbr>onError:<wbr>afterError:<wbr>onCompleted:<wbr>afterCompleted:<wbr>onSubscribe:<wbr>onSubscribed:<wbr>onDispose:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">do</span><span class=\"p\">`(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">afterNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">afterError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">afterCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onSubscribe</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onSubscribed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onDispose</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element after the observable has passed an onNext event along to its downstream.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke before subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence with the side-effecting behavior applied.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9elementAtyAA0C0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/elementAt(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9elementAtyAA0C0Cy7ElementQzGSiF\">elementAt(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a sequence emitting only element <em>n</em> emitted by an Observable</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/elementat.html\">elementAt operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"element(at:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">elementAt</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">index</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>index</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The index of the required element (starting from 0).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits the desired element as its own sole emission.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7element2atAA0C0Cy7ElementQzGSi_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/element(at:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7element2atAA0C0Cy7ElementQzGSi_tF\">element(at:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a sequence emitting only element <em>n</em> emitted by an Observable</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/elementat.html\">elementAt operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">element</span><span class=\"p\">(</span><span class=\"n\">at</span> <span class=\"nv\">index</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>index</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The index of the required element (starting from 0).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits the desired element as its own sole emission.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5emptyAA0C0Cy7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/empty()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5emptyAA0C0Cy7ElementQzGyFZ\">empty()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">empty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">empty</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with no elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE10enumeratedAA0C0CySi5index_7ElementQz7elementtGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/enumerated()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE10enumeratedAA0C0CySi5index_7ElementQz7elementtGyF\">enumerated()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Enumerates the elements of an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/map.html\">map operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">enumerated</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"nv\">index</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">,</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains tuples of source sequence elements and their indexes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5erroryAA0C0Cy7ElementQzGs5Error_pFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5erroryAA0C0Cy7ElementQzGs5Error_pFZ\">error(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that terminates with an <code>error</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">throw operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that terminates with specified error.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6filteryAA0C0Cy7ElementQzGSbAHKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/filter(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6filteryAA0C0Cy7ElementQzGSbAHKcF\">filter(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Filters the elements of an observable sequence based on a predicate.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/filter.html\">filter operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">filter</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each source element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains elements from the input sequence that satisfy the condition.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14ignoreElementsAA0C0Cys5NeverOGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ignoreElements()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14ignoreElementsAA0C0Cys5NeverOGyF\">ignoreElements()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Skips elements and completes (or errors) when the observable sequence completes (or errors). Equivalent to filter that always returns false.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/ignoreelements.html\">ignoreElements operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ignoreElements</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Never</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that skips all elements of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8generate12initialState9condition9scheduler7iterateAA0C0Cy7ElementQzGAL_SbALKcAA018ImmediateSchedulerD0_pA2LKctFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/generate(initialState:condition:scheduler:iterate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8generate12initialState9condition9scheduler7iterateAA0C0Cy7ElementQzGAL_SbALKcAA018ImmediateSchedulerD0_pA2LKctFZ\">generate(initialState:<wbr>condition:<wbr>scheduler:<wbr>iterate:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Generates an observable sequence by running a state-driven loop producing the sequence&rsquo;s elements, using the specified scheduler\nto run the loop send out observer messages.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">generate</span><span class=\"p\">(</span><span class=\"nv\">initialState</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">condition</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">,</span> <span class=\"nv\">iterate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>initialState</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Initial state.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>condition</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Condition to terminate generation (upon returning <code>false</code>).</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>iterate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Iteration step function.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler on which to run the generator loop.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The generated sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7groupBy11keySelectorAA0C0CyAA07GroupedC0Vyqd__7ElementQzGGqd__AKKc_tSHRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/groupBy(keySelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7groupBy11keySelectorAA0C0CyAA07GroupedC0Vyqd__7ElementQzGGqd__AKKc_tSHRd__lF\">groupBy(keySelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">groupBy</span><span class=\"o\">&lt;</span><span class=\"kt\">Key</span><span class=\"p\">:</span> <span class=\"kt\">Hashable</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">keySelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Key</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Structs/GroupedObservable.html\">GroupedObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Key</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4justyAA0C0Cy7ElementQzGAHFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4justyAA0C0Cy7ElementQzGAHFZ\">just(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4just_9schedulerAA0C0Cy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4just_9schedulerAA0C0Cy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\">just(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send the single element on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3mapyAA0C0Cyqd__Gqd__7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/map(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3mapyAA0C0Cyqd__Gqd__7ElementQzKclF\">map(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new form.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/map.html\">map operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">map</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE11materializeAA0C0CyAA5EventOy7ElementQzGGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/materialize()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE11materializeAA0C0CyAA5EventOy7ElementQzGGyF\">materialize()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert any Observable into an Observable of its events.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/materialize-dematerialize.html\">materialize operator on reactivex.io</a>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">materialize</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that wraps events in an Event<E>. The returned Observable never errors, but it does complete after observing all of the events of the underlying Observable.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7flatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7flatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\">flatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE12flatMapFirstyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapFirst(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE12flatMapFirstyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\">flatMapFirst(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\nIf element is received while there is some projected observable sequence being merged it will simply be ignored.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMapFirst operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapFirst</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to element that was observed while no observable is executing in parallel.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence that was received while no other sequence was being calculated.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all observable sequences from collection into a single observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">merge</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Collection</span> <span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGSayAIGFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGSayAIGFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all observable sequences from array into a single observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">])</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Array of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGAId_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGAId_tFZ\">merge(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all observable sequences into a single observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/concatMap\"></a>\n                <a name=\"//apple_ref/swift/Section/concatMap\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/concatMap\"></a>\n                  <h3 class=\"section-name\"><span>concatMap</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9concatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9concatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\">concatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">concatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each observed inner sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9multicast_8selectorAA0C0Cyqd_0_Gqd__yKc_AhGy7ElementQyd__GKctAA07SubjectD0Rd__8Observer_AIQYd__AIRtzr0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/multicast(_:selector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9multicast_8selectorAA0C0Cyqd_0_Gqd__yKc_AhGy7ElementQyd__GKctAA07SubjectD0Rd__8Observer_AIQYd__AIRtzr0_lF\">multicast(_:<wbr>selector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function.</p>\n\n<p>Each subscription to the resulting sequence causes a separate multicast invocation, exposing the sequence resulting from the selector function&rsquo;s invocation.</p>\n\n<p>For specializations with fixed subject types, see <code>publish</code> and <code>replay</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/publish.html\">multicast operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">multicast</span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span> <span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">subjectSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Subject</span><span class=\"p\">,</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subjectSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function to create an intermediate subject through which the source sequence&rsquo;s elements will be multicast to the selector function.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Selector function which can use the multicasted source sequence subject to the policies enforced by the created subject.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7publishAA011ConnectableC0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/publish()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7publishAA011ConnectableC0Cy7ElementQzGyF\">publish()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence.</p>\n\n<p>This operator is a specialization of <code>multicast</code> using a <code><a href=\"../Classes/PublishSubject.html\">PublishSubject</a></code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/publish.html\">publish operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">publish</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A connectable observable sequence that shares a single subscription to the underlying sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6replayyAA011ConnectableC0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/replay(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6replayyAA011ConnectableC0Cy7ElementQzGSiF\">replay(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying bufferSize elements.</p>\n\n<p>This operator is a specialization of <code>multicast</code> using a <code><a href=\"../Classes/ReplaySubject.html\">ReplaySubject</a></code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/replay.html\">replay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">replay</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">bufferSize</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>bufferSize</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum element count of the replay buffer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A connectable observable sequence that shares a single subscription to the underlying sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9replayAllAA011ConnectableC0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/replayAll()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9replayAllAA011ConnectableC0Cy7ElementQzGyF\">replayAll()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying all elements.</p>\n\n<p>This operator is a specialization of <code>multicast</code> using a <code><a href=\"../Classes/ReplaySubject.html\">ReplaySubject</a></code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/replay.html\">replay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">replayAll</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A connectable observable sequence that shares a single subscription to the underlying sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9multicastyAA011ConnectableC0Cy7ElementQyd__Gqd__AA07SubjectD0Rd__8Observer_AGQYd__AGRtzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/multicast(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9multicastyAA011ConnectableC0Cy7ElementQyd__Gqd__AA07SubjectD0Rd__8Observer_AGQYd__AGRtzlF\">multicast(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Multicasts the source sequence notifications through the specified subject to the resulting connectable observable.</p>\n\n<p>Upon connection of the connectable observable, the subject is subscribed to the source exactly one, and messages are forwarded to the observers registered with the connectable observable.</p>\n\n<p>For specializations with fixed subject types, see <code>publish</code> and <code>replay</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/publish.html\">multicast operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">multicast</span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">subject</span><span class=\"p\">:</span> <span class=\"kt\">Subject</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subject</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Subject to push source elements into.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A connectable observable sequence that upon connection causes the source sequence to push results into the specified subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9multicast11makeSubjectAA011ConnectableC0Cy7ElementQyd__Gqd__yc_tAA0gD0Rd__8Observer_AHQYd__AHRtzlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/multicast(makeSubject:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9multicast11makeSubjectAA011ConnectableC0Cy7ElementQyd__Gqd__yc_tAA0gD0Rd__8Observer_AHQYd__AHRtzlF\">multicast(makeSubject:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Multicasts the source sequence notifications through an instantiated subject to the resulting connectable observable.</p>\n\n<p>Upon connection of the connectable observable, the subject is subscribed to the source exactly one, and messages are forwarded to the observers registered with the connectable observable.</p>\n\n<p>Subject is cleared on connection disposal or in case source sequence produces terminal event.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/publish.html\">multicast operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">multicast</span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"nv\">makeSubject</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Subject</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Subject</span><span class=\"o\">.</span><span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>makeSubject</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function used to instantiate a subject for each connection.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A connectable observable sequence that upon connection causes the source sequence to push results into the specified subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5neverAA0C0Cy7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/never()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5neverAA0C0Cy7ElementQzGyFZ\">never()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">never operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">never</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers will never get called.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7observe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/observe(on:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7observe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\">observe(on:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\n\n<p>This only invokes observer callbacks on a <code>scheduler</code>. In case the subscription and/or unsubscription\nactions have side-effects that require to be run on a scheduler, use <code>subscribeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/observeon.html\">observeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">observe</span><span class=\"p\">(</span><span class=\"n\">on</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to notify observers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose observations happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9observeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/observeOn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9observeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\">observeOn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\n\n<p>This only invokes observer callbacks on a <code>scheduler</code>. In case the subscription and/or unsubscription\nactions have side-effects that require to be run on a scheduler, use <code>subscribeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/observeon.html\">observeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"observe(on:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">observeOn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to notify observers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose observations happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4from8optionalAA0C0Cy7ElementQzGAISg_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(optional:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4from8optionalAA0C0Cy7ElementQzGAISg_tFZ\">from(optional:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts a optional to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">from</span><span class=\"p\">(</span><span class=\"nv\">optional</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">?)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>optional</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Optional element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the wrapped value or not from given optional.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4from8optional9schedulerAA0C0Cy7ElementQzGAJSg_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(optional:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4from8optional9schedulerAA0C0Cy7ElementQzGAJSg_AA018ImmediateSchedulerD0_ptFZ\">from(optional:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts a optional to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">from</span><span class=\"p\">(</span><span class=\"nv\">optional</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">?,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>optional</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Optional element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send the optional element on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the wrapped value or not from given optional.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6reduce_11accumulator9mapResultAA0C0Cyqd_0_Gqd___qd__qd___7ElementQztKcqd_0_qd__Kctr0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/reduce(_:accumulator:mapResult:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6reduce_11accumulator9mapResultAA0C0Cyqd_0_Gqd___qd__qd___7ElementQztKcqd_0_qd__Kctr0_lF\">reduce(_:<wbr>accumulator:<wbr>mapResult:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an <code>accumulator</code> function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified <code>seed</code> value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with incremental intermediate results, see <code>scan</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/reduce.html\">reduce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">reduce</span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"nv\">mapResult</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">A</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>mapResult</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to transform the final accumulator value into the result value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing a single element with the final accumulator value.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6reduce_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/reduce(_:accumulator:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6reduce_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\">reduce(_:<wbr>accumulator:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an <code>accumulator</code> function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified <code>seed</code> value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with incremental intermediate results, see <code>scan</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/reduce.html\">reduce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">reduce</span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">A</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing a single element with the final accumulator value.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13repeatElement_9schedulerAA0C0Cy0F0QzGAI_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/repeatElement(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13repeatElement_9schedulerAA0C0Cy0F0QzGAI_AA018ImmediateSchedulerD0_ptFZ\">repeatElement(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Generates an observable sequence that repeats the given element infinitely, using the specified scheduler to send out observer messages.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/repeat.html\">repeat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">repeatElement</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Element to repeat.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the producer loop on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that repeats the given element infinitely.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd_0_AGyqd__Gc_ts5ErrorRd__AaBRd_0_r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(when:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd_0_AGyqd__Gc_ts5ErrorRd__AaBRd_0_r0_lF\">retry(when:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">retry</span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">when</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd_0_AFyqd__Gcs5ErrorRd__AaBRd_0_r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retryWhen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd_0_AFyqd__Gcs5ErrorRd__AaBRd_0_r0_lF\">retryWhen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"retry(when:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"n\">retryWhen</span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd__AGys5Error_pGc_tAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(when:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd__AGys5Error_pGc_tAaBRd__lF\">retry(when:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">retry</span><span class=\"p\">(</span><span class=\"n\">when</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd__AFys5Error_pGcAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retryWhen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd__AFys5Error_pGcAaBRd__lF\">retryWhen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"retry(when:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">retryWhen</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6sample_12defaultValueAA0C0Cy7ElementQzGqd___AISgtAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/sample(_:defaultValue:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6sample_12defaultValueAA0C0Cy7ElementQzGqd___AISgtAaBRd__lF\">sample(_:<wbr>defaultValue:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Samples the source observable sequence using a sampler observable sequence producing sampling ticks.</p>\n\n<p>Upon each sampling tick, the latest element (if any) in the source sequence during the last sampling interval is sent to the resulting sequence.</p>\n\n<p><strong>In case there were no new elements between sampler ticks, you may provide a default value to be emitted, instead\n  to the resulting sequence otherwise no element is sent.</strong></p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/sample.html\">sample operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">sample</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sampler</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"n\">defaultValue</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sampler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Sampling tick sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>defaultValue</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>a value to return if there are no new elements between sampler ticks</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Sampled observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4scan4into11accumulatorAA0C0Cyqd__Gqd___yqd__z_7ElementQztKctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scan(into:accumulator:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4scan4into11accumulatorAA0C0Cyqd__Gqd___yqd__z_7ElementQztKctlF\">scan(into:<wbr>accumulator:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with no intermediate results, see <code>reduce</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/scan.html\">scan operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scan</span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">into</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"k\">inout</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>An accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the accumulated values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4scan_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scan(_:accumulator:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4scan_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\">scan(_:<wbr>accumulator:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\n\n<p>For aggregation behavior with no intermediate results, see <code>reduce</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/scan.html\">scan operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scan</span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">seed</span><span class=\"p\">:</span> <span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"nv\">accumulator</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">A</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">A</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">A</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>seed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The initial accumulator value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>accumulator</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>An accumulator function to be invoked on each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the accumulated values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/of\"></a>\n                <a name=\"//apple_ref/swift/Section/of\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/of\"></a>\n                  <h3 class=\"section-name\"><span>of</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE2of_9schedulerAA0C0Cy7ElementQzGAId_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/of(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE2of_9schedulerAA0C0Cy7ElementQzGAId_AA018ImmediateSchedulerD0_ptFZ\">of(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This method creates a new Observable instance with a variable number of elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">elements</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"o\">...</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>elements</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Elements to generate.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send elements on. If <code>nil</code>, elements are sent immediately on subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence whose elements are pulled from the given arguments.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGSayAIG_AA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGSayAIG_AA018ImmediateSchedulerD0_ptFZ\">from(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts an array to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">from</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">array</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">],</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence whose elements are pulled from the given enumerable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGqd___AA018ImmediateSchedulerD0_ptSTRd__AHQyd__AIRSlFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGqd___AA018ImmediateSchedulerD0_ptSTRd__AHQyd__AIRSlFZ\">from(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts a sequence to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">from</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Sequence</span> <span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence whose elements are pulled from the given enumerable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5share6replay5scopeAA0C0Cy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/share(replay:scope:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5share6replay5scopeAA0C0Cy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\">share(replay:<wbr>scope:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that <strong>shares a single subscription to the underlying sequence</strong>, and immediately upon subscription replays  elements in buffer.</p>\n\n<p>This operator is equivalent to:</p>\n\n<ul>\n<li><code>.whileConnected</code>\n<code>\n// Each connection will have it&#39;s own subject instance to store replay events.\n// Connections will be isolated from each another.\nsource.multicast(makeSubject: { Replay.create(bufferSize: replay) }).refCount()\n</code></li>\n<li><code>.forever</code>\n<code>\n// One subject will store replay events for all connections to source.\n// Connections won&#39;t be isolated from each another.\nsource.multicast(Replay.create(bufferSize: replay)).refCount()\n</code></li>\n</ul>\n\n<p>It uses optimized versions of the operators for most common operations.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/replay.html\">shareReplay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">share</span><span class=\"p\">(</span><span class=\"nv\">replay</span><span class=\"p\">:</span> <span class=\"kt\">Int</span> <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">,</span> <span class=\"nv\">scope</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">whileConnected</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>replay</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum element count of the replay buffer.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scope</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Lifetime scope of sharing subject. For more information see <code><a href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a></code> enum.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of a sequence produced by multicasting the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6singleAA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/single()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6singleAA0C0Cy7ElementQzGyF\">single()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The single operator is similar to first, but throws a <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\">RxError.noElements</a></code> or <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\">RxError.moreThanOneElement</a></code>\nif the source Observable does not emit exactly one element before successfully completing.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/first.html\">single operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">single</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits a single element or throws an exception if more (or none) of them are emitted.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6singleyAA0C0Cy7ElementQzGSbAHKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/single(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6singleyAA0C0Cy7ElementQzGSbAHKcF\">single(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The single operator is similar to first, but throws a <code>RxError.NoElements</code> or <code>RxError.MoreThanOneElement</code>\nif the source Observable does not emit exactly one element before successfully completing.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/first.html\">single operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">single</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each source element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits a single element or throws an exception if more (or none) of them are emitted.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4skipyAA0C0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4skipyAA0C0Cy7ElementQzGSiF\">skip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Bypasses a specified number of elements in an observable sequence and then returns the remaining elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skip.html\">skip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The number of elements to skip before returning the remaining elements.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements that occur after the specified index in the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4skip_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4skip_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">skip(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Skips elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skip.html\">skip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">duration</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>duration</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Duration for skipping elements from the start of the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with the elements skipped during the specified duration from the start of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4skip5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(until:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4skip5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\">skip(until:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipuntil.html\">skipUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"n\">until</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that starts propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9skipUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skipUntil(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9skipUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\">skipUntil(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipuntil.html\">skipUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"skip(until:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">skipUntil</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that starts propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence that are emitted after the other sequence emits an item.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4skip5whileAA0C0Cy7ElementQzGSbAIKc_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skip(while:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4skip5whileAA0C0Cy7ElementQzGSbAIKc_tF\">skip(while:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipwhile.html\">skipWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">skip</span><span class=\"p\">(</span><span class=\"k\">while</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9skipWhileyAA0C0Cy7ElementQzGSbAHKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/skipWhile(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9skipWhileyAA0C0Cy7ElementQzGSbAHKcF\">skipWhile(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/skipwhile.html\">skipWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"skip(while:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">skipWhile</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence starting at the first element in the linear series that does not pass the test specified by predicate.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9startWithyAA0C0Cy7ElementQzGAHd_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/startWith(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9startWithyAA0C0Cy7ElementQzGAHd_tF\">startWith(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Prepends a sequence of values to an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/startwith.html\">startWith operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">startWith</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">elements</span><span class=\"p\">:</span> <span class=\"kt\">Element</span> <span class=\"o\">...</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>elements</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Elements to prepend to the specified sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence prepended with the specified values.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9subscribe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(on:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9subscribe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\">subscribe(on:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\nscheduler.</p>\n\n<p>This operation is not commonly used.</p>\n\n<p>This only performs the side-effects of subscription and unsubscription on the specified scheduler.</p>\n\n<p>In order to invoke observer callbacks on a <code>scheduler</code>, use <code>observeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/subscribeon.html\">subscribeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">on</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to perform subscription and unsubscription actions on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE11subscribeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribeOn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE11subscribeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\">subscribeOn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\nscheduler.</p>\n\n<p>This operation is not commonly used.</p>\n\n<p>This only performs the side-effects of subscription and unsubscription on the specified scheduler.</p>\n\n<p>In order to invoke observer callbacks on a <code>scheduler</code>, use <code>observeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/subscribeon.html\">subscribeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"subscribe(on:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">subscribeOn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to perform subscription and unsubscription actions on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapLatest(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\">flatMapLatest(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new sequence of observable sequences and then\ntransforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.</p>\n\n<p>It is a combination of <code>map</code> + <code>switchLatest</code> operator</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMapLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\nObservable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA10InfallibleVy7ElementQyd__Gqd__AGQzKcAA0hD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapLatest(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA10InfallibleVy7ElementQyd__Gqd__AGQzKcAA0hD0Rd__lF\">flatMapLatest(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new sequence of observable sequences and then\ntransforms an observable sequence of observable sequences into an observable sequence producing values only from the most recent observable sequence.</p>\n\n<p>It is a combination of <code>map</code> + <code>switchLatest</code> operator</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMapLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Source</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html\">Infallible</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source producing an\nObservable of Observable sequences and that at any point in time produces the elements of the most recent inner observable sequence that has been received.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7ifEmpty8switchToAA0C0Cy7ElementQzGAJ_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ifEmpty(switchTo:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7ifEmpty8switchToAA0C0Cy7ElementQzGAJ_tF\">ifEmpty(switchTo:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements of the specified sequence or <code>switchTo</code> sequence if the sequence is empty.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defaultifempty.html\">DefaultIfEmpty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ifEmpty</span><span class=\"p\">(</span><span class=\"n\">switchTo</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence being returned when source sequence is empty.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4takeyAA0C0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4takeyAA0C0Cy7ElementQzGSiF\">take(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a specified number of contiguous elements from the start of an observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/take.html\">take operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The number of elements to return.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the specified number of elements from the start of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4take3for9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(for:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4take3for9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\">take(for:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/take.html\">take operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"k\">for</span> <span class=\"nv\">duration</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>duration</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Duration for taking elements from the start of the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with the elements taken during the specified duration from the start of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4take_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4take_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">take(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/take.html\">take operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"take(for:scheduler:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">duration</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>duration</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Duration for taking elements from the start of the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with the elements taken during the specified duration from the start of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8takeLastyAA0C0Cy7ElementQzGSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/takeLast(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8takeLastyAA0C0Cy7ElementQzGSiF\">takeLast(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a specified number of contiguous elements from the end of an observable sequence.</p>\n\n<p>This operator accumulates a buffer with a length enough to store elements count elements. Upon completion of the source sequence, this buffer is drained on the result sequence. This causes the elements to be delayed.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takelast.html\">takeLast operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">takeLast</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Number of elements to take from the end of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the specified number of elements from the end of the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4take5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(until:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4take5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\">take(until:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span><span class=\"n\">until</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that terminates propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4take5until8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(until:behavior:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4take5until8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\">take(until:<wbr>behavior:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence until the specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span>\n    <span class=\"n\">until</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">,</span>\n    <span class=\"nv\">behavior</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/TakeBehavior.html\">TakeBehavior</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">exclusive</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>behavior</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Whether or not to include the last element matching the predicate. Defaults to <code>exclusive</code>.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE4take5while8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/take(while:behavior:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE4take5while8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\">take(while:<wbr>behavior:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence as long as a specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takewhile.html\">takeWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">take</span><span class=\"p\">(</span>\n    <span class=\"k\">while</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">,</span>\n    <span class=\"nv\">behavior</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/TakeBehavior.html\">TakeBehavior</a></span> <span class=\"o\">=</span> <span class=\"o\">.</span><span class=\"n\">exclusive</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9takeUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/takeUntil(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9takeUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\">takeUntil(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"take(until:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">takeUntil</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\">ObservableType</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence that terminates propagation of elements of the source sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the elements of the source sequence up to the point the other sequence interrupted further propagation.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9takeUntil_9predicateAA0C0Cy7ElementQzGAA12TakeBehaviorO_SbAIKctF\"></a>\n                    <a name=\"//apple_ref/swift/Method/takeUntil(_:predicate:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9takeUntil_9predicateAA0C0Cy7ElementQzGAA12TakeBehaviorO_SbAIKctF\">takeUntil(_:<wbr>predicate:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence until the specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takeuntil.html\">takeUntil operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"take(until:behavior:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">takeUntil</span><span class=\"p\">(</span>\n    <span class=\"n\">_</span> <span class=\"nv\">behavior</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/TakeBehavior.html\">TakeBehavior</a></span><span class=\"p\">,</span>\n    <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>behavior</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Whether or not to include the last element matching the predicate.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE9takeWhileyAA0C0Cy7ElementQzGSbAHKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/takeWhile(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE9takeWhileyAA0C0Cy7ElementQzGSbAHKcF\">takeWhile(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns elements from an observable sequence as long as a specified condition is true.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/takewhile.html\">takeWhile operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"take(while:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">takeWhile</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements from the input sequence that occur before the element at which the test no longer passes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8throttle_6latest9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/throttle(_:latest:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8throttle_6latest9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\">throttle(_:<wbr>latest:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.</p>\n\n<p>This operator makes sure that no two elements are emitted in less then dueTime.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/debounce.html\">debounce operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">throttle</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">latest</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"kc\">true</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Throttling duration for each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>latest</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Should latest element received in a dueTime wide time window since last element emission be emitted.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the throttle timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The throttled sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7timeout_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/timeout(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7timeout_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\">timeout(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies a timeout policy for each element in the observable sequence. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timeout.html\">timeout operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">timeout</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum duration between values before a timeout occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timeout timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with a <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO7timeoutyA2CmF\">RxError.timeout</a></code> in case of a timeout.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7timeout_5other9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_qd__AA09SchedulerD0_ptAA0c11ConvertibleD0Rd__AIQyd__AJRSlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/timeout(_:other:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7timeout_5other9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_qd__AA09SchedulerD0_ptAA0c11ConvertibleD0Rd__AIQyd__AJRSlF\">timeout(_:<wbr>other:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timeout.html\">timeout operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">timeout</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum duration between values before a timeout occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Sequence to return in case of a timeout.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timeout timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence switching to the other sequence in case of a timeout.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7toArrayAA17PrimitiveSequenceVyAA11SingleTraitOSay7ElementQzGGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/toArray()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7toArrayAA17PrimitiveSequenceVyAA11SingleTraitOSay7ElementQzGGyF\">toArray()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts an Observable into a Single that emits the whole sequence as a single array and then terminates.</p>\n\n<p>For aggregation behavior see <code>reduce</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/to.html\">toArray operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">toArray</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">]</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A Single sequence containing all the emitted elements as array.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5using_17observableFactoryAA0C0Cy7ElementQzGqd__yKc_AJqd__KctAA10DisposableRd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/using(_:observableFactory:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5using_17observableFactoryAA0C0Cy7ElementQzGqd__yKc_AJqd__KctAA10DisposableRd__lFZ\">using(_:<wbr>observableFactory:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence&rsquo;s lifetime.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/using.html\">using operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">using</span><span class=\"o\">&lt;</span><span class=\"kt\">Resource</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">resourceFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Resource</span><span class=\"p\">,</span> <span class=\"nv\">observableFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Resource</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Resource</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resourceFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function to obtain a resource object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observableFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function to obtain an observable sequence that depends on the obtained resource.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose lifetime controls the lifetime of the dependent resource object.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE6window8timeSpan5count9schedulerAA0C0CyAIy7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/window(timeSpan:count:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE6window8timeSpan5count9schedulerAA0C0CyAIy7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\">window(timeSpan:<wbr>count:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a window that is completed when either it’s full or a given amount of time has elapsed.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/window.html\">window operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">window</span><span class=\"p\">(</span><span class=\"nv\">timeSpan</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>timeSpan</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum time length of a window.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum element count of a window.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run windowing timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence of windows (instances of <code><a href=\"../Classes/Observable.html\">Observable</a></code>).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14withLatestFrom_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAA0c11ConvertibleD0Rd__r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withLatestFrom(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14withLatestFrom_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAA0c11ConvertibleD0Rd__r0_lF\">withLatestFrom(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Elements emitted by self before the second source has emitted any values will be omitted.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withLatestFrom</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"p\">,</span> <span class=\"kt\">ResultType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">ResultType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">ResultType</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable source.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each element from the self combined with the latest element from the second source, if any.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14withLatestFromyAA0C0Cy7ElementQyd__Gqd__AA0c11ConvertibleD0Rd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withLatestFrom(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14withLatestFromyAA0C0Cy7ElementQyd__Gqd__AA0c11ConvertibleD0Rd__lF\">withLatestFrom(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when <code>self</code> emits an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Elements emitted by self before the second source has emitted any values will be omitted.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withLatestFrom</span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\">Source</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Source</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Source</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable source.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining each element of the self  with the latest element from the second source, if any, using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14withUnretained_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withUnretained(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14withUnretained_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\">withUnretained(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\n\n<p>In the case the provided object cannot be retained successfully, the sequence will complete.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Be careful when using this operator in a sequence that has a buffer or replay, for example <code>share(replay: 1)</code>, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withUnretained</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"p\">,</span> <span class=\"kt\">Out</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">_</span> <span class=\"nv\">obj</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Out</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Out</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>obj</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to combine the unretained referenced on <code>obj</code> and the value of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the result of <code>resultSelector</code> being called with an unretained reference on <code>obj</code> and the values of the original sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE14withUnretainedyAA0C0Cyqd___7ElementQztGqd__Rld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/withUnretained(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE14withUnretainedyAA0C0Cyqd___7ElementQztGqd__Rld__ClF\">withUnretained(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\n\n<p>In the case the provided object cannot be retained successfully, the sequence will complete.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>Be careful when using this operator in a sequence that has a buffer or replay, for example <code>share(replay: 1)</code>, as the sharing buffer will also include the provided object, which could potentially cause a retain cycle.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">withUnretained</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">obj</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Object</span> <span class=\"p\">:</span> <span class=\"kt\">AnyObject</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>obj</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence of tuples that contains both an unretained reference on <code>obj</code> and the values of the original sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\">zip(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">([</span><span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">])</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zipyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zipyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\">zip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">]</span><span class=\"o\">&gt;</span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\">zip(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE3zip________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE3zip________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">O8</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE8asSingleAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asSingle()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE8asSingleAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\">asSingle()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The <code>asSingle</code> operator throws a <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\">RxError.noElements</a></code> or <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\">RxError.moreThanOneElement</a></code>\nif the source Observable does not emit exactly one element before successfully completing.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/first.html\">single operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asSingle</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits a single element when the source Observable has completed, or throws an exception if more (or none) of them are emitted.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE5firstAA17PrimitiveSequenceVyAA11SingleTraitO7ElementQzSgGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/first()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE5firstAA17PrimitiveSequenceVyAA11SingleTraitO7ElementQzSgGyF\">first()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The <code>first</code> operator emits only the very first item emitted by this Observable,\nor nil if this Observable completes without emitting anything.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/first.html\">single operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">first</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"p\">?</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits a single element or nil if the source observable sequence completes without emitting any items.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAE7asMaybeAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asMaybe()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAE7asMaybeAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\">asMaybe()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The <code>asMaybe</code> operator throws a <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\">RxError.moreThanOneElement</a></code>\nif the source Observable does not emit at most one element before successfully completing.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/first.html\">single operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asMaybe</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that emits a single element, completes when the source Observable has completed, or throws an exception if more of them are emitted.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code> == <code>Any</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\">combineLatest(_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">O8</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Data%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Data`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Data%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code> == <code>Data</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAA10Foundation4DataV7ElementRtzrlE6decode4type7decoderAA0C0Cyqd__Gqd__m_qd_0_tSeRd__AA0F7DecoderRd_0_r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/decode(type:decoder:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAA10Foundation4DataV7ElementRtzrlE6decode4type7decoderAA0C0Cyqd__Gqd__m_qd_0_tSeRd__AA0F7DecoderRd_0_r0_lF\">decode(type:<wbr>decoder:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Attempt to decode the emitted <code>Data</code> using a provided decoder.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If using a custom decoder, it must conform to the <code><a href=\"../Protocols/DataDecoder.html\">DataDecoder</a></code> protocol.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">decode</span><span class=\"o\">&lt;</span><span class=\"kt\">Item</span><span class=\"p\">:</span> <span class=\"kt\">Decodable</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"nv\">type</span><span class=\"p\">:</span> <span class=\"kt\">Item</span><span class=\"o\">.</span><span class=\"k\">Type</span><span class=\"p\">,</span>\n    <span class=\"nv\">decoder</span><span class=\"p\">:</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/DataDecoder.html\">DataDecoder</a></span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Item</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>type</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A <code>Decodable</code>-conforming type to attempt to decode to</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>decoder</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A capable decoder, e.g. <code>JSONDecoder</code> or <code>PropertyListDecoder</code></p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An <code><a href=\"../Classes/Observable.html\">Observable</a></code> of the decoded type</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60EventConvertible%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `EventConvertible`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60EventConvertible%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code><a href=\"../Protocols/EventConvertible.html\">EventConvertible</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePA2A16EventConvertible7ElementRpzrlE13dematerializeAA0C0CyAE_AEQZGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/dematerialize()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePA2A16EventConvertible7ElementRpzrlE13dematerializeAA0C0CyAE_AEQZGyF\">dematerialize()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convert any previously materialized Observable into it&rsquo;s original form.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/materialize-dematerialize.html\">materialize operator on reactivex.io</a>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">dematerialize</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The dematerialized observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60Equatable%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `Equatable`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60Equatable%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code>Equatable</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0CyAEGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/distinctUntilChanged()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0CyAEGyF\">distinctUntilChanged()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains only distinct contiguous elements according to equality operator.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/distinct.html\">distinct operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">distinctUntilChanged</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence only containing the distinct contiguous elements, based on equality operator, from the source sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60ObservableConvertibleType%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `ObservableConvertibleType`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60ObservableConvertibleType%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5mergeAA0C0CyAE_AEQZGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5mergeAA0C0CyAE_AEQZGyF\">merge()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5merge13maxConcurrentAA0C0CyAE_AEQZGSi_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/merge(maxConcurrent:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5merge13maxConcurrentAA0C0CyAE_AEQZGSi_tF\">merge(maxConcurrent:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">merge</span><span class=\"p\">(</span><span class=\"nv\">maxConcurrent</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>maxConcurrent</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum number of inner observable sequences being subscribed to concurrently.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the inner sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE6concatAA0C0CyAE_AEQZGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE6concatAA0C0CyAE_AEQZGyF\">concat()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">concat</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each observed inner sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `RxAbstractInteger`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5range5start5count9schedulerAA0C0CyAFGAF_AfA018ImmediateSchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/range(start:count:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5range5start5count9schedulerAA0C0CyAFGAF_AfA018ImmediateSchedulerD0_ptFZ\">range(start:<wbr>count:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to generate and send out observer messages.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/range.html\">range operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">range</span><span class=\"p\">(</span><span class=\"nv\">start</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">count</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>start</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The value of the first integer in the sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>count</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The number of sequential integers to generate.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the generator loop on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains a range of sequential integral numbers.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60ObservableConvertibleType%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `ObservableConvertibleType`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60ObservableConvertibleType%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE12switchLatestAA0C0CyAE_AEQZGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/switchLatest()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE12switchLatestAA0C0CyAE_AEQZGyF\">switchLatest()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Transforms an observable sequence of observable sequences into an observable sequence\nproducing values only from the most recent observable sequence.</p>\n\n<p>Each time a new inner observable sequence is received, unsubscribe from the\nprevious inner observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/switch.html\">switch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">switchLatest</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that at any point in time produces the elements of the most recent inner observable sequence that has been received.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `RxAbstractInteger`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code>: <code><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE8interval_9schedulerAA0C0CyAFG8Dispatch0K12TimeIntervalO_AA09SchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/interval(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE8interval_9schedulerAA0C0CyAFG8Dispatch0K12TimeIntervalO_AA09SchedulerD0_ptFZ\">interval(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/interval.html\">interval operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">interval</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period for producing the values in the resulting sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that produces a value after each period.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_6period9schedulerAA0C0CyAFG8Dispatch0L12TimeIntervalO_AOSgAA09SchedulerD0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/timer(_:period:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_6period9schedulerAA0C0CyAFG8Dispatch0L12TimeIntervalO_AOSgAA09SchedulerD0_ptFZ\">timer(_:<wbr>period:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timer.html\">timer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">timer</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time at which to produce the first value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period to produce subsequent values.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that produces a value after due time has elapsed and then each period.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code> == <code>Any</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\">zip(_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">O1</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"p\">:</span> <span class=\"kt\">ObservableType</span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">O1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">O2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">O3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">O4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">O5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">O6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">O7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">O8</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"p\">(</span><span class=\"kt\">O1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">O8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Never%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Never`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Never%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code>Element</code> == <code>Never</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypePAAs5NeverO7ElementRtzrlE13asCompletableAA17PrimitiveSequenceVyAA0H5TraitOAEGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asCompletable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypePAAs5NeverO7ElementRtzrlE13asCompletableAA17PrimitiveSequenceVyAA0H5TraitOAEGyF\">asCompletable()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asCompletable</span><span class=\"p\">()</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that completes.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ObserverType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ObserverType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ObserverType\" class=\"dashAnchor\"></a>\n\n    <a title=\"ObserverType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ObserverType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ObserverType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObserverType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Supports push-style iteration over an observable sequence.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypeP7ElementQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The type of elements in sequence that observer can observe.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypeP2onyyAA5EventOy7ElementQzGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypeP2onyyAA5EventOy7ElementQzGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Notify observer about sequence event.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event that occurred.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypePAAE02asC0AA03AnyC0Vy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypePAAE02asC0AA03AnyC0Vy7ElementQzGyF\">asObserver()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Erases type of observer and returns canonical observer.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/AnyObserver.html\">AnyObserver</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>type erased observer.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypePAAE03mapC0yAA03AnyC0Vyqd__G7ElementQzqd__KclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/mapObserver(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypePAAE03mapC0yAA03AnyC0Vyqd__G7ElementQzqd__KclF\">mapObserver(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Transforms observer of type R to type E using custom transform method.\nEach event sent to result observer is transformed and sent to <code>self</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">mapObserver</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Result</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/AnyObserver.html\">AnyObserver</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>observer that transforms events.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypePAAE6onNextyy7ElementQzF\"></a>\n                    <a name=\"//apple_ref/swift/Method/onNext(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypePAAE6onNextyy7ElementQzF\">onNext(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience method equivalent to <code>on(.next(element: Element))</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">onNext</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Next element to send to observer(s)</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypePAAE11onCompletedyyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/onCompleted()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypePAAE11onCompletedyyF\">onCompleted()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience method equivalent to <code>on(.completed)</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">onCompleted</span><span class=\"p\">()</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypePAAE7onErroryys0F0_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/onError(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypePAAE7onErroryys0F0_pF\">onError(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Convenience method equivalent to <code>on(.error(Swift.Error))</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">onError</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>error</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Swift.Error to send to observer(s)</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/PrimitiveSequenceType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PrimitiveSequenceType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/PrimitiveSequenceType\" class=\"dashAnchor\"></a>\n\n    <a title=\"PrimitiveSequenceType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      PrimitiveSequenceType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>PrimitiveSequenceType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">PrimitiveSequenceType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Observable sequences containing 0 or 1 element</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Trait\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Additional constraints</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Trait</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Sequence element type</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Element</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypeP09primitiveD0AA0cD0Vy5TraitQz7ElementQzGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/primitiveSequence\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypeP09primitiveD0AA0cD0Vy5TraitQz7ElementQzGvp\">primitiveSequence</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">primitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Never%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `CompletableTrait`, `Element` == `Never`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Never%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a></code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Never</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA06SingleI0Oqd__GAQlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/andThen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA06SingleI0Oqd__GAQlF\">andThen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">andThen</span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA05MaybeI0Oqd__GAQlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/andThen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA05MaybeI0Oqd__GAQlF\">andThen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">andThen</span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAiEGAOF\"></a>\n                    <a name=\"//apple_ref/swift/Method/andThen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAiEGAOF\">andThen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">andThen</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA10ObservableCyqd__GAOlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/andThen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA10ObservableCyqd__GAOlF\">andThen(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">andThen</span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Swift.Never%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `CompletableTrait`, `Element` == `Swift.Never`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Swift.Never%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a></code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Swift.Never</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE0H8Observera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/CompletableObserver\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE0H8Observera\">CompletableObserver</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">CompletableObserver</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/CompletableEvent.html\">CompletableEvent</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6create9subscribeAA0cD0VyAiEGAA10Disposable_pyAA0H5EventOcc_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(subscribe:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6create9subscribeAA0cD0VyAiEGAA10Disposable_pyAA0H5EventOcc_tFZ\">create(subscribe:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates an observable sequence from a specified subscribe method implementation.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"nv\">subscribe</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kd\">@escaping</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE0H8Observera\">CompletableObserver</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Implementation of the resulting observable sequence&rsquo;s <code>subscribe</code> method.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence with the specified implementation for the <code>subscribe</code> method.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribeyAA10Disposable_pyAA0H5EventOcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribeyAA10Disposable_pyAA0H5EventOcF\">subscribe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes <code>observer</code> to receive events for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/CompletableEvent.html\">CompletableEvent</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription for <code>observer</code> that can be used to cancel production of sequence elements and free resources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe4with11onCompleted0L5Error0L8DisposedAA10Disposable_pqd___yqd__cSgyqd___s0N0_ptcSgARtRld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(with:onCompleted:onError:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe4with11onCompleted0L5Error0L8DisposedAA10Disposable_pqd___yqd__cSgyqd___s0N0_ptcSgARtRld__ClF\">subscribe(with:<wbr>onCompleted:<wbr>onError:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a completion handler and an error handler for this sequence.</p>\n\n<p>Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If <code>object</code> can&rsquo;t be retained, none of the other closures will be invoked.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">with</span> <span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>object</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe11onCompleted0K5Error0K8DisposedAA10Disposable_pyycSg_ys0M0_pcSgAQtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onCompleted:onError:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe11onCompleted0K5Error0K8DisposedAA10Disposable_pyycSg_ys0M0_pcSgAQtF\">subscribe(onCompleted:<wbr>onError:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a completion handler and an error handler for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5erroryAA0cD0VyAiEGs5Error_pFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5erroryAA0cD0VyAiEGs5Error_pFZ\">error(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that terminates with an <code>error</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">throw operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that terminates with specified error.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5neverAA0cD0VyAiEGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/never()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5neverAA0cD0VyAiEGyFZ\">never()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">never operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">never</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers will never get called.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5emptyAA0cD0VyAiEGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/empty()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5emptyAA0cD0VyAiEGyFZ\">empty()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">empty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">empty</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with no elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE2do7onError05afterL00K9Completed0mN00K9Subscribe0K10Subscribed0K7DisposeAA0cD0VyAiEGys0L0_pKcSg_AXyyKcSgAYyycSgA2ZtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/do(onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE2do7onError05afterL00K9Completed0mN00K9Subscribe0K10Subscribed0K7DisposeAA0cD0VyAiEGys0L0_pKcSg_AXyyKcSgAYyycSgA2ZtF\">do(onError:<wbr>afterError:<wbr>onCompleted:<wbr>afterCompleted:<wbr>onSubscribe:<wbr>onSubscribed:<wbr>onDispose:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">do</span><span class=\"p\">`(</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribe</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDispose</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke before subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence with the side-effecting behavior applied.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOF\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOF\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">concat</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">second</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>second</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Second observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of <code>self</code>, followed by those of the second sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__STRd__AoFRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__STRd__AoFRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span>\n    <span class=\"k\">where</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">concat</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOd_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/concat(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOd_tFZ\">concat(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/concat.html\">concat operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">concat</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"o\">...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains the elements of each given sequence, in sequential order.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\">zip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the completion of all Completables from a collection into a single Completable.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>For <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code>, <code>zip</code> is an alias for <code>merge</code>.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span>\n    <span class=\"k\">where</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of Completables to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A Completable that merges the completion of all Completables.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGSayAOGFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGSayAOGFZ\">zip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the completion of all Completables from an array into a single Completable.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>For <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code>, <code>zip</code> is an alias for <code>merge</code>.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">zip</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"p\">])</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Array of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A Completable that merges the completion of all Completables.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGAOd_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGAOd_tFZ\">zip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the completion of all Completables into a single Completable.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <a href=\"http://reactivex.io/documentation/operators/merge.html\">merge operator on reactivex.io</a>\n\n</div><div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>For <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code>, <code>zip</code> is an alias for <code>merge</code>.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">zip</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sources</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"o\">...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>sources</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Collection of observable sequences to merge.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that merges the elements of the observable sequences.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE0F8Observera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/MaybeObserver\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE0F8Observera\">MaybeObserver</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">MaybeObserver</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/MaybeEvent.html\">MaybeEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pyAA0F5EventOyAMGcc_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(subscribe:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pyAA0F5EventOyAMGcc_tFZ\">create(subscribe:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates an observable sequence from a specified subscribe method implementation.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"nv\">subscribe</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kd\">@escaping</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE0F8Observera\">MaybeObserver</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Implementation of the resulting observable sequence&rsquo;s <code>subscribe</code> method.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence with the specified implementation for the <code>subscribe</code> method.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribeyAA10Disposable_pyAA0F5EventOy7ElementQzGcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribeyAA10Disposable_pyAA0F5EventOy7ElementQzGcF\">subscribe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes <code>observer</code> to receive events for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/MaybeEvent.html\">MaybeEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription for <code>observer</code> that can be used to cancel production of sequence elements and free resources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe4with9onSuccess0J5Error0J9Completed0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0L0_ptcSgyqd__cSgATtRld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(with:onSuccess:onError:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe4with9onSuccess0J5Error0J9Completed0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0L0_ptcSgyqd__cSgATtRld__ClF\">subscribe(with:<wbr>onSuccess:<wbr>onError:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a success handler, an error handler, and a completion handler for this sequence.</p>\n\n<p>Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If <code>object</code> can&rsquo;t be retained, none of the other closures will be invoked.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">with</span> <span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>object</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I9Completed0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcSgyycSgAStF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onSuccess:onError:onCompleted:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I9Completed0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcSgyycSgAStF\">subscribe(onSuccess:<wbr>onError:<wbr>onCompleted:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a success handler, an error handler, and a completion handler for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\">just(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\">just(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send the single element on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\">error(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that terminates with an <code>error</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">throw operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that terminates with specified error.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/never()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\">never()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">never operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">never</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers will never get called.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5emptyAA0cD0VyAE7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/empty()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5emptyAA0cD0VyAE7ElementQzGyFZ\">empty()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">empty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">empty</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with no elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE2do6onNext05afterJ00I5Error0kL00I9Completed0kM00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyAUKcSg_AWys0L0_pKcSgAYyyKcSgAZyycSgA_A_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/do(onNext:afterNext:onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE2do6onNext05afterJ00I5Error0kL00I9Completed0kM00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyAUKcSg_AWys0L0_pKcSgAYyyKcSgAZyycSgA_A_tF\">do(onNext:<wbr>afterNext:<wbr>onError:<wbr>afterError:<wbr>onCompleted:<wbr>afterCompleted:<wbr>onSubscribe:<wbr>onSubscribed:<wbr>onDispose:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">do</span><span class=\"p\">`(</span>\n    <span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribe</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDispose</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element after the observable has passed an onNext event along to its downstream.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke before subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence with the side-effecting behavior applied.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6filteryAA0cD0VyAE7ElementQzGSbALKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/filter(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6filteryAA0cD0VyAE7ElementQzGSbALKcF\">filter(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Filters the elements of an observable sequence based on a predicate.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/filter.html\">filter operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">filter</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each source element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains elements from the input sequence that satisfy the condition.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/map(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\">map(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new form.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/map.html\">map operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">map</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE10compactMapyAA0cD0VyAEqd__Gqd__Sg7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compactMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE10compactMapyAA0cD0VyAEqd__Gqd__Sg7ElementQzKclF\">compactMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">compactMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">?)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of filtering the transform function for each element of the source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\">flatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty7defaultAA0cD0VyAA06SingleG0O7ElementQzGAO_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ifEmpty(default:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty7defaultAA0cD0VyAA06SingleG0O7ElementQzGAO_tF\">ifEmpty(default:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defaultifempty.html\">DefaultIfEmpty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ifEmpty</span><span class=\"p\">(</span><span class=\"k\">default</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>default</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Default element to be sent if the source does not emit any elements</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence which emits default element end completes in case the original sequence is empty</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAE7ElementQzGAN_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ifEmpty(switchTo:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAE7ElementQzGAN_tF\">ifEmpty(switchTo:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements of the specified sequence or <code>other</code> sequence if the sequence is empty.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defaultifempty.html\">DefaultIfEmpty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ifEmpty</span><span class=\"p\">(</span><span class=\"n\">switchTo</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence being returned when source sequence is empty.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAA06SingleG0O7ElementQzGAP_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/ifEmpty(switchTo:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAA06SingleG0O7ElementQzGAP_tF\">ifEmpty(switchTo:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns the elements of the specified sequence or <code>other</code> sequence if the sequence is empty.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defaultifempty.html\">DefaultIfEmpty operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">ifEmpty</span><span class=\"p\">(</span><span class=\"n\">switchTo</span> <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable sequence being returned when source sequence is empty.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that contains elements from switchTo sequence if source is empty, otherwise returns source sequence elements.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchAndReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\">catchAndReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">catchAndReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchErrorJustReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\">catchErrorJustReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catchAndReturn(_:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">catchErrorJustReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create8detached8priority4workAA0cD0VyAE7ElementQzGSb_ScPSgAOyYaYbKctFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(detached:priority:work:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create8detached8priority4workAA0cD0VyAE7ElementQzGSb_ScPSgAOyYaYbKctFZ\">create(detached:<wbr>priority:<wbr>work:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></code> from the result of an asynchronous operation</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@_disfavoredOverload</span>\n<span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span>\n    <span class=\"nv\">detached</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"kc\">false</span><span class=\"p\">,</span>\n    <span class=\"nv\">priority</span><span class=\"p\">:</span> <span class=\"kt\">TaskPriority</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">work</span><span class=\"p\">:</span> <span class=\"kd\">@Sendable</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">async</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>work</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>An <code>async</code> closure expected to return an element of type <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code></p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></code> of the <code>async</code> closure&rsquo;s element type</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5value7ElementQzvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/value\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5value7ElementQzvp\">value</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method, asynchronous\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Allows awaiting the success or failure of this <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></code>\nasynchronously via Swift&rsquo;s concurrency features (<code>async/await</code>)</p>\n\n<p>A sample usage would look like so:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">do</span> <span class=\"p\">{</span>\n    <span class=\"k\">let</span> <span class=\"nv\">value</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"k\">await</span> <span class=\"n\">single</span><span class=\"o\">.</span><span class=\"n\">value</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// Handle error</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">async</span> <span class=\"k\">throws</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5value7ElementQzSgvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/value\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5value7ElementQzSgvp\">value</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method, asynchronous\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Allows awaiting the success or failure of this <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></code>\nasynchronously via Swift&rsquo;s concurrency features (<code>async/await</code>)</p>\n\n<p>If the <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></code> completes without emitting a value, it would return\na <code>nil</code> value to indicate so.</p>\n\n<p>A sample usage would look like so:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">do</span> <span class=\"p\">{</span>\n    <span class=\"k\">let</span> <span class=\"nv\">value</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"k\">await</span> <span class=\"n\">maybe</span><span class=\"o\">.</span><span class=\"n\">value</span> <span class=\"c1\">// Element?</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// Handle error</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">?</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">async</span> <span class=\"k\">throws</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Never%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `CompletableTrait`, `Element` == `Never`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60CompletableTrait%60%2C%20%60Element%60%20%3D%3D%20%60Never%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a></code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Never</code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5valueytvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/value\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5valueytvp\">value</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method, asynchronous\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Allows awaiting the success or failure of this <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code>\nasynchronously via Swift&rsquo;s concurrency features (<code>async/await</code>)</p>\n\n<p>Upon completion, a <code>Void</code> will be returned</p>\n\n<p>A sample usage would look like so:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">do</span> <span class=\"p\">{</span>\n    <span class=\"k\">let</span> <span class=\"nv\">value</span> <span class=\"o\">=</span> <span class=\"k\">try</span> <span class=\"k\">await</span> <span class=\"n\">completable</span><span class=\"o\">.</span><span class=\"n\">value</span> <span class=\"c1\">// Void</span>\n<span class=\"p\">}</span> <span class=\"k\">catch</span> <span class=\"p\">{</span>\n    <span class=\"c1\">// Handle error</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">value</span><span class=\"p\">:</span> <span class=\"kt\">Void</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">async</span> <span class=\"k\">throws</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\">zip(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\">zip(_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%603\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%603\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\">zip(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\">zip(_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%603\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%603\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%604\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%604\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%602\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%602\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%604\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%604\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%603\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%603\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%605\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%605\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%603\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%603\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%605\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%605\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%604\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%604\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%606\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%606\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%604\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%604\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%606\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%606\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%605\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%605\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%607\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%607\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%605\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%605\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%607\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%607\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%606\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%606\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%608\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%608\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%606\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%606\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%608\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%608\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%607\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60SingleTrait%607\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%609\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60MaybeTrait%609\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%607\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element` == `Any`, `Trait` == `MaybeTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%20%3D%3D%20%60Any%60%2C%20%60Trait%60%20%3D%3D%20%60MaybeTrait%607\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code> == <code>Any</code>, <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:_:_:_:_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\">zip(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/zip.html\">zip operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E1</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"o\">&gt;</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">(</span><span class=\"kt\">E1</span><span class=\"p\">,</span> <span class=\"kt\">E2</span><span class=\"p\">,</span> <span class=\"kt\">E3</span><span class=\"p\">,</span> <span class=\"kt\">E4</span><span class=\"p\">,</span> <span class=\"kt\">E5</span><span class=\"p\">,</span> <span class=\"kt\">E6</span><span class=\"p\">,</span> <span class=\"kt\">E7</span><span class=\"p\">,</span> <span class=\"kt\">E8</span><span class=\"p\">)</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%60\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Element`: `RxAbstractInteger`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Element%60%3A%20%60RxAbstractInteger%60\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></code>: <code><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_9schedulerAA0cD0Vy5TraitQzAFG8Dispatch0M12TimeIntervalO_AA09SchedulerE0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/timer(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_9schedulerAA0cD0Vy5TraitQzAFG8Dispatch0M12TimeIntervalO_AA09SchedulerE0_ptFZ\">timer(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timer.html\">timer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">timer</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time at which to produce the first value.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run timers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that produces a value after due time has elapsed and then each period.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%609\"></a>\n                <a name=\"//apple_ref/swift/Section/Available where `Trait` == `SingleTrait`\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Available%20where%20%60Trait%60%20%3D%3D%20%60SingleTrait%609\"></a>\n                  <h3 class=\"section-name\"><span>Available where <code><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></code> == <code><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></code></span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE0F8Observera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/SingleObserver\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE0F8Observera\">SingleObserver</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">SingleObserver</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pys6ResultOyAMs5Error_pGcc_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(subscribe:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pys6ResultOyAMs5Error_pGcc_tFZ\">create(subscribe:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates an observable sequence from a specified subscribe method implementation.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"nv\">subscribe</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kd\">@escaping</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE0F8Observera\">SingleObserver</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Implementation of the resulting observable sequence&rsquo;s <code>subscribe</code> method.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence with the specified implementation for the <code>subscribe</code> method.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribeyAA10Disposable_pys6ResultOy7ElementQzs5Error_pGcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribeyAA10Disposable_pys6ResultOy7ElementQzs5Error_pGcF\">subscribe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes <code>observer</code> to receive events for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription for <code>observer</code> that can be used to cancel production of sequence elements and free resources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcyycSgtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onSuccess:onError:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcyycSgtF\">subscribe(onSuccess:<wbr>onError:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a success handler, and an error handler for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"subscribe(onSuccess:onFailure:onDisposed:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">),</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe4with9onSuccess0J7Failure0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s5Error_ptcSgyqd__cSgtRld__ClF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(with:onSuccess:onFailure:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe4with9onSuccess0J7Failure0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s5Error_ptcSgyqd__cSgtRld__ClF\">subscribe(with:<wbr>onSuccess:<wbr>onFailure:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a success handler, and an error handler for this sequence.</p>\n\n<p>Also, take in an object and provide an unretained, safe to use (i.e. not implicitly unwrapped), reference to it along with the events emitted by the sequence.</p>\n<div class=\"aside aside-note\">\n    <p class=\"aside-title\">Note</p>\n    <p>If <code>object</code> can&rsquo;t be retained, none of the other closures will be invoked.</p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Object</span><span class=\"p\">:</span> <span class=\"kt\">AnyObject</span><span class=\"o\">&gt;</span><span class=\"p\">(</span>\n    <span class=\"n\">with</span> <span class=\"nv\">object</span><span class=\"p\">:</span> <span class=\"kt\">Object</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onFailure</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Object</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>object</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The object to provide an unretained reference on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onFailure</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I7Failure0I8DisposedAA10Disposable_py7ElementQzcSg_ys5Error_pcSgyycSgtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(onSuccess:onFailure:onDisposed:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I7Failure0I8DisposedAA10Disposable_py7ElementQzcSg_ys5Error_pcSgyycSgtF\">subscribe(onSuccess:<wbr>onFailure:<wbr>onDisposed:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes a success handler, and an error handler for this sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onFailure</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDisposed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onFailure</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDisposed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon any type of termination of sequence (if the sequence has\ngracefully completed, errored, or if the generation is canceled by disposing subscription).</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Subscription object used to unsubscribe from the observable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\">just(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/just(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\">just(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that contains a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/just.html\">just operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">just</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Single element in the resulting observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send the single element on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the single specified element.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/error(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\">error(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that terminates with an <code>error</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">throw operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">error</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence that terminates with specified error.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/never()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\">never()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/empty-never-throw.html\">never operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">never</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers will never get called.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE2do9onSuccess05afterJ00I5Error0kL00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyASKcSg_AUys0L0_pKcSgAWyycSgA2XtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/do(onSuccess:afterSuccess:onError:afterError:onSubscribe:onSubscribed:onDispose:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE2do9onSuccess05afterJ00I5Error0kL00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyASKcSg_AUys0L0_pKcSgAWyycSgA2XtF\">do(onSuccess:<wbr>afterSuccess:<wbr>onError:<wbr>afterError:<wbr>onSubscribe:<wbr>onSubscribed:<wbr>onDispose:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">do</span><span class=\"p\">`(</span>\n    <span class=\"nv\">onSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterSuccess</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">afterError</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribe</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onSubscribed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span>\n    <span class=\"nv\">onDispose</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span>\n<span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterSuccess</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element after the observable has passed an onNext event along to its downstream.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterError</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after errored termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke before subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence with the side-effecting behavior applied.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6filteryAA0cD0VyAA05MaybeG0O7ElementQzGSbANKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/filter(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6filteryAA0cD0VyAA05MaybeG0O7ElementQzGSbANKcF\">filter(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Filters the elements of an observable sequence based on a predicate.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/filter.html\">filter operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">filter</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">predicate</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Bool</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>predicate</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A function to test each source element for a condition.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence that contains elements from the input sequence that satisfy the condition.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/map(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\">map(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into a new form.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/map.html\">map operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">map</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the transform function on each element of source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE10compactMapyAA0cD0VyAA05MaybeG0Oqd__Gqd__Sg7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compactMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE10compactMapyAA0cD0VyAA05MaybeG0Oqd__Gqd__Sg7ElementQzKclF\">compactMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">compactMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">transform</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">?)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>transform</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each source element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of filtering the transform function for each element of the source.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMap(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\">flatMap(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMap</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE12flatMapMaybeyAA0cD0VyAA0jG0Oqd__GAM7ElementQzKclF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapMaybe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE12flatMapMaybeyAA0cD0VyAA0jG0Oqd__GAM7ElementQzKclF\">flatMapMaybe(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">flatMapMaybe</span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Result</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE18flatMapCompletableyAA0cD0VyAA0jG0Os5NeverOGAO7ElementQzKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/flatMapCompletable(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE18flatMapCompletableyAA0cD0VyAA0jG0Os5NeverOGAO7ElementQzKcF\">flatMapCompletable(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/flatmap.html\">flatMap operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">flatMapCompletable</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">selector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>selector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A transform function to apply to each element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose elements are the result of invoking the one-to-many transform function on each element of the input sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_14resultSelectorAA0cD0VyAEqd_0_Gqd___qd_0_Say7ElementQzGKctSlRd__AKyAeNGAMRtd__r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_14resultSelectorAA0cD0VyAEqd_0_Gqd___qd_0_Say7ElementQzGKctSlRd__AKyAeNGAMRtd__r0_lFZ\">zip(_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"kt\">Result</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">([</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">])</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Result</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\">Result</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Collection</span> <span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke for each series of elements at corresponding indexes in the sources.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zipyAA0cD0VyAESay7ElementQzGGqd__SlRd__AJyAeLGAKRtd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/zip(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zipyAA0cD0VyAESay7ElementQzGGqd__SlRd__AJyAeLGAKRtd__lFZ\">zip(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence all of the observable sequences have produced an element at a corresponding index.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">zip</span><span class=\"o\">&lt;</span><span class=\"kt\">Collection</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">collection</span><span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">]</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Collection</span> <span class=\"p\">:</span> <span class=\"kt\">Collection</span><span class=\"p\">,</span> <span class=\"kt\">Collection</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span> <span class=\"o\">==</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></span><span class=\"p\">,</span> <span class=\"k\">Self</span><span class=\"o\">.</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchAndReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\">catchAndReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">catchAndReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchErrorJustReturn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\">catchErrorJustReturn(_:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with a single element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catchAndReturn(_:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">catchErrorJustReturn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">element</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\">Trait</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>element</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Last element in an observable sequence in case error occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the <code>element</code> in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7asMaybeAA0cD0VyAA0iG0O7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asMaybe()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7asMaybeAA0cD0VyAA0iG0O7ElementQzGyF\">asMaybe()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts <code>self</code> to <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></code> trait.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asMaybe</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\">Element</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Maybe trait that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE13asCompletableAA0cD0VyAA0iG0Os5NeverOGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asCompletable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE13asCompletableAA0cD0VyAA0iG0Os5NeverOGyF\">asCompletable()</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts <code>self</code> to <code><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code> trait, ignoring its emitted value if\none exists.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asCompletable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Completable trait that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/ReactiveCompatible.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ReactiveCompatible Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/ReactiveCompatible\" class=\"dashAnchor\"></a>\n\n    <a title=\"ReactiveCompatible Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      ReactiveCompatible Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>ReactiveCompatible</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ReactiveCompatible</span></code></pre>\n\n                </div>\n              </div>\n            <p>A type that has reactive extensions.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatibleP0C4BaseQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/ReactiveBase\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatibleP0C4BaseQa\">ReactiveBase</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Extended type</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">ReactiveBase</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGmvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/rx\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGmvpZ\">rx</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Reactive extensions.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">rx</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Reactive.html\">Reactive</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatibleP0C4BaseQa\">ReactiveBase</a></span><span class=\"o\">&gt;.</span><span class=\"k\">Type</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/rx\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGvp\">rx</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Reactive extensions.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">rx</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Reactive.html\">Reactive</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatibleP0C4BaseQa\">ReactiveBase</a></span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGmvpZ\"></a>\n                    <a name=\"//apple_ref/swift/Variable/rx\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGmvpZ\">rx</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Reactive extensions.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"k\">var</span> <span class=\"nv\">rx</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Reactive.html\">Reactive</a></span><span class=\"o\">&lt;</span><span class=\"k\">Self</span><span class=\"o\">&gt;.</span><span class=\"k\">Type</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/rx\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGvp\">rx</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Extension method\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Reactive extensions.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">rx</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/Reactive.html\">Reactive</a></span><span class=\"o\">&lt;</span><span class=\"k\">Self</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"k\">set</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/SchedulerType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SchedulerType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/SchedulerType\" class=\"dashAnchor\"></a>\n\n    <a title=\"SchedulerType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SchedulerType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SchedulerType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">SchedulerType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that schedules units of work.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/now\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\">now</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"k\">var</span> <span class=\"nv\">now</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Current time.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13SchedulerTypeP16scheduleRelative_7dueTime6actionAA10Disposable_pqd___8Dispatch0kH8IntervalOAaG_pqd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/scheduleRelative(_:dueTime:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13SchedulerTypeP16scheduleRelative_7dueTime6actionAA10Disposable_pqd___8Dispatch0kH8IntervalOAaG_pqd__ctlF\">scheduleRelative(_:<wbr>dueTime:<wbr>action:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules an action to be executed.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">scheduleRelative</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time after which to execute the action.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13SchedulerTypeP16schedulePeriodic_10startAfter6period6actionAA10Disposable_pqd___8Dispatch0L12TimeIntervalOAKqd__qd__ctlF\"></a>\n                    <a name=\"//apple_ref/swift/Method/schedulePeriodic(_:startAfter:period:action:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13SchedulerTypeP16schedulePeriodic_10startAfter6period6actionAA10Disposable_pqd___8Dispatch0L12TimeIntervalOAKqd__qd__ctlF\">schedulePeriodic(_:<wbr>startAfter:<wbr>period:<wbr>action:<wbr>)</a>\n                    </code>\n                      <span class=\"declaration-note\">\n                        Default implementation\n                      </span>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Schedules a periodic piece of work.</p>\n\n                      </div>\n                      <h4>Default Implementation</h4>\n                      <div class=\"default_impl abstract\">\n                        <p>Periodic task will be emulated using recursive scheduling.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">schedulePeriodic</span><span class=\"o\">&lt;</span><span class=\"kt\">StateType</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">state</span><span class=\"p\">:</span> <span class=\"kt\">StateType</span><span class=\"p\">,</span> <span class=\"nv\">startAfter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">period</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">action</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">StateType</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>state</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>State passed to the action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>startAfter</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period after which initial work should be run.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>period</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Period for running the work periodically.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>action</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to be executed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The disposable object used to cancel the scheduled action (best effort).</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/SubjectType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>SubjectType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/SubjectType\" class=\"dashAnchor\"></a>\n\n    <a title=\"SubjectType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      SubjectType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>SubjectType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">SubjectType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SubjectTypeP8ObserverQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Observer\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SubjectTypeP8ObserverQa\">Observer</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The type of the observer that represents this subject.</p>\n\n<p>Usually this type is type of subject itself, but it doesn&rsquo;t have to be.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SubjectTypeP10asObserver0F0QzyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SubjectTypeP10asObserver0F0QzyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns observer interface for subject.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/SubjectType.html#/s:7RxSwift11SubjectTypeP8ObserverQa\">Observer</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observer interface for subject.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Protocols/VirtualTimeConverterType.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>VirtualTimeConverterType Protocol Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Protocol/VirtualTimeConverterType\" class=\"dashAnchor\"></a>\n\n    <a title=\"VirtualTimeConverterType Protocol Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      VirtualTimeConverterType Protocol Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>VirtualTimeConverterType</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">VirtualTimeConverterType</span></code></pre>\n\n                </div>\n              </div>\n            <p>Parametrization for virtual time used by <code><a href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a></code>s.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTimeUnit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Virtual time unit used that represents ticks of virtual clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">VirtualTimeUnit</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTimeIntervalUnit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\">VirtualTimeIntervalUnit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Virtual time unit used to represent differences of virtual times.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">associatedtype</span> <span class=\"kt\">VirtualTimeIntervalUnit</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD0y10Foundation4DateV0cD4UnitQzF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertFromVirtualTime(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD0y10Foundation4DateV0cD4UnitQzF\">convertFromVirtualTime(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts virtual time to real time.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">convertFromVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>virtualTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Virtual time to convert to <code>Date</code>.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p><code>Date</code> corresponding to virtual time.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD0y0cD4UnitQz10Foundation4DateVF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertToVirtualTime(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD0y0cD4UnitQz10Foundation4DateVF\">convertToVirtualTime(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts real time to virtual time.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">convertToVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>time</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p><code>Date</code> to convert to virtual time.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Virtual time corresponding to <code>Date</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD8IntervalySd0cdI4UnitQzF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertFromVirtualTimeInterval(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD8IntervalySd0cdI4UnitQzF\">convertFromVirtualTimeInterval(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts from virtual time interval to <code>TimeInterval</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">convertFromVirtualTimeInterval</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualTimeInterval</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\">VirtualTimeIntervalUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>virtualTimeInterval</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Virtual time interval to convert to <code>TimeInterval</code>.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p><code>TimeInterval</code> corresponding to virtual time interval.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD8Intervaly0cdI4UnitQzSdF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertToVirtualTimeInterval(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD8Intervaly0cdI4UnitQzSdF\">convertToVirtualTimeInterval(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts from <code>TimeInterval</code> to virtual time interval.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">convertToVirtualTimeInterval</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">timeInterval</span><span class=\"p\">:</span> <span class=\"kt\">TimeInterval</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\">VirtualTimeIntervalUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>timeInterval</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p><code>TimeInterval</code> to convert to virtual time interval.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Virtual time interval corresponding to time interval.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP06offsetcD0_0G00cD4UnitQzAG_0cd8IntervalH0QztF\"></a>\n                    <a name=\"//apple_ref/swift/Method/offsetVirtualTime(_:offset:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP06offsetcD0_0G00cD4UnitQzAG_0cd8IntervalH0QztF\">offsetVirtualTime(_:<wbr>offset:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Offsets virtual time by virtual time interval.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">offsetVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span><span class=\"p\">,</span> <span class=\"nv\">offset</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\">VirtualTimeIntervalUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>time</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Virtual time.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>offset</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Virtual time interval.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Time corresponding to time offsetted by virtual time interval.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP07comparecD0yAA0cD10ComparisonO0cD4UnitQz_AHtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compareVirtualTime(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP07comparecD0yAA0cD10ComparisonO0cD4UnitQz_AHtF\">compareVirtualTime(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This is additional abstraction because <code>Date</code> is unfortunately not comparable.\nExtending <code>Date</code> with <code>Comparable</code> would be too risky because of possible collisions with other libraries.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">compareVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\">VirtualTimeUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Disposables.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Disposables  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Disposables\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Disposables  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      RxSwift/Disposables  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Disposables</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17BooleanDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/BooleanDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17BooleanDisposableC\">BooleanDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource that can be checked for disposal status.</p>\n\n                        <a href=\"../Classes/BooleanDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">BooleanDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19CompositeDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/CompositeDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19CompositeDisposableC\">CompositeDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a group of disposable resources that are disposed together.</p>\n\n                        <a href=\"../Classes/CompositeDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">CompositeDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Disposables\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV\">Disposables</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A collection of utility methods for common disposable operations.</p>\n\n                        <a href=\"../Structs/Disposables.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Disposables</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposeBagC\"></a>\n                    <a name=\"//apple_ref/swift/Class/DisposeBag\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposeBagC\">DisposeBag</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Thread safe bag that disposes added disposables on <code>deinit</code>.</p>\n\n<p>This returns ARC (RAII) like resource management to <code>RxSwift</code>.</p>\n\n<p>In case contained disposables need to be disposed, just put a different dispose bag\nor create a new one in its place.</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">self</span><span class=\"o\">.</span><span class=\"n\">existingDisposeBag</span> <span class=\"o\">=</span> <span class=\"kt\">DisposeBag</span><span class=\"p\">()</span>\n</code></pre>\n\n<p>In case explicit disposal is necessary, there is also <code><a href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a></code>.</p>\n\n                        <a href=\"../Classes/DisposeBag.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">DisposeBag</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposeBaseC\"></a>\n                    <a name=\"//apple_ref/swift/Class/DisposeBase\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Base class for all disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">DisposeBase</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift18RefCountDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/RefCountDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift18RefCountDisposableC\">RefCountDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed.</p>\n\n                        <a href=\"../Classes/RefCountDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">RefCountDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19ScheduledDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ScheduledDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19ScheduledDisposableC\">ScheduledDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.</p>\n\n                        <a href=\"../Classes/ScheduledDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">ScheduledDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift16SerialDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/SerialDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift16SerialDisposableC\">SerialDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.</p>\n\n                        <a href=\"../Classes/SerialDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">SerialDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift26SingleAssignmentDisposableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/SingleAssignmentDisposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift26SingleAssignmentDisposableC\">SingleAssignmentDisposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource which only allows a single assignment of its underlying disposable resource.</p>\n\n<p>If an underlying disposable resource has already been set, future attempts to set the underlying disposable resource will throw an exception.</p>\n\n                        <a href=\"../Classes/SingleAssignmentDisposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">SingleAssignmentDisposable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a></span><span class=\"p\">,</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Schedulers.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Schedulers  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Schedulers\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Schedulers  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      RxSwift/Schedulers  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Schedulers</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32ConcurrentDispatchQueueSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ConcurrentDispatchQueueScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC\">ConcurrentDispatchQueueScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. You can also pass a serial dispatch queue, it shouldn&rsquo;t cause any problems.</p>\n\n<p>This scheduler is suitable when some work needs to be performed in background.</p>\n\n                        <a href=\"../Classes/ConcurrentDispatchQueueScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ConcurrentDispatchQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23ConcurrentMainSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ConcurrentMainScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23ConcurrentMainSchedulerC\">ConcurrentMainScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Abstracts work that needs to be performed on <code>MainThread</code>. In case <code>schedule</code> methods are called from main thread, it will perform action immediately without scheduling.</p>\n\n<p>This scheduler is optimized for <code>subscribeOn</code> operator. If you want to observe observable sequence elements on main thread using <code>observeOn</code> operator,\n<code><a href=\"../Classes/MainScheduler.html\">MainScheduler</a></code> is more suitable for that purpose.</p>\n\n                        <a href=\"../Classes/ConcurrentMainScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">ConcurrentMainScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22CurrentThreadSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/CurrentThreadScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22CurrentThreadSchedulerC\">CurrentThreadScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that schedules units of work on the current thread.</p>\n\n<p>This is the default scheduler for operators that generate elements.</p>\n\n<p>This scheduler is also sometimes called <code>trampoline scheduler</code>.</p>\n\n                        <a href=\"../Classes/CurrentThreadScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">CurrentThreadScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift19HistoricalSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/HistoricalScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift19HistoricalSchedulerC\">HistoricalScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Provides a virtual time scheduler that uses <code>Date</code> for absolute time and <code>TimeInterval</code> for relative time.</p>\n\n                        <a href=\"../Classes/HistoricalScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">HistoricalScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a></span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/HistoricalSchedulerTimeConverter\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV\">HistoricalSchedulerTimeConverter</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts historical virtual time into real time.</p>\n\n<p>Since historical virtual time is also measured in <code>Date</code>, this converter is identity function.</p>\n\n                        <a href=\"../Structs/HistoricalSchedulerTimeConverter.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">HistoricalSchedulerTimeConverter</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13MainSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/MainScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13MainSchedulerC\">MainScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Abstracts work that needs to be performed on <code>DispatchQueue.main</code>. In case <code>schedule</code> methods are called from <code>DispatchQueue.main</code>, it will perform action immediately without scheduling.</p>\n\n<p>This scheduler is usually used to perform UI work.</p>\n\n<p>Main scheduler is a specialization of <code><a href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a></code>.</p>\n\n<p>This scheduler is optimized for <code>observeOn</code> operator. To ensure observable sequence is subscribed on main thread using <code>subscribeOn</code>\noperator please use <code><a href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a></code> because it is more optimized for that purpose.</p>\n\n                        <a href=\"../Classes/MainScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">MainScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift23OperationQueueSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/OperationQueueScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift23OperationQueueSchedulerC\">OperationQueueScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Abstracts the work that needs to be performed on a specific <code>NSOperationQueue</code>.</p>\n\n<p>This scheduler is suitable for cases when there is some bigger chunk of work that needs to be performed in background and you want to fine tune concurrent processing using <code>maxConcurrentOperationCount</code>.</p>\n\n                        <a href=\"../Classes/OperationQueueScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">OperationQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift28SerialDispatchQueueSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/SerialDispatchQueueScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift28SerialDispatchQueueSchedulerC\">SerialDispatchQueueScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. It will make sure\nthat even if concurrent dispatch queue is passed, it&rsquo;s transformed into a serial one.</p>\n\n<p>It is extremely important that this scheduler is serial, because\ncertain operator perform optimizations that rely on that property.</p>\n\n<p>Because there is no way of detecting is passed dispatch queue serial or\nconcurrent, for every queue that is being passed, worst case (concurrent)\nwill be assumed, and internal serial proxy dispatch queue will be created.</p>\n\n<p>This scheduler can also be used with internal serial queue alone.</p>\n\n<p>In case some customization need to be made on it before usage,\ninternal serial queue can be customized using <code>serialQueueConfiguration</code>\ncallback.</p>\n\n                        <a href=\"../Classes/SerialDispatchQueueScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">SerialDispatchQueueScheduler</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift24VirtualTimeConverterTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/VirtualTimeConverterType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift24VirtualTimeConverterTypeP\">VirtualTimeConverterType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Parametrization for virtual time used by <code><a href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a></code>s.</p>\n\n                        <a href=\"../Protocols/VirtualTimeConverterType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">VirtualTimeConverterType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift20VirtualTimeSchedulerC\"></a>\n                    <a name=\"//apple_ref/swift/Class/VirtualTimeScheduler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift20VirtualTimeSchedulerC\">VirtualTimeScheduler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Base class for virtual time schedulers using a priority queue for scheduled items.</p>\n\n                        <a href=\"../Classes/VirtualTimeScheduler.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">open</span> <span class=\"kd\">class</span> <span class=\"kt\">VirtualTimeScheduler</span><span class=\"o\">&lt;</span><span class=\"kt\">Converter</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a></span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">VirtualTimeScheduler</span><span class=\"p\">:</span> <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Subjects.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Subjects  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Subjects\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Subjects  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      RxSwift/Subjects  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Subjects</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12AsyncSubjectC\"></a>\n                    <a name=\"//apple_ref/swift/Class/AsyncSubject\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12AsyncSubjectC\">AsyncSubject</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>An AsyncSubject emits the last value (and only the last value) emitted by the source Observable,\nand only after that source Observable completes.</p>\n\n<p>(If the source Observable does not emit any values, the AsyncSubject also completes without emitting any values.)</p>\n\n                        <a href=\"../Classes/AsyncSubject.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">AsyncSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift15BehaviorSubjectC\"></a>\n                    <a name=\"//apple_ref/swift/Class/BehaviorSubject\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift15BehaviorSubjectC\">BehaviorSubject</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a value that changes over time.</p>\n\n<p>Observers can subscribe to the subject to receive the last (or initial) value and all subsequent notifications.</p>\n\n                        <a href=\"../Classes/BehaviorSubject.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">BehaviorSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14PublishSubjectC\"></a>\n                    <a name=\"//apple_ref/swift/Class/PublishSubject\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14PublishSubjectC\">PublishSubject</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n<p>Each notification is broadcasted to all subscribed observers.</p>\n\n                        <a href=\"../Classes/PublishSubject.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">final</span> <span class=\"kd\">class</span> <span class=\"kt\">PublishSubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\">SynchronizedUnsubscribeType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13ReplaySubjectC\"></a>\n                    <a name=\"//apple_ref/swift/Class/ReplaySubject\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13ReplaySubjectC\">ReplaySubject</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n<p>Each notification is broadcasted to all subscribed and future observers, subject to buffer trimming policies.</p>\n\n                        <a href=\"../Classes/ReplaySubject.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">ReplaySubject</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">:</span>\n    <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/SubjectType.html\">SubjectType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span><span class=\"p\">,</span>\n    <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11SubjectTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/SubjectType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11SubjectTypeP\">SubjectType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that is both an observable sequence as well as an observer.</p>\n\n                        <a href=\"../Protocols/SubjectType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">SubjectType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Traits/Infallible.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Traits/Infallible  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../../js/jquery.min.js\" defer></script>\n    <script src=\"../../js/jazzy.js\" defer></script>\n    \n    <script src=\"../../js/lunr.min.js\" defer></script>\n    <script src=\"../../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Traits/Infallible\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Traits/Infallible  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../../img/carat.png\" alt=\"\"/>\n      RxSwift/Traits/Infallible  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Traits/Infallible</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Infallible\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV\">Infallible</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p><code>Infallible</code> is an <code><a href=\"../../Classes/Observable.html\">Observable</a></code>-like push-style interface\nwhich is guaranteed to not emit error events.</p>\n\n<p>Unlike <code>SharedSequence</code>, it does not share its resources or\nreplay its events, but acts as a standard <code><a href=\"../../Classes/Observable.html\">Observable</a></code>.</p>\n\n                        <a href=\"../../Structs/Infallible.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../../Protocols/InfallibleType.html\">InfallibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Traits/PrimitiveSequence.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Traits/PrimitiveSequence  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../../js/jquery.min.js\" defer></script>\n    <script src=\"../../js/jazzy.js\" defer></script>\n    \n    <script src=\"../../js/lunr.min.js\" defer></script>\n    <script src=\"../../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Traits/PrimitiveSequence\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Traits/PrimitiveSequence  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../../img/carat.png\" alt=\"\"/>\n      RxSwift/Traits/PrimitiveSequence  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Traits/PrimitiveSequence</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11Completablea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Completable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11Completablea\">Completable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 0 elements.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Completable</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Never</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5Maybea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Maybe\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5Maybea\">Maybe</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 0 or 1 element.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Maybe</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/PrimitiveSequence\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV\">PrimitiveSequence</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Observable sequences containing 0 or 1 element.</p>\n\n                        <a href=\"../../Structs/PrimitiveSequence.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a></span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6Singlea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Single\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6Singlea\">Single</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 1 element.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Single</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/RxSwift/Traits.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift/Traits  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift/Traits\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift/Traits  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.1.0-beta.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <p class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </p>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" />\n      RxSwift/Traits  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits.html\">RxSwift/Traits</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SingleEvent.html\">SingleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeUntilBehavior.html\">TakeUntilBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Structs.html\">Other Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Resources.html\">Resources</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift/Traits</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11Completablea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Completable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11Completablea\">Completable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 0 elements.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Completable</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Never</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5Maybea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Maybe\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5Maybea\">Maybe</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 0 or 1 element.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Maybe</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/PrimitiveSequence\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV\">PrimitiveSequence</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Observable sequences containing 0 or 1 element.</p>\n\n                        <a href=\"../Structs/PrimitiveSequence.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a></span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6Singlea\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Single\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6Singlea\">Single</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence containing 1 element.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Single</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a></span><span class=\"o\">&lt;</span><span class=\"kt\"><a href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a></span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2020 <a class=\"link\" href=\"https://github.com/ReactiveX/RxSwift\" target=\"_blank\" rel=\"external\">Krunoslav Zaher</a>. All rights reserved. (Last updated: 2020-07-25)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external\">jazzy ♪♫ v0.13.5</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external\">Realm</a> project.</p>\n    </section>\n  </body>\n</div>\n</html>\n"
  },
  {
    "path": "docs/RxSwift.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Section/RxSwift\" class=\"dashAnchor\"></a>\n\n    <a title=\"RxSwift  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"img/carat.png\" alt=\"\"/>\n      RxSwift  Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>RxSwift</h1>\n            \n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/AnyObserver\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverV\">AnyObserver</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>A type-erased <code><a href=\"Protocols/ObserverType.html\">ObserverType</a></code>.</p>\n\n<p>Forwards operations to an arbitrary underlying observer with the same <code>Element</code> type, hiding the specifics of the underlying observer type.</p>\n\n                        <a href=\"Structs/AnyObserver.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AnyObserver</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6BinderV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Binder\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6BinderV\">Binder</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Observer that enforces interface binding rules:</p>\n\n<ul>\n<li>can&rsquo;t bind errors (in debug builds binding of errors causes <code>fatalError</code> in release builds errors are being logged)</li>\n<li>ensures binding is performed on a specific scheduler</li>\n</ul>\n\n<p><code>Binder</code> doesn&rsquo;t retain target and in case target is released, element isn&rsquo;t bound.</p>\n\n<p>By default it binds elements on main scheduler.</p>\n\n                        <a href=\"Structs/Binder.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Binder</span><span class=\"o\">&lt;</span><span class=\"kt\">Value</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10CancelableP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/Cancelable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10CancelableP\">Cancelable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents disposable resource with state tracking.</p>\n\n                        <a href=\"Protocols/Cancelable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Cancelable</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ConnectableObservableTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ConnectableObservableType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ConnectableObservableTypeP\">ConnectableObservableType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.</p>\n\n                        <a href=\"Protocols/ConnectableObservableType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ConnectableObservableType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10DisposableP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/Disposable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10DisposableP\">Disposable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a disposable resource.</p>\n\n                        <a href=\"Protocols/Disposable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">Disposable</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift5EventO\"></a>\n                    <a name=\"//apple_ref/swift/Enum/Event\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift5EventO\">Event</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a sequence event.</p>\n\n<p>Sequence grammar:\n<strong>next* (error | completed)</strong></p>\n\n                        <a href=\"Enums/Event.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@frozen</span>\n<span class=\"kd\">public</span> <span class=\"kd\">enum</span> <span class=\"kt\">Event</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">Event</span><span class=\"p\">:</span> <span class=\"kt\">CustomDebugStringConvertible</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">Event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/EventConvertible.html\">EventConvertible</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17GroupedObservableV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/GroupedObservable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17GroupedObservableV\">GroupedObservable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an observable sequence of elements that share a common key.\n<code>GroupedObservable</code> is typically created by the <code>groupBy</code> operator.\nEach <code>GroupedObservable</code> instance represents a collection of elements\nthat are grouped by a specific key.</p>\n\n<p>Example usage:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">observable</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"s\">\"Apple\"</span><span class=\"p\">,</span> <span class=\"s\">\"Banana\"</span><span class=\"p\">,</span> <span class=\"s\">\"Apricot\"</span><span class=\"p\">,</span> <span class=\"s\">\"Blueberry\"</span><span class=\"p\">,</span> <span class=\"s\">\"Avocado\"</span><span class=\"p\">)</span>\n\n<span class=\"k\">let</span> <span class=\"nv\">grouped</span> <span class=\"o\">=</span> <span class=\"n\">observable</span><span class=\"o\">.</span><span class=\"n\">groupBy</span> <span class=\"p\">{</span> <span class=\"n\">fruit</span> <span class=\"k\">in</span>\n    <span class=\"n\">fruit</span><span class=\"o\">.</span><span class=\"n\">first</span><span class=\"o\">!</span> <span class=\"c1\">// Grouping by the first letter of each fruit</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">grouped</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">group</span> <span class=\"k\">in</span>\n    <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Group: </span><span class=\"se\">\\(</span><span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">key</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n    <span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">event</span> <span class=\"k\">in</span>\n        <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"n\">event</span><span class=\"p\">)</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n<p>This will print:</p>\n<pre class=\"highlight swift\"><code><span class=\"kt\">Group</span><span class=\"p\">:</span> <span class=\"kt\">A</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apple</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apricot</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Avocado</span><span class=\"p\">)</span>\n<span class=\"kt\">Group</span><span class=\"p\">:</span> <span class=\"kt\">B</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Banana</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Blueberry</span><span class=\"p\">)</span>\n</code></pre>\n\n                        <a href=\"Structs/GroupedObservable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">GroupedObservable</span><span class=\"o\">&lt;</span><span class=\"kt\">Key</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift22ImmediateSchedulerTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ImmediateSchedulerType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift22ImmediateSchedulerTypeP\">ImmediateSchedulerType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that immediately schedules units of work.</p>\n\n                        <a href=\"Protocols/ImmediateSchedulerType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ImmediateSchedulerType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10ObservableC\"></a>\n                    <a name=\"//apple_ref/swift/Class/Observable\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10ObservableC\">Observable</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                        <a href=\"Classes/Observable.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">class</span> <span class=\"kt\">Observable</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ObservableConvertibleType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypeP\">ObservableConvertibleType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Type that can be converted to observable sequence (<code><a href=\"Classes/Observable.html\">Observable&lt;Element&gt;</a></code>).</p>\n\n                        <a href=\"Protocols/ObservableConvertibleType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObservableConvertibleType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift14ObservableTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ObservableType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift14ObservableTypeP\">ObservableType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents a push style sequence.</p>\n\n                        <a href=\"Protocols/ObservableType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObservableType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/ObserverType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypeP\">ObserverType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Supports push-style iteration over an observable sequence.</p>\n\n                        <a href=\"Protocols/ObserverType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">ObserverType</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift8ReactiveV\"></a>\n                    <a name=\"//apple_ref/swift/Struct/Reactive\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift8ReactiveV\">Reactive</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Use <code>Reactive</code> proxy as customization point for constrained protocol extensions.</p>\n\n<p>General pattern would be:</p>\n\n<p>// 1. Extend Reactive protocol with constrain on Base\n// Read as: Reactive Extension where Base is a SomeType\nextension Reactive where Base: SomeType {\n// 2. Put any specific reactive extension for SomeType here\n}</p>\n\n<p>With this approach we can have more specialized methods and properties using\n<code>Base</code> and not just specialized on common base type.</p>\n\n<p><code><a href=\"Structs/Binder.html\">Binder</a></code>s are also automatically synthesized using <code>@dynamicMemberLookup</code> for writable reference properties of the reactive base.</p>\n\n                        <a href=\"Structs/Reactive.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@dynamicMemberLookup</span>\n<span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Reactive</span><span class=\"o\">&lt;</span><span class=\"kt\">Base</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift13SchedulerTypeP\"></a>\n                    <a name=\"//apple_ref/swift/Protocol/SchedulerType\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift13SchedulerTypeP\">SchedulerType</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Represents an object that schedules units of work.</p>\n\n                        <a href=\"Protocols/SchedulerType.html\" class=\"slightly-smaller\">See more</a>\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">protocol</span> <span class=\"kt\">SchedulerType</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/AnyObserver.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>AnyObserver Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/AnyObserver\" class=\"dashAnchor\"></a>\n\n    <a title=\"AnyObserver Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      AnyObserver Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>AnyObserver</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">AnyObserver</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>A type-erased <code><a href=\"../Protocols/ObserverType.html\">ObserverType</a></code>.</p>\n\n<p>Forwards operations to an arbitrary underlying observer with the same <code>Element</code> type, hiding the specifics of the underlying observer type.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverV12EventHandlera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/EventHandler\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverV12EventHandlera\">EventHandler</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Anonymous event handler type.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">EventHandler</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverV12eventHandlerACyxGyAA5EventOyxGc_tcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(eventHandler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverV12eventHandlerACyxGyAA5EventOyxGc_tcfc\">init(eventHandler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Construct an instance whose <code>on(event)</code> calls <code>eventHandler(event)</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">eventHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"kt\"><a href=\"../Structs/AnyObserver.html#/s:7RxSwift11AnyObserverV12EventHandlera\">EventHandler</a></span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>eventHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event handler that observes sequences events.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverVyACyxGqd__c7ElementQyd__RszAA0D4TypeRd__lufc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverVyACyxGqd__c7ElementQyd__RszAA0D4TypeRd__lufc\">init(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Construct an instance whose <code>on(event)</code> calls <code>observer.on(event)</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">init</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observer that receives sequence events.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverV2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverV2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Send <code>event</code> to this observer.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>event</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Event instance.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11AnyObserverV02asD0ACyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11AnyObserverV02asD0ACyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Erases type of observer and returns canonical observer.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">AnyObserver</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>type erased observer.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/Binder.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Binder Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Binder\" class=\"dashAnchor\"></a>\n\n    <a title=\"Binder Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Binder Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Binder</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Binder</span><span class=\"o\">&lt;</span><span class=\"kt\">Value</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Observer that enforces interface binding rules:</p>\n\n<ul>\n<li>can&rsquo;t bind errors (in debug builds binding of errors causes <code>fatalError</code> in release builds errors are being logged)</li>\n<li>ensures binding is performed on a specific scheduler</li>\n</ul>\n\n<p><code>Binder</code> doesn&rsquo;t retain target and in case target is released, element isn&rsquo;t bound.</p>\n\n<p>By default it binds elements on main scheduler.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift12ObserverTypeP7ElementQa\"></a>\n                    <a name=\"//apple_ref/swift/Alias/Element\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift12ObserverTypeP7ElementQa\">Element</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">Element</span> <span class=\"o\">=</span> <span class=\"kt\">Value</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6BinderV_9scheduler7bindingACyxGqd___AA22ImmediateSchedulerType_pyqd___xtctcRld__Clufc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:scheduler:binding:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6BinderV_9scheduler7bindingACyxGqd___AA22ImmediateSchedulerType_pyqd___xtctcRld__Clufc\">init(_:<wbr>scheduler:<wbr>binding:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes <code>Binder</code></p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">init</span><span class=\"o\">&lt;</span><span class=\"kt\">Target</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">target</span><span class=\"p\">:</span> <span class=\"kt\">Target</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/MainScheduler.html\">MainScheduler</a></span><span class=\"p\">(),</span> <span class=\"nv\">binding</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Target</span><span class=\"p\">,</span> <span class=\"kt\">Value</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"k\">where</span> <span class=\"kt\">Target</span> <span class=\"p\">:</span> <span class=\"kt\">AnyObject</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>target</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Target object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler used to bind the events.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>binding</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Binding logic.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6BinderV2onyyAA5EventOyxGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/on(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6BinderV2onyyAA5EventOyxGF\">on(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Binds next element to owner view as described in <code>binding</code>.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">on</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">event</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Enums/Event.html\">Event</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Value</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift6BinderV10asObserverAA03AnyE0VyxGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObserver()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift6BinderV10asObserverAA03AnyE0VyxGyF\">asObserver()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Erases type of observer.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObserver</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/AnyObserver.html\">AnyObserver</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Value</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>type erased observer.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/Disposables.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Disposables Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Disposables\" class=\"dashAnchor\"></a>\n\n    <a title=\"Disposables Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Disposables Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Disposables</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Disposables</span></code></pre>\n\n                </div>\n              </div>\n            <p>A collection of utility methods for common disposable operations.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6create4withAA10Cancelable_pyyc_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(with:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6create4withAA10Cancelable_pyyc_tFZ\">create(with:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs a new disposable with the given action used for disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">with</span> <span class=\"nv\">dispose</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Disposal action which will be run upon calling <code>dispose</code>.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_ptFZ\">create(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a disposable with the given disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_ptFZ\">create(_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a disposable with the given disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_pAaF_pdtFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(_:_:_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_pAaF_pdtFZ\">create(_:<wbr>_:<wbr>_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a disposable with the given disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposable1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposable3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">...</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6createyAA10Cancelable_pSayAA10Disposable_pGFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pSayAA10Disposable_pGFZ\">create(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a disposable with the given disposables.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">disposables</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">])</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Cancelable.html\">Cancelable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift11DisposablesV6createAA10Disposable_pyFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift11DisposablesV6createAA10Disposable_pyFZ\">create()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates a disposable that does nothing on disposal.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/GroupedObservable.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>GroupedObservable Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/GroupedObservable\" class=\"dashAnchor\"></a>\n\n    <a title=\"GroupedObservable Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      GroupedObservable Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>GroupedObservable</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">GroupedObservable</span><span class=\"o\">&lt;</span><span class=\"kt\">Key</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Represents an observable sequence of elements that share a common key.\n<code>GroupedObservable</code> is typically created by the <code>groupBy</code> operator.\nEach <code>GroupedObservable</code> instance represents a collection of elements\nthat are grouped by a specific key.</p>\n\n<p>Example usage:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">observable</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"s\">\"Apple\"</span><span class=\"p\">,</span> <span class=\"s\">\"Banana\"</span><span class=\"p\">,</span> <span class=\"s\">\"Apricot\"</span><span class=\"p\">,</span> <span class=\"s\">\"Blueberry\"</span><span class=\"p\">,</span> <span class=\"s\">\"Avocado\"</span><span class=\"p\">)</span>\n\n<span class=\"k\">let</span> <span class=\"nv\">grouped</span> <span class=\"o\">=</span> <span class=\"n\">observable</span><span class=\"o\">.</span><span class=\"n\">groupBy</span> <span class=\"p\">{</span> <span class=\"n\">fruit</span> <span class=\"k\">in</span>\n    <span class=\"n\">fruit</span><span class=\"o\">.</span><span class=\"n\">first</span><span class=\"o\">!</span> <span class=\"c1\">// Grouping by the first letter of each fruit</span>\n<span class=\"p\">}</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">grouped</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">group</span> <span class=\"k\">in</span>\n    <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"s\">\"Group: </span><span class=\"se\">\\(</span><span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">key</span><span class=\"se\">)</span><span class=\"s\">\"</span><span class=\"p\">)</span>\n    <span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">event</span> <span class=\"k\">in</span>\n        <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"n\">event</span><span class=\"p\">)</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n<p>This will print:</p>\n<pre class=\"highlight swift\"><code><span class=\"kt\">Group</span><span class=\"p\">:</span> <span class=\"kt\">A</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apple</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apricot</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Avocado</span><span class=\"p\">)</span>\n<span class=\"kt\">Group</span><span class=\"p\">:</span> <span class=\"kt\">B</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Banana</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Blueberry</span><span class=\"p\">)</span>\n</code></pre>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17GroupedObservableV3keyxvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/key\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17GroupedObservableV3keyxvp\">key</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>The key associated with this grouped observable sequence.\nAll elements emitted by this observable share this common key.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Key</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17GroupedObservableV3key6sourceACyxq_Gx_AA0D0Cyq_Gtcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(key:source:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17GroupedObservableV3key6sourceACyxq_Gx_AA0D0Cyq_Gtcfc\">init(key:<wbr>source:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Initializes a grouped observable sequence with a key and a source observable sequence.</p>\n\n<p>Example usage:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">sourceObservable</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"s\">\"Apple\"</span><span class=\"p\">,</span> <span class=\"s\">\"Apricot\"</span><span class=\"p\">,</span> <span class=\"s\">\"Avocado\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">groupedObservable</span> <span class=\"o\">=</span> <span class=\"kt\">GroupedObservable</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"s\">\"A\"</span><span class=\"p\">,</span> <span class=\"nv\">source</span><span class=\"p\">:</span> <span class=\"n\">sourceObservable</span><span class=\"p\">)</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">groupedObservable</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">event</span> <span class=\"k\">in</span>\n    <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"n\">event</span><span class=\"p\">)</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n<p>This will print:</p>\n<pre class=\"highlight swift\"><code><span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apple</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apricot</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Avocado</span><span class=\"p\">)</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"nv\">key</span><span class=\"p\">:</span> <span class=\"kt\">Key</span><span class=\"p\">,</span> <span class=\"nv\">source</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>key</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The key associated with this grouped observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>source</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The observable sequence of elements for the specified key.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17GroupedObservableV9subscribeyAA10Disposable_pqd__7ElementQyd__Rs_AA12ObserverTypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17GroupedObservableV9subscribeyAA10Disposable_pqd__7ElementQyd__Rs_AA12ObserverTypeRd__lF\">subscribe(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Subscribes an observer to receive events emitted by the source observable sequence.</p>\n\n<p>Example usage:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">fruitsObservable</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"s\">\"Apple\"</span><span class=\"p\">,</span> <span class=\"s\">\"Banana\"</span><span class=\"p\">,</span> <span class=\"s\">\"Apricot\"</span><span class=\"p\">,</span> <span class=\"s\">\"Blueberry\"</span><span class=\"p\">,</span> <span class=\"s\">\"Avocado\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">grouped</span> <span class=\"o\">=</span> <span class=\"n\">fruitsObservable</span><span class=\"o\">.</span><span class=\"n\">groupBy</span> <span class=\"p\">{</span> <span class=\"nv\">$0</span><span class=\"o\">.</span><span class=\"n\">first</span><span class=\"o\">!</span> <span class=\"p\">}</span> <span class=\"c1\">// Group by first letter</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">grouped</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">group</span> <span class=\"k\">in</span>\n    <span class=\"k\">if</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">key</span> <span class=\"o\">==</span> <span class=\"s\">\"A\"</span> <span class=\"p\">{</span>\n        <span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">event</span> <span class=\"k\">in</span>\n            <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"n\">event</span><span class=\"p\">)</span>\n        <span class=\"p\">}</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n<p>This will print:</p>\n<pre class=\"highlight swift\"><code><span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apple</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apricot</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Avocado</span><span class=\"p\">)</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"n\">subscribe</span><span class=\"o\">&lt;</span><span class=\"kt\">Observer</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observer</span><span class=\"p\">:</span> <span class=\"kt\">Observer</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Observer</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Observer</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObserverType.html\">ObserverType</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observer</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>The observer that will receive the events of the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>A <code><a href=\"../Protocols/Disposable.html\">Disposable</a></code> representing the subscription, which can be used to cancel the subscription.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17GroupedObservableV02asD0AA0D0Cyq_GyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17GroupedObservableV02asD0AA0D0Cyq_GyF\">asObservable()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts this <code>GroupedObservable</code> into a regular <code><a href=\"../Classes/Observable.html\">Observable</a></code> sequence.\nThis allows you to work with the sequence without directly interacting with the key.</p>\n\n<p>Example usage:</p>\n<pre class=\"highlight swift\"><code><span class=\"k\">let</span> <span class=\"nv\">fruitsObservable</span> <span class=\"o\">=</span> <span class=\"kt\">Observable</span><span class=\"o\">.</span><span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"s\">\"Apple\"</span><span class=\"p\">,</span> <span class=\"s\">\"Banana\"</span><span class=\"p\">,</span> <span class=\"s\">\"Apricot\"</span><span class=\"p\">,</span> <span class=\"s\">\"Blueberry\"</span><span class=\"p\">,</span> <span class=\"s\">\"Avocado\"</span><span class=\"p\">)</span>\n<span class=\"k\">let</span> <span class=\"nv\">grouped</span> <span class=\"o\">=</span> <span class=\"n\">fruitsObservable</span><span class=\"o\">.</span><span class=\"n\">groupBy</span> <span class=\"p\">{</span> <span class=\"nv\">$0</span><span class=\"o\">.</span><span class=\"n\">first</span><span class=\"o\">!</span> <span class=\"p\">}</span> <span class=\"c1\">// Group by first letter</span>\n\n<span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">grouped</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">group</span> <span class=\"k\">in</span>\n    <span class=\"k\">if</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"n\">key</span> <span class=\"o\">==</span> <span class=\"s\">\"A\"</span> <span class=\"p\">{</span>\n        <span class=\"k\">let</span> <span class=\"nv\">regularObservable</span> <span class=\"o\">=</span> <span class=\"n\">group</span><span class=\"o\">.</span><span class=\"nf\">asObservable</span><span class=\"p\">()</span>\n        <span class=\"n\">_</span> <span class=\"o\">=</span> <span class=\"n\">regularObservable</span><span class=\"o\">.</span><span class=\"n\">subscribe</span> <span class=\"p\">{</span> <span class=\"n\">event</span> <span class=\"k\">in</span>\n            <span class=\"nf\">print</span><span class=\"p\">(</span><span class=\"n\">event</span><span class=\"p\">)</span>\n        <span class=\"p\">}</span>\n    <span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</code></pre>\n\n<p>This will print:</p>\n<pre class=\"highlight swift\"><code><span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apple</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Apricot</span><span class=\"p\">)</span>\n<span class=\"nf\">next</span><span class=\"p\">(</span><span class=\"kt\">Avocado</span><span class=\"p\">)</span>\n</code></pre>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The underlying <code><a href=\"../Classes/Observable.html\">Observable</a></code> sequence of elements for the specified key.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/HistoricalSchedulerTimeConverter.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>HistoricalSchedulerTimeConverter Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/HistoricalSchedulerTimeConverter\" class=\"dashAnchor\"></a>\n\n    <a title=\"HistoricalSchedulerTimeConverter Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      HistoricalSchedulerTimeConverter Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>HistoricalSchedulerTimeConverter</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">HistoricalSchedulerTimeConverter</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Converts historical virtual time into real time.</p>\n\n<p>Since historical virtual time is also measured in <code>Date</code>, this converter is identity function.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTimeUnit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Virtual time unit used that represents ticks of virtual clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">VirtualTimeUnit</span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\"></a>\n                    <a name=\"//apple_ref/swift/Alias/VirtualTimeIntervalUnit\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\">VirtualTimeIntervalUnit</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Virtual time unit used to represent differences of virtual times.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">typealias</span> <span class=\"kt\">VirtualTimeIntervalUnit</span> <span class=\"o\">=</span> <span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE0y10Foundation4DateVAGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertFromVirtualTime(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE0y10Foundation4DateVAGF\">convertFromVirtualTime(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns identical value of argument passed because historical virtual time is equal to real time, just\ndecoupled from local machine clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">convertFromVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE0y10Foundation4DateVAGF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertToVirtualTime(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE0y10Foundation4DateVAGF\">convertToVirtualTime(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns identical value of argument passed because historical virtual time is equal to real time, just\ndecoupled from local machine clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">convertToVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE8IntervalyS2dF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertFromVirtualTimeInterval(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE8IntervalyS2dF\">convertFromVirtualTimeInterval(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns identical value of argument passed because historical virtual time is equal to real time, just\ndecoupled from local machine clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">convertFromVirtualTimeInterval</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">virtualTimeInterval</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\">VirtualTimeIntervalUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">TimeInterval</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE8IntervalyS2dF\"></a>\n                    <a name=\"//apple_ref/swift/Method/convertToVirtualTimeInterval(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE8IntervalyS2dF\">convertToVirtualTimeInterval(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns identical value of argument passed because historical virtual time is equal to real time, just\ndecoupled from local machine clock.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">convertToVirtualTimeInterval</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">timeInterval</span><span class=\"p\">:</span> <span class=\"kt\">TimeInterval</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\">VirtualTimeIntervalUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV013offsetVirtualE0_0G010Foundation4DateVAH_SdtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/offsetVirtualTime(_:offset:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV013offsetVirtualE0_0G010Foundation4DateVAH_SdtF\">offsetVirtualTime(_:<wbr>offset:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Offsets <code>Date</code> by time interval.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">offsetVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">time</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span><span class=\"p\">,</span> <span class=\"nv\">offset</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\">VirtualTimeIntervalUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>time</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Time.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>timeInterval</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Time interval offset.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Time offsetted by time interval.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift32HistoricalSchedulerTimeConverterV014compareVirtualE0yAA0hE10ComparisonO10Foundation4DateV_AItF\"></a>\n                    <a name=\"//apple_ref/swift/Method/compareVirtualTime(_:_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift32HistoricalSchedulerTimeConverterV014compareVirtualE0yAA0hE10ComparisonO10Foundation4DateV_AItF\">compareVirtualTime(_:<wbr>_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Compares two <code>Date</code>s.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">compareVirtualTime</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">lhs</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">rhs</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\">VirtualTimeUnit</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a></span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/Infallible.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Infallible Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Infallible\" class=\"dashAnchor\"></a>\n\n    <a title=\"Infallible Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Infallible Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Infallible</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p><code>Infallible</code> is an <code><a href=\"../Classes/Observable.html\">Observable</a></code>-like push-style interface\nwhich is guaranteed to not emit error events.</p>\n\n<p>Unlike <code>SharedSequence</code>, it does not share its resources or\nreplay its events, but acts as a standard <code><a href=\"../Classes/Observable.html\">Observable</a></code>.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\">asObservable()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Combine%20Latest\"></a>\n                <a name=\"//apple_ref/swift/Section/Combine Latest\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Combine%20Latest\"></a>\n                  <h3 class=\"section-name\"><span>Combine Latest</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest__14resultSelectorACyxGqd___qd_0_x7ElementQyd___AGQyd_0_tKctAA0C4TypeRd__AaJRd_0_r0_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest__14resultSelectorACyxGqd___qd_0_x7ElementQyd___AGQyd_0_tKctAA0C4TypeRd__AaJRd_0_r0_lFZ\">combineLatest(_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest___14resultSelectorACyxGqd___qd_0_qd_1_x7ElementQyd___AGQyd_0_AGQyd_1_tKctAA0C4TypeRd__AaKRd_0_AaKRd_1_r1_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest___14resultSelectorACyxGqd___qd_0_qd_1_x7ElementQyd___AGQyd_0_AGQyd_1_tKctAA0C4TypeRd__AaKRd_0_AaKRd_1_r1_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_tKctAA0C4TypeRd__AaLRd_0_AaLRd_1_AaLRd_2_r2_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_tKctAA0C4TypeRd__AaLRd_0_AaLRd_1_AaLRd_2_r2_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">I4</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest_____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_tKctAA0C4TypeRd__AaMRd_0_AaMRd_1_AaMRd_2_AaMRd_3_r3_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest_____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_tKctAA0C4TypeRd__AaMRd_0_AaMRd_1_AaMRd_2_AaMRd_3_r3_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">I4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">I5</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_tKctAA0C4TypeRd__AaNRd_0_AaNRd_1_AaNRd_2_AaNRd_3_AaNRd_4_r4_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_tKctAA0C4TypeRd__AaNRd_0_AaNRd_1_AaNRd_2_AaNRd_3_AaNRd_4_r4_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">I4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">I5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">I6</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest_______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_tKctAA0C4TypeRd__AaORd_0_AaORd_1_AaORd_2_AaORd_3_AaORd_4_AaORd_5_r5_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest_______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_tKctAA0C4TypeRd__AaORd_0_AaORd_1_AaORd_2_AaORd_3_AaORd_4_AaORd_5_r5_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">I4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">I5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">I6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">I7</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV13combineLatest________14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_AGQyd_6_tKctAA0C4TypeRd__AaPRd_0_AaPRd_1_AaPRd_2_AaPRd_3_AaPRd_4_AaPRd_5_AaPRd_6_r6_lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/combineLatest(_:_:_:_:_:_:_:_:resultSelector:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV13combineLatest________14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_AGQyd_6_tKctAA0C4TypeRd__AaPRd_0_AaPRd_1_AaPRd_2_AaPRd_3_AaPRd_4_AaPRd_5_AaPRd_6_r6_lFZ\">combineLatest(_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>_:<wbr>resultSelector:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/combinelatest.html\">combineLatest operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">combineLatest</span><span class=\"o\">&lt;</span><span class=\"kt\">I1</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I7</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"p\">,</span> <span class=\"kt\">I8</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/InfallibleType.html\">InfallibleType</a></span><span class=\"o\">&gt;</span>\n<span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">source1</span><span class=\"p\">:</span> <span class=\"kt\">I1</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source2</span><span class=\"p\">:</span> <span class=\"kt\">I2</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source3</span><span class=\"p\">:</span> <span class=\"kt\">I3</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source4</span><span class=\"p\">:</span> <span class=\"kt\">I4</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source5</span><span class=\"p\">:</span> <span class=\"kt\">I5</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source6</span><span class=\"p\">:</span> <span class=\"kt\">I6</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source7</span><span class=\"p\">:</span> <span class=\"kt\">I7</span><span class=\"p\">,</span> <span class=\"n\">_</span> <span class=\"nv\">source8</span><span class=\"p\">:</span> <span class=\"kt\">I8</span><span class=\"p\">,</span> <span class=\"nv\">resultSelector</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">I1</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I2</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I3</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I4</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I5</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I6</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I7</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">I8</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Element</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resultSelector</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Function to invoke whenever any of the sources produces an element.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the result of combining elements of the sources using the specified result selector function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV0C8Observera\"></a>\n                    <a name=\"//apple_ref/swift/Alias/InfallibleObserver\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV0C8Observera\">InfallibleObserver</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Undocumented</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">typealias</span> <span class=\"kt\">InfallibleObserver</span> <span class=\"o\">=</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV6create9subscribeACyxGAA10Disposable_pyAA0C5EventOyxGcc_tFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/create(subscribe:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV6create9subscribeACyxGAA10Disposable_pyAA0C5EventOyxGcc_tFZ\">create(subscribe:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates an observable sequence from a specified subscribe method implementation.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/create.html\">create operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">create</span><span class=\"p\">(</span><span class=\"nv\">subscribe</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kd\">@escaping</span> <span class=\"kt\"><a href=\"../Structs/Infallible.html#/s:7RxSwift10InfallibleV0C8Observera\">InfallibleObserver</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>subscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Implementation of the resulting observable sequence&rsquo;s <code>subscribe</code> method.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The observable sequence with the specified implementation for the <code>subscribe</code> method.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/From%20%26%20Of\"></a>\n                <a name=\"//apple_ref/swift/Section/From &amp; Of\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/From%20%26%20Of\"></a>\n                  <h3 class=\"section-name\"><span>From &amp; Of</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV2of_9schedulerACyxGxd_AA22ImmediateSchedulerType_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/of(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV2of_9schedulerACyxGxd_AA22ImmediateSchedulerType_ptFZ\">of(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>This method creates a new Infallible instance with a variable number of elements.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">of</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">elements</span><span class=\"p\">:</span> <span class=\"kt\">Element</span><span class=\"o\">...</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>elements</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Elements to generate.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to send elements on. If <code>nil</code>, elements are sent immediately on subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The Infallible sequence whose elements are pulled from the given arguments.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV4from_9schedulerACyxGSayxG_AA22ImmediateSchedulerType_ptFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV4from_9schedulerACyxGSayxG_AA22ImmediateSchedulerType_ptFZ\">from(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts an array to an Infallible sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">from</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">array</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"kt\">Element</span><span class=\"p\">],</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The Infallible sequence whose elements are pulled from the given enumerable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV4from_9schedulerACyxGqd___AA22ImmediateSchedulerType_pt7ElementQyd__RszSTRd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/from(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV4from_9schedulerACyxGqd___AA22ImmediateSchedulerType_pt7ElementQyd__RszSTRd__lFZ\">from(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts a sequence to an Infallible sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/from.html\">from operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">from</span><span class=\"o\">&lt;</span><span class=\"kt\">Sequence</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">sequence</span><span class=\"p\">:</span> <span class=\"kt\">Sequence</span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span> <span class=\"o\">=</span> <span class=\"kt\"><a href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a></span><span class=\"o\">.</span><span class=\"n\">instance</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Element</span> <span class=\"o\">==</span> <span class=\"kt\">Sequence</span><span class=\"o\">.</span><span class=\"kt\">Element</span><span class=\"p\">,</span> <span class=\"kt\">Sequence</span> <span class=\"p\">:</span> <span class=\"kt\">Sequence</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The Infallible sequence whose elements are pulled from the given enumerable sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n            <div class=\"task-group\">\n              <div class=\"task-name-container\">\n                <a name=\"/Do\"></a>\n                <a name=\"//apple_ref/swift/Section/Do\" class=\"dashAnchor\"></a>\n                <div class=\"section-name-container\">\n                  <a class=\"section-name-link\" href=\"#/Do\"></a>\n                  <h3 class=\"section-name\"><span>Do</span>\n</h3>\n                </div>\n              </div>\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift10InfallibleV2do6onNext05afterF00E9Completed0gH00E9Subscribe0E10Subscribed0E7DisposeACyxGyxKcSg_AMyyKcSgANyycSgA2OtF\"></a>\n                    <a name=\"//apple_ref/swift/Method/do(onNext:afterNext:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift10InfallibleV2do6onNext05afterF00E9Completed0gH00E9Subscribe0E10Subscribed0E7DisposeACyxGyxKcSg_AMyyKcSgANyycSgA2OtF\">do(onNext:<wbr>afterNext:<wbr>onCompleted:<wbr>afterCompleted:<wbr>onSubscribe:<wbr>onSubscribed:<wbr>onDispose:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Invokes an action for each event in the infallible sequence, and propagates all observer messages through the result sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">do</span><span class=\"p\">`(</span><span class=\"nv\">onNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">afterNext</span><span class=\"p\">:</span> <span class=\"p\">((</span><span class=\"kt\">Element</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">afterCompleted</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onSubscribe</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onSubscribed</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">onDispose</span><span class=\"p\">:</span> <span class=\"p\">(()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Void</span><span class=\"p\">)?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Infallible</span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element in the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterNext</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke for each element after the observable has passed an onNext event along to its downstream.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke upon graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>afterCompleted</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after graceful termination of the observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribe</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke before subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onSubscribed</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscribing to source observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>onDispose</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Action to invoke after subscription to source observable has been disposed for any reason. It can be either because sequence terminates for some reason or observer subscription being disposed.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence with the side-effecting behavior applied.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/PrimitiveSequence.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>PrimitiveSequence Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/PrimitiveSequence\" class=\"dashAnchor\"></a>\n\n    <a title=\"PrimitiveSequence Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      PrimitiveSequence Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>PrimitiveSequence</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a></span></code></pre>\n<pre class=\"highlight swift\"><code><span class=\"kd\">extension</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a></span></code></pre>\n\n                </div>\n              </div>\n            <p>Observable sequences containing 0 or 1 element.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV09primitiveD0ACyxq_Gvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/primitiveSequence\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV09primitiveD0ACyxq_Gvp\">primitiveSequence</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        \n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">var</span> <span class=\"nv\">primitiveSequence</span><span class=\"p\">:</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV12asObservableAA0F0Cyq_GyF\"></a>\n                    <a name=\"//apple_ref/swift/Method/asObservable()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV12asObservableAA0F0Cyq_GyF\">asObservable()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Converts <code>self</code> to <code><a href=\"../Classes/Observable.html\">Observable</a></code> sequence.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">func</span> <span class=\"nf\">asObservable</span><span class=\"p\">()</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Observable sequence that represents <code>self</code>.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV8deferredyACyxq_GAEyKcFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/deferred(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV8deferredyACyxq_GAEyKcFZ\">deferred(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/defer.html\">defer operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"nf\">deferred</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">observableFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>observableFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Observable factory function to invoke for each observer that subscribes to the resulting sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose observers trigger an invocation of the given observable factory function.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5delay_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/delay(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5delay_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\">delay(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/delay.html\">delay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">delay</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time shift of the source by.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the subscription delay timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>the source Observable shifted in time by the specified delay.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV17delaySubscription_9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AA13SchedulerType_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/delaySubscription(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV17delaySubscription_9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AA13SchedulerType_ptF\">delaySubscription(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/delay.html\">delay operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">delaySubscription</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Relative time shift of the subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the subscription delay timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>Time-shifted sequence.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV7observe2onACyxq_GAA22ImmediateSchedulerType_p_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/observe(on:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV7observe2onACyxq_GAA22ImmediateSchedulerType_p_tF\">observe(on:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\n\n<p>This only invokes observer callbacks on a <code>scheduler</code>. In case the subscription and/or unsubscription\nactions have side-effects that require to be run on a scheduler, use <code>subscribeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/observeon.html\">observeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">observe</span><span class=\"p\">(</span><span class=\"n\">on</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to notify observers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose observations happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV9observeOnyACyxq_GAA22ImmediateSchedulerType_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/observeOn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV9observeOnyACyxq_GAA22ImmediateSchedulerType_pF\">observeOn(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\n\n<p>This only invokes observer callbacks on a <code>scheduler</code>. In case the subscription and/or unsubscription\nactions have side-effects that require to be run on a scheduler, use <code>subscribeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/observeon.html\">observeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"observe(on:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">observeOn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to notify observers on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose observations happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV9subscribe2onACyxq_GAA22ImmediateSchedulerType_p_tF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribe(on:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV9subscribe2onACyxq_GAA22ImmediateSchedulerType_p_tF\">subscribe(on:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\nscheduler.</p>\n\n<p>This operation is not commonly used.</p>\n\n<p>This only performs the side-effects of subscription and unsubscription on the specified scheduler.</p>\n\n<p>In order to invoke observer callbacks on a <code>scheduler</code>, use <code>observeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/subscribeon.html\">subscribeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">subscribe</span><span class=\"p\">(</span><span class=\"n\">on</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to perform subscription and unsubscription actions on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV11subscribeOnyACyxq_GAA22ImmediateSchedulerType_pF\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscribeOn(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV11subscribeOnyACyxq_GAA22ImmediateSchedulerType_pF\">subscribeOn(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\nscheduler.</p>\n\n<p>This operation is not commonly used.</p>\n\n<p>This only performs the side-effects of subscription and unsubscription on the specified scheduler.</p>\n\n<p>In order to invoke observer callbacks on a <code>scheduler</code>, use <code>observeOn</code>.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/subscribeon.html\">subscribeOn operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"subscribe(on:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">subscribeOn</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to perform subscription and unsubscription actions on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence whose subscriptions and unsubscriptions happen on the specified scheduler.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV10catchErroryACyxq_GAEs0F0_pKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catchError(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV10catchErroryACyxq_GAEs0F0_pKcF\">catchError(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"catch(_:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">catchError</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">handler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>handler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Error handler function, producing another observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the elements produced by the handler&rsquo;s resulting observable sequence in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5catchyACyxq_GAEs5Error_pKcF\"></a>\n                    <a name=\"//apple_ref/swift/Method/catch(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5catchyACyxq_GAEs5Error_pKcF\">catch(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/catch.html\">catch operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"p\">`</span><span class=\"nv\">catch</span><span class=\"p\">`(</span><span class=\"n\">_</span> <span class=\"nv\">handler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>handler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Error handler function, producing another observable sequence.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence containing the source sequence&rsquo;s elements, followed by the elements produced by the handler&rsquo;s resulting observable sequence in case an error occurred.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5retryyACyxq_GSiF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5retryyACyxq_GSiF\">retry(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>If the initial subscription to the observable sequence emits an error event, try repeating it up to the specified number of attempts (inclusive of the initial attempt) or until is succeeds. For example, if you want to retry a sequence once upon failure, you should use retry(2) (once for the initial attempt, and once for the retry).</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">retry</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">maxAttemptCount</span><span class=\"p\">:</span> <span class=\"kt\">Int</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>maxAttemptCount</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum number of times to attempt the sequence subscription.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd_0_AA10ObservableCyqd__Gc_ts5ErrorRd__AA0G4TypeRd_0_r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(when:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd_0_AA10ObservableCyqd__Gc_ts5ErrorRd__AA0G4TypeRd_0_r0_lF\">retry(when:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"n\">retry</span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">when</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd_0_AA10ObservableCyqd__Gcs5ErrorRd__AA0G4TypeRd_0_r0_lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retryWhen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd_0_AA10ObservableCyqd__Gcs5ErrorRd__AA0G4TypeRd_0_r0_lF\">retryWhen(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"retry(when:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"n\">retryWhen</span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"p\">:</span> <span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd__AA10ObservableCys5Error_pGc_tAA0G4TypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retry(when:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd__AA10ObservableCys5Error_pGc_tAA0G4TypeRd__lF\">retry(when:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">retry</span><span class=\"p\">(</span><span class=\"n\">when</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd__AA10ObservableCys5Error_pGcAA0G4TypeRd__lF\"></a>\n                    <a name=\"//apple_ref/swift/Method/retryWhen(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd__AA10ObservableCys5Error_pGcAA0G4TypeRd__lF\">retryWhen(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Repeats the source observable sequence on error when the notifier emits a next value.\nIf the source observable errors and the notifier completes, it will complete the source sequence.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/retry.html\">retry operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">@available</span><span class=\"p\">(</span><span class=\"o\">*</span><span class=\"p\">,</span> <span class=\"n\">deprecated</span><span class=\"p\">,</span> <span class=\"nv\">renamed</span><span class=\"p\">:</span> <span class=\"s\">\"retry(when:﹚\"</span><span class=\"p\">)</span>\n<span class=\"kd\">func</span> <span class=\"nf\">retryWhen</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">notificationHandler</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\"><a href=\"../Classes/Observable.html\">Observable</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Swift</span><span class=\"o\">.</span><span class=\"kt\">Error</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kd\">some</span> <span class=\"kt\"><a href=\"../Protocols/ObservableType.html\">ObservableType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>notificationHandler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>A handler that is passed an observable sequence of errors raised by the source observable and returns and observable that either continues, completes or errors. This behavior is then applied to the source observable.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence producing the elements of the given sequence repeatedly until it terminates successfully or is notified to error or complete.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5debug_10trimOutput4file4line8functionACyxq_GSSSg_SbSSSuSStF\"></a>\n                    <a name=\"//apple_ref/swift/Method/debug(_:trimOutput:file:line:function:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5debug_10trimOutput4file4line8functionACyxq_GSSSg_SbSSSuSStF\">debug(_:<wbr>trimOutput:<wbr>file:<wbr>line:<wbr>function:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Prints received events for all observers on standard output.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/do.html\">do operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">debug</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">identifier</span><span class=\"p\">:</span> <span class=\"kt\">String</span><span class=\"p\">?</span> <span class=\"o\">=</span> <span class=\"kc\">nil</span><span class=\"p\">,</span> <span class=\"nv\">trimOutput</span><span class=\"p\">:</span> <span class=\"kt\">Bool</span> <span class=\"o\">=</span> <span class=\"kc\">false</span><span class=\"p\">,</span> <span class=\"nv\">file</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"o\">=</span> <span class=\"k\">#file</span><span class=\"p\">,</span> <span class=\"nv\">line</span><span class=\"p\">:</span> <span class=\"kt\">UInt</span> <span class=\"o\">=</span> <span class=\"k\">#line</span><span class=\"p\">,</span> <span class=\"nv\">function</span><span class=\"p\">:</span> <span class=\"kt\">String</span> <span class=\"o\">=</span> <span class=\"k\">#function</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>identifier</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Identifier that is printed together with event description to standard output.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>trimOutput</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Should output be trimmed to max 40 characters.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose events are printed to standard output.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV5using_09primitiveD7FactoryACyxq_Gqd__yKc_AFqd__KctAA10DisposableRd__lFZ\"></a>\n                    <a name=\"//apple_ref/swift/Method/using(_:primitiveSequenceFactory:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV5using_09primitiveD7FactoryACyxq_Gqd__yKc_AFqd__KctAA10DisposableRd__lFZ\">using(_:<wbr>primitiveSequenceFactory:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence&rsquo;s lifetime.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/using.html\">using operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">static</span> <span class=\"kd\">func</span> <span class=\"n\">using</span><span class=\"o\">&lt;</span><span class=\"kt\">Resource</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/Disposable.html\">Disposable</a></span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">resourceFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">()</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">Resource</span><span class=\"p\">,</span> <span class=\"nv\">primitiveSequenceFactory</span><span class=\"p\">:</span> <span class=\"kd\">@escaping</span> <span class=\"p\">(</span><span class=\"kt\">Resource</span><span class=\"p\">)</span> <span class=\"k\">throws</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>resourceFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function to obtain a resource object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>primitiveSequenceFactory</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Factory function to obtain an observable sequence that depends on the obtained resource.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence whose lifetime controls the lifetime of the dependent resource object.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV7timeout_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/timeout(_:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV7timeout_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\">timeout(_:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies a timeout policy for each element in the observable sequence. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timeout.html\">timeout operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">timeout</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span> <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span><span class=\"p\">)</span>\n    <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum duration between values before a timeout occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timeout timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>An observable sequence with a <code><a href=\"../Enums/RxError.html#/s:7RxSwift0A5ErrorO7timeoutyA2CmF\">RxError.timeout</a></code> in case of a timeout.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift17PrimitiveSequenceV7timeout_5other9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AgA13SchedulerType_ptF\"></a>\n                    <a name=\"//apple_ref/swift/Method/timeout(_:other:scheduler:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift17PrimitiveSequenceV7timeout_5other9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AgA13SchedulerType_ptF\">timeout(_:<wbr>other:<wbr>scheduler:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.</p>\n<div class=\"aside aside-seealso\">\n    <p class=\"aside-title\">Seealso</p>\n    <p><a href=\"http://reactivex.io/documentation/operators/timeout.html\">timeout operator on reactivex.io</a></p>\n\n</div>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">func</span> <span class=\"nf\">timeout</span><span class=\"p\">(</span>\n    <span class=\"n\">_</span> <span class=\"nv\">dueTime</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a></span><span class=\"p\">,</span>\n    <span class=\"nv\">other</span><span class=\"p\">:</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span><span class=\"p\">,</span>\n    <span class=\"nv\">scheduler</span><span class=\"p\">:</span> <span class=\"kt\"><a href=\"../Protocols/SchedulerType.html\">SchedulerType</a></span>\n<span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\">PrimitiveSequence</span><span class=\"o\">&lt;</span><span class=\"kt\">Trait</span><span class=\"p\">,</span> <span class=\"kt\">Element</span><span class=\"o\">&gt;</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>dueTime</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Maximum duration between values before a timeout occurs.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>other</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Sequence to return in case of a timeout.</p>\n                                </div>\n                              </td>\n                            </tr>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>scheduler</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Scheduler to run the timeout timer on.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                      <div>\n                        <h4>Return Value</h4>\n                        <p>The source sequence switching to the other sequence in case of a timeout.</p>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/Reactive.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Reactive Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n    \n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Reactive\" class=\"dashAnchor\"></a>\n\n    <a title=\"Reactive Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      <a class=\"breadcrumb\" href=\"../RxSwift.html\">RxSwift</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Reactive Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Reactive</h1>\n              <div class=\"declaration\">\n                <div class=\"language\">\n                  \n                  <pre class=\"highlight swift\"><code><span class=\"kd\">@dynamicMemberLookup</span>\n<span class=\"kd\">public</span> <span class=\"kd\">struct</span> <span class=\"kt\">Reactive</span><span class=\"o\">&lt;</span><span class=\"kt\">Base</span><span class=\"o\">&gt;</span></code></pre>\n\n                </div>\n              </div>\n            <p>Use <code>Reactive</code> proxy as customization point for constrained protocol extensions.</p>\n\n<p>General pattern would be:</p>\n\n<p>// 1. Extend Reactive protocol with constrain on Base\n// Read as: Reactive Extension where Base is a SomeType\nextension Reactive where Base: SomeType {\n// 2. Put any specific reactive extension for SomeType here\n}</p>\n\n<p>With this approach we can have more specialized methods and properties using\n<code>Base</code> and not just specialized on common base type.</p>\n\n<p><code><a href=\"../Structs/Binder.html\">Binder</a></code>s are also automatically synthesized using <code>@dynamicMemberLookup</code> for writable reference properties of the reactive base.</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift8ReactiveV4basexvp\"></a>\n                    <a name=\"//apple_ref/swift/Property/base\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift8ReactiveV4basexvp\">base</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Base object to extend.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"k\">let</span> <span class=\"nv\">base</span><span class=\"p\">:</span> <span class=\"kt\">Base</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift8ReactiveVyACyxGxcfc\"></a>\n                    <a name=\"//apple_ref/swift/Method/init(_:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift8ReactiveVyACyxGxcfc\">init(_:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Creates extensions with base object.</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"nf\">init</span><span class=\"p\">(</span><span class=\"n\">_</span> <span class=\"nv\">base</span><span class=\"p\">:</span> <span class=\"kt\">Base</span><span class=\"p\">)</span></code></pre>\n\n                        </div>\n                      </div>\n                      <div>\n                        <h4>Parameters</h4>\n                        <table class=\"graybox\">\n                          <tbody>\n                            <tr>\n                              <td>\n                                <code>\n                                <em>base</em>\n                                </code>\n                              </td>\n                              <td>\n                                <div>\n                                  <p>Base object.</p>\n                                </div>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/s:7RxSwift8ReactiveV13dynamicMemberAA6BinderVyqd__Gs24ReferenceWritableKeyPathCyxqd__G_tcRlzCluip\"></a>\n                    <a name=\"//apple_ref/swift/Method/subscript(dynamicMember:)\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/s:7RxSwift8ReactiveV13dynamicMemberAA6BinderVyqd__Gs24ReferenceWritableKeyPathCyxqd__G_tcRlzCluip\">subscript(dynamicMember:<wbr>)</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Automatically synthesized binder for a key path between the reactive\nbase and one of its properties</p>\n\n                      </div>\n                      <div class=\"declaration\">\n                        <h4>Declaration</h4>\n                        <div class=\"language\">\n                          <p class=\"aside-title\">Swift</p>\n                          <pre class=\"highlight swift\"><code><span class=\"kd\">public</span> <span class=\"kd\">subscript</span><span class=\"o\">&lt;</span><span class=\"kt\">Property</span><span class=\"o\">&gt;</span><span class=\"p\">(</span><span class=\"n\">dynamicMember</span> <span class=\"nv\">keyPath</span><span class=\"p\">:</span> <span class=\"kt\">ReferenceWritableKeyPath</span><span class=\"o\">&lt;</span><span class=\"kt\">Base</span><span class=\"p\">,</span> <span class=\"kt\">Property</span><span class=\"o\">&gt;</span><span class=\"p\">)</span> <span class=\"o\">-&gt;</span> <span class=\"kt\"><a href=\"../Structs/Binder.html\">Binder</a></span><span class=\"o\">&lt;</span><span class=\"kt\">Property</span><span class=\"o\">&gt;</span> <span class=\"k\">where</span> <span class=\"kt\">Base</span> <span class=\"p\">:</span> <span class=\"kt\">AnyObject</span> <span class=\"p\">{</span> <span class=\"k\">get</span> <span class=\"p\">}</span></code></pre>\n\n                        </div>\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/Structs/Resources.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>Resources Structure Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"../css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"../js/jquery.min.js\" defer></script>\n    <script src=\"../js/jazzy.js\" defer></script>\n\n    <script src=\"../js/lunr.min.js\" defer></script>\n    <script src=\"../js/typeahead.jquery.js\" defer></script>\n    <script src=\"../js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n    <a name=\"//apple_ref/swift/Struct/Resources\" class=\"dashAnchor\"></a>\n\n    <a title=\"Resources Structure Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"../index.html\">\n          RxSwift 6.9.0 Docs\n        </a>\n         (95% documented)\n      </p>\n\n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"../search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n\n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"../img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n\n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"../index.html\">RxSwift Reference</a>\n      <img class=\"carat\" src=\"../img/carat.png\" alt=\"\"/>\n      Resources Structure Reference\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Structs.html\">Other Structures</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Structs/Resources.html\">Resources</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"../Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"../Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            <h1>Resources</h1>\n            <p>Resource utilization information</p>\n\n          </div>\n        </section>\n\n        <section class=\"section\">\n          <div class=\"section-content\">\n            <div class=\"task-group\">\n              <ul class=\"item-container\">\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Variable/total\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">total</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Counts internal Rx resource allocations (Observables, Observers, Disposables, etc.). This provides a simple way to detect leaks during development.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Method/incrementTotal()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">incrementTotal()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Increments <code><a href=\"../Structs/Resources.html#/total\">Resources.total</a></code> resource count.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Method/decrementTotal()\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">decrementTotal()</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Decrements <code><a href=\"../Structs/Resources.html#/total\">Resources.total</a></code> resource count</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n                <li class=\"item\">\n                  <div>\n                    <code>\n                    <a name=\"/\"></a>\n                    <a name=\"//apple_ref/swift/Variable/numberOfSerialDispatchQueueObservables\" class=\"dashAnchor\"></a>\n                    <a class=\"token\" href=\"#/\">numberOfSerialDispatchQueueObservables</a>\n                    </code>\n                  </div>\n                  <div class=\"height-container\">\n                    <div class=\"pointer-container\"></div>\n                    <section class=\"section\">\n                      <div class=\"pointer\"></div>\n                      <div class=\"abstract\">\n                        <p>Counts number of <code>SerialDispatchQueueObservables</code>.</p>\n\n<p>Purposed for unit tests.</p>\n\n                      </div>\n                    </section>\n                  </div>\n                </li>\n              </ul>\n            </div>\n          </div>\n        </section>\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2024 <a class=\"link\" href=\"https://github.com/ReactiveX/RxSwift\" target=\"_blank\" rel=\"external noopener\">Shai Mishali and Krunoslav Zaher</a>. All rights reserved. (Last updated: 2024-10-06)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.14.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/css/highlight.css",
    "content": "/*! Jazzy - https://github.com/realm/jazzy\n *  Copyright Realm Inc.\n *  SPDX-License-Identifier: MIT\n */\n/* Credit to https://gist.github.com/wataru420/2048287 */\n.highlight .c {\n  color: #999988;\n  font-style: italic; }\n\n.highlight .err {\n  color: #a61717;\n  background-color: #e3d2d2; }\n\n.highlight .k {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .o {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .cm {\n  color: #999988;\n  font-style: italic; }\n\n.highlight .cp {\n  color: #999999;\n  font-weight: bold; }\n\n.highlight .c1 {\n  color: #999988;\n  font-style: italic; }\n\n.highlight .cs {\n  color: #999999;\n  font-weight: bold;\n  font-style: italic; }\n\n.highlight .gd {\n  color: #000000;\n  background-color: #ffdddd; }\n\n.highlight .gd .x {\n  color: #000000;\n  background-color: #ffaaaa; }\n\n.highlight .ge {\n  color: #000000;\n  font-style: italic; }\n\n.highlight .gr {\n  color: #aa0000; }\n\n.highlight .gh {\n  color: #999999; }\n\n.highlight .gi {\n  color: #000000;\n  background-color: #ddffdd; }\n\n.highlight .gi .x {\n  color: #000000;\n  background-color: #aaffaa; }\n\n.highlight .go {\n  color: #888888; }\n\n.highlight .gp {\n  color: #555555; }\n\n.highlight .gs {\n  font-weight: bold; }\n\n.highlight .gu {\n  color: #aaaaaa; }\n\n.highlight .gt {\n  color: #aa0000; }\n\n.highlight .kc {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .kd {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .kp {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .kr {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .kt {\n  color: #445588; }\n\n.highlight .m {\n  color: #009999; }\n\n.highlight .s {\n  color: #d14; }\n\n.highlight .na {\n  color: #008080; }\n\n.highlight .nb {\n  color: #0086B3; }\n\n.highlight .nc {\n  color: #445588;\n  font-weight: bold; }\n\n.highlight .no {\n  color: #008080; }\n\n.highlight .ni {\n  color: #800080; }\n\n.highlight .ne {\n  color: #990000;\n  font-weight: bold; }\n\n.highlight .nf {\n  color: #990000; }\n\n.highlight .nn {\n  color: #555555; }\n\n.highlight .nt {\n  color: #000080; }\n\n.highlight .nv {\n  color: #008080; }\n\n.highlight .ow {\n  color: #000000;\n  font-weight: bold; }\n\n.highlight .w {\n  color: #bbbbbb; }\n\n.highlight .mf {\n  color: #009999; }\n\n.highlight .mh {\n  color: #009999; }\n\n.highlight .mi {\n  color: #009999; }\n\n.highlight .mo {\n  color: #009999; }\n\n.highlight .sb {\n  color: #d14; }\n\n.highlight .sc {\n  color: #d14; }\n\n.highlight .sd {\n  color: #d14; }\n\n.highlight .s2 {\n  color: #d14; }\n\n.highlight .se {\n  color: #d14; }\n\n.highlight .sh {\n  color: #d14; }\n\n.highlight .si {\n  color: #d14; }\n\n.highlight .sx {\n  color: #d14; }\n\n.highlight .sr {\n  color: #009926; }\n\n.highlight .s1 {\n  color: #d14; }\n\n.highlight .ss {\n  color: #990073; }\n\n.highlight .bp {\n  color: #999999; }\n\n.highlight .vc {\n  color: #008080; }\n\n.highlight .vg {\n  color: #008080; }\n\n.highlight .vi {\n  color: #008080; }\n\n.highlight .il {\n  color: #009999; }\n"
  },
  {
    "path": "docs/css/jazzy.css",
    "content": "/*! Jazzy - https://github.com/realm/jazzy\n *  Copyright Realm Inc.\n *  SPDX-License-Identifier: MIT\n */\n*, *:before, *:after {\n  box-sizing: inherit; }\n\nbody {\n  margin: 0;\n  background: #fff;\n  color: #333;\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  letter-spacing: .2px;\n  -webkit-font-smoothing: antialiased;\n  box-sizing: border-box; }\n\nh1 {\n  font-size: 2rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.6em; }\n\nh2 {\n  font-size: 1.75rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.3em; }\n\nh3 {\n  font-size: 1.5rem;\n  font-weight: 700;\n  margin: 1em 0 0.3em; }\n\nh4 {\n  font-size: 1.25rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh5 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em; }\n\nh6 {\n  font-size: 1rem;\n  font-weight: 700;\n  margin: 1.275em 0 0.85em;\n  color: #777; }\n\np {\n  margin: 0 0 1em; }\n\nul, ol {\n  padding: 0 0 0 2em;\n  margin: 0 0 0.85em; }\n\nblockquote {\n  margin: 0 0 0.85em;\n  padding: 0 15px;\n  color: #858585;\n  border-left: 4px solid #e5e5e5; }\n\nimg {\n  max-width: 100%; }\n\na {\n  color: #4183c4;\n  text-decoration: none; }\n  a:hover, a:focus {\n    outline: 0;\n    text-decoration: underline; }\n  a.discouraged {\n    text-decoration: line-through; }\n    a.discouraged:hover, a.discouraged:focus {\n      text-decoration: underline line-through; }\n\ntable {\n  background: #fff;\n  width: 100%;\n  border-collapse: collapse;\n  border-spacing: 0;\n  overflow: auto;\n  margin: 0 0 0.85em; }\n\ntr:nth-child(2n) {\n  background-color: #fbfbfb; }\n\nth, td {\n  padding: 6px 13px;\n  border: 1px solid #ddd; }\n\nhr {\n  height: 1px;\n  border: none;\n  background-color: #ddd; }\n\npre {\n  margin: 0 0 1.275em;\n  padding: .85em 1em;\n  overflow: auto;\n  background: #f7f7f7;\n  font-size: .85em;\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\ncode {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace; }\n\n.item-container p > code, .item-container li > code, .top-matter p > code, .top-matter li > code {\n  background: #f7f7f7;\n  padding: .2em; }\n  .item-container p > code:before, .item-container p > code:after, .item-container li > code:before, .item-container li > code:after, .top-matter p > code:before, .top-matter p > code:after, .top-matter li > code:before, .top-matter li > code:after {\n    letter-spacing: -.2em;\n    content: \"\\00a0\"; }\n\npre code {\n  padding: 0;\n  white-space: pre; }\n\n.content-wrapper {\n  display: flex;\n  flex-direction: column; }\n  @media (min-width: 768px) {\n    .content-wrapper {\n      flex-direction: row; } }\n.header {\n  display: flex;\n  padding: 8px;\n  font-size: 0.875em;\n  background: #444;\n  color: #999; }\n\n.header-col {\n  margin: 0;\n  padding: 0 8px; }\n\n.header-col--primary {\n  flex: 1; }\n\n.header-link {\n  color: #fff; }\n\n.header-icon {\n  padding-right: 2px;\n  vertical-align: -3px;\n  height: 16px; }\n\n.breadcrumbs {\n  font-size: 0.875em;\n  padding: 8px 16px;\n  margin: 0;\n  background: #fbfbfb;\n  border-bottom: 1px solid #ddd; }\n\n.carat {\n  height: 10px;\n  margin: 0 5px; }\n\n.navigation {\n  order: 2; }\n  @media (min-width: 768px) {\n    .navigation {\n      order: 1;\n      width: 25%;\n      max-width: 300px;\n      padding-bottom: 64px;\n      overflow: hidden;\n      word-wrap: normal;\n      background: #fbfbfb;\n      border-right: 1px solid #ddd; } }\n.nav-groups {\n  list-style-type: none;\n  padding-left: 0; }\n\n.nav-group-name {\n  border-bottom: 1px solid #ddd;\n  padding: 8px 0 8px 16px; }\n\n.nav-group-name-link {\n  color: #333; }\n\n.nav-group-tasks {\n  margin: 8px 0;\n  padding: 0 0 0 8px; }\n\n.nav-group-task {\n  font-size: 1em;\n  list-style-type: none;\n  white-space: nowrap; }\n\n.nav-group-task-link {\n  color: #808080; }\n\n.main-content {\n  order: 1; }\n  @media (min-width: 768px) {\n    .main-content {\n      order: 2;\n      flex: 1;\n      padding-bottom: 60px; } }\n.section {\n  padding: 0 32px;\n  border-bottom: 1px solid #ddd; }\n\n.section-content {\n  max-width: 834px;\n  margin: 0 auto;\n  padding: 16px 0; }\n\n.section-name {\n  color: #666;\n  display: block; }\n  .section-name p {\n    margin-bottom: inherit; }\n\n.declaration .highlight {\n  overflow-x: initial;\n  padding: 8px 0;\n  margin: 0;\n  background-color: transparent;\n  border: none; }\n\n.task-group-section {\n  border-top: 1px solid #ddd; }\n\n.task-group {\n  padding-top: 0px; }\n\n.task-name-container a[name]:before {\n  content: \"\";\n  display: block; }\n\n.section-name-container {\n  position: relative; }\n  .section-name-container .section-name-link {\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    margin-bottom: 0; }\n  .section-name-container .section-name {\n    position: relative;\n    pointer-events: none;\n    z-index: 1; }\n    .section-name-container .section-name a {\n      pointer-events: auto; }\n\n.item-container {\n  padding: 0; }\n\n.item {\n  padding-top: 8px;\n  width: 100%;\n  list-style-type: none; }\n  .item a[name]:before {\n    content: \"\";\n    display: block; }\n  .item .token, .item .direct-link {\n    display: inline-block;\n    text-indent: -20px;\n    padding-left: 3px;\n    margin-left: 20px;\n    font-size: 1rem; }\n\n.declaration-note {\n  font-size: .85em;\n  color: #808080;\n  font-style: italic; }\n\n.pointer-container {\n  border-bottom: 1px solid #ddd;\n  left: -23px;\n  padding-bottom: 13px;\n  position: relative;\n  width: 110%; }\n\n.pointer {\n  left: 21px;\n  top: 7px;\n  display: block;\n  position: absolute;\n  width: 12px;\n  height: 12px;\n  border-left: 1px solid #ddd;\n  border-top: 1px solid #ddd;\n  background: #fff;\n  transform: rotate(45deg); }\n\n.height-container {\n  display: none;\n  position: relative;\n  width: 100%;\n  overflow: hidden; }\n  .height-container .section {\n    background: #fff;\n    border: 1px solid #ddd;\n    border-top-width: 0;\n    padding-top: 10px;\n    padding-bottom: 5px;\n    padding: 8px 16px; }\n\n.aside, .language {\n  padding: 6px 12px;\n  margin: 12px 0;\n  border-left: 5px solid #dddddd;\n  overflow-y: hidden; }\n  .aside .aside-title, .language .aside-title {\n    font-size: 9px;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n    padding-bottom: 0;\n    margin: 0;\n    color: #aaa;\n    -webkit-user-select: none; }\n  .aside p:last-child, .language p:last-child {\n    margin-bottom: 0; }\n\n.language {\n  border-left: 5px solid #cde9f4; }\n  .language .aside-title {\n    color: #4183c4; }\n\n.aside-warning, .aside-deprecated, .aside-unavailable {\n  border-left: 5px solid #ff6666; }\n  .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {\n    color: #ff0000; }\n\n.graybox {\n  border-collapse: collapse;\n  width: 100%; }\n  .graybox p {\n    margin: 0;\n    word-break: break-word;\n    min-width: 50px; }\n  .graybox td {\n    border: 1px solid #ddd;\n    padding: 5px 25px 5px 10px;\n    vertical-align: middle; }\n  .graybox tr td:first-of-type {\n    text-align: right;\n    padding: 7px;\n    vertical-align: top;\n    word-break: normal;\n    width: 40px; }\n\n.slightly-smaller {\n  font-size: 0.9em; }\n\n.footer {\n  padding: 8px 16px;\n  background: #444;\n  color: #ddd;\n  font-size: 0.8em; }\n  .footer p {\n    margin: 8px 0; }\n  .footer a {\n    color: #fff; }\n\nhtml.dash .header, html.dash .breadcrumbs, html.dash .navigation {\n  display: none; }\n\nhtml.dash .height-container {\n  display: block; }\n\nform[role=search] input {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 24px;\n  padding: 0 10px;\n  margin: 0;\n  border: none;\n  border-radius: 1em; }\n  .loading form[role=search] input {\n    background: white url(../img/spinner.gif) center right 4px no-repeat; }\n\nform[role=search] .tt-menu {\n  margin: 0;\n  min-width: 300px;\n  background: #fbfbfb;\n  color: #333;\n  border: 1px solid #ddd; }\n\nform[role=search] .tt-highlight {\n  font-weight: bold; }\n\nform[role=search] .tt-suggestion {\n  font: 16px/1.7 \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  padding: 0 8px; }\n  form[role=search] .tt-suggestion span {\n    display: table-cell;\n    white-space: nowrap; }\n  form[role=search] .tt-suggestion .doc-parent-name {\n    width: 100%;\n    text-align: right;\n    font-weight: normal;\n    font-size: 0.9em;\n    padding-left: 16px; }\n\nform[role=search] .tt-suggestion:hover,\nform[role=search] .tt-suggestion.tt-cursor {\n  cursor: pointer;\n  background-color: #4183c4;\n  color: #fff; }\n\nform[role=search] .tt-suggestion:hover .doc-parent-name,\nform[role=search] .tt-suggestion.tt-cursor .doc-parent-name {\n  color: #fff; }\n"
  },
  {
    "path": "docs/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>RxSwift  Reference</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/jazzy.css\" />\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"css/highlight.css\" />\n    <meta charset=\"utf-8\">\n    <script src=\"js/jquery.min.js\" defer></script>\n    <script src=\"js/jazzy.js\" defer></script>\n    \n    <script src=\"js/lunr.min.js\" defer></script>\n    <script src=\"js/typeahead.jquery.js\" defer></script>\n    <script src=\"js/jazzy.search.js\" defer></script>\n  </head>\n  <body>\n\n\n    <a title=\"RxSwift  Reference\"></a>\n\n    <header class=\"header\">\n      <p class=\"header-col header-col--primary\">\n        <a class=\"header-link\" href=\"index.html\">\n          RxSwift 6.10.1 Docs\n        </a>\n         (95% documented)\n      </p>\n    \n      <div class=\"header-col--secondary\">\n        <form role=\"search\" action=\"search.json\">\n          <input type=\"text\" placeholder=\"Search documentation\" data-typeahead>\n        </form>\n      </div>\n    \n        <p class=\"header-col header-col--secondary\">\n          <a class=\"header-link\" href=\"https://github.com/ReactiveX/RxSwift\">\n            <img class=\"header-icon\" src=\"img/gh.png\" alt=\"GitHub\"/>\n            View on GitHub\n          </a>\n        </p>\n    \n    </header>\n\n    <p class=\"breadcrumbs\">\n      <a class=\"breadcrumb\" href=\"index.html\">RxSwift</a>\n    </p>\n\n    <div class=\"content-wrapper\">\n      <nav class=\"navigation\">\n        <ul class=\"nav-groups\">\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift.html\">RxSwift</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/AnyObserver.html\">AnyObserver</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Binder.html\">Binder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Cancelable.html\">Cancelable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ConnectableObservableType.html\">ConnectableObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/Disposable.html\">Disposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Event.html\">Event</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/GroupedObservable.html\">GroupedObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ImmediateSchedulerType.html\">ImmediateSchedulerType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/Observable.html\">Observable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableConvertibleType.html\">ObservableConvertibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObservableType.html\">ObservableType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ObserverType.html\">ObserverType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Reactive.html\">Reactive</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SchedulerType.html\">SchedulerType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FDisposables.html\">RxSwift/Disposables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BooleanDisposable.html\">BooleanDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html\">CompositeDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\">– DisposeKey</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Disposables.html\">Disposables</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag.html\">DisposeBag</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/DisposeBag/DisposableBuilder.html\">– DisposableBuilder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\">DisposeBase</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/RefCountDisposable.html\">RefCountDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ScheduledDisposable.html\">ScheduledDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDisposable.html\">SerialDisposable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SingleAssignmentDisposable.html\">SingleAssignmentDisposable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSchedulers.html\">RxSwift/Schedulers</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentDispatchQueueScheduler.html\">ConcurrentDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConcurrentMainScheduler.html\">ConcurrentMainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/CurrentThreadScheduler.html\">CurrentThreadScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/HistoricalScheduler.html\">HistoricalScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/HistoricalSchedulerTimeConverter.html\">HistoricalSchedulerTimeConverter</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/MainScheduler.html\">MainScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/OperationQueueScheduler.html\">OperationQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/SerialDispatchQueueScheduler.html\">SerialDispatchQueueScheduler</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/VirtualTimeConverterType.html\">VirtualTimeConverterType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/VirtualTimeScheduler.html\">VirtualTimeScheduler</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FSubjects.html\">RxSwift/Subjects</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/AsyncSubject.html\">AsyncSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/BehaviorSubject.html\">BehaviorSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/PublishSubject.html\">PublishSubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ReplaySubject.html\">ReplaySubject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/SubjectType.html\">SubjectType</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FInfallible.html\">RxSwift/Traits/Infallible</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/Infallible.html\">Infallible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html\">RxSwift/Traits/PrimitiveSequence</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Structs/PrimitiveSequence.html\">PrimitiveSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Classes.html\">Other Classes</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Classes/ConnectableObservable.html\">ConnectableObservable</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Global%20Variables.html\">Other Global Variables</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\">maxTailRecursiveSinkStackSize</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Enums.html\">Other Enumerations</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/CompletableEvent.html\">CompletableEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\">CompletableTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Hooks.html\">Hooks</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/InfallibleEvent.html\">InfallibleEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/MaybeEvent.html\">MaybeEvent</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\">MaybeTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/Resources.html\">Resources</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/RxError.html\">RxError</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\">SingleTrait</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/SubjectLifetimeScope.html\">SubjectLifetimeScope</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/TakeBehavior.html\">TakeBehavior</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Enums/VirtualTimeComparison.html\">VirtualTimeComparison</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Extensions.html\">Other Extensions</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Extensions/AsyncSequence.html\">AsyncSequence</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\">JSONDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/c:objc(cs)NSObject\">NSObject</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\">PropertyListDecoder</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Protocols.html\">Other Protocols</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/DataDecoder.html\">DataDecoder</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/EventConvertible.html\">EventConvertible</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/InfallibleType.html\">InfallibleType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/PrimitiveSequenceType.html\">PrimitiveSequenceType</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Protocols/ReactiveCompatible.html\">ReactiveCompatible</a>\n              </li>\n            </ul>\n          </li>\n          <li class=\"nav-group-name\">\n            <a class=\"nav-group-name-link\" href=\"Other%20Typealiases.html\">Other Type Aliases</a>\n            <ul class=\"nav-group-tasks\">\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\">RxAbstractInteger</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\">RxObservable</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\">RxTime</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\">RxTimeInterval</a>\n              </li>\n              <li class=\"nav-group-task\">\n                <a class=\"nav-group-task-link\" href=\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\">SingleEvent</a>\n              </li>\n            </ul>\n          </li>\n        </ul>\n      </nav>\n      <article class=\"main-content\">\n\n        <section class=\"section\">\n          <div class=\"section-content top-matter\">\n            \n            <p align=\"center\">\n<img src=\"https://github.com/ReactiveX/RxSwift/blob/main/assets/RxSwift_Logo.png?raw=true\" width=\"35%\" alt=\"RxSwift Logo\" />\n<br />\n<a href=\"https://github.com/ReactiveX/RxSwift/actions/workflows/tests.yml\" target=\"_blank\"><img src=\"https://github.com/ReactiveX/RxSwift/actions/workflows/tests.yml/badge.svg\" alt=\"Build Status\" /></a>\n<img src=\"https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20tvOS%20%7C%20watchOS%20%7C%20Linux-333333.svg\" alt=\"Supported Platforms: iOS, macOS, tvOS, watchOS & Linux\" />\n<br />\n<a href=\"https://github.com/Carthage/Carthage\" alt=\"RxSwift on Carthage\" title=\"RxSwift on Carthage\"><img src=\"https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat\" /></a>\n<a href=\"https://github.com/swiftlang/swift-package-manager\" alt=\"RxSwift on Swift Package Manager\" title=\"RxSwift on Swift Package Manager\"><img src=\"https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg\" /></a>\n</p>\n\n<p>Rx is a <a href=\"https://youtu.be/looJcaeboBY\">generic abstraction of computation</a> expressed through <code><a href=\"Classes/Observable.html\">Observable&lt;Element&gt;</a></code> interface, which lets you broadcast and subscribe to values and other events from an <code><a href=\"Classes/Observable.html\">Observable</a></code> stream.</p>\n\n<p>RxSwift is the Swift-specific implementation of the <a href=\"http://reactivex.io\">Reactive Extensions</a> standard.</p>\n\n<p align=\"center\"><img src=\"https://github.com/ReactiveX/RxSwift/blob/main/assets/example.png?raw=true\" width=\"55%\" alt=\"RxSwift Observable Example of a price constantly changing and updating the app's UI\" /></p>\n\n<p>While this version aims to stay true to the original spirit and naming conventions of Rx, this project also aims to provide a true Swift-first API for Rx APIs.</p>\n\n<p>Cross platform documentation can be found on <a href=\"http://reactivex.io/\">ReactiveX.io</a>.</p>\n\n<p>Like other Rx implementations, RxSwift&rsquo;s intention is to enable easy composition of asynchronous operations and streams of data in the form of <code><a href=\"Classes/Observable.html\">Observable</a></code> objects and a suite of methods to transform and compose these pieces of asynchronous work.</p>\n\n<p>KVO observation, async operations, UI Events and other streams of data are all unified under <a href=\"Documentation/GettingStarted.md#observables-aka-sequences\">abstraction of sequence</a>. This is the reason why Rx is so simple, elegant and powerful.</p>\n<h2 id='i-came-here-because-i-want-to' class='heading'>I came here because I want to &hellip;</h2>\n<h6 id='understand' class='heading'>&hellip; understand</h6>\n\n<ul>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Why.md\">why use rx?</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md\">the basics, getting started with RxSwift</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Traits.md\">traits</a> - what are <code><a href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\">Single</a></code>, <code><a href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\">Completable</a></code>, <code><a href=\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\">Maybe</a></code>, <code>Driver</code>, and <code>ControlProperty</code> &hellip; and why do they exist?</li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/UnitTests.md\">testing</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Tips.md\">tips and common errors</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/GettingStarted.md#debugging\">debugging</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/MathBehindRx.md\">the math behind Rx</a></li>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/HotAndColdObservables.md\">what are hot and cold observable sequences?</a></li>\n</ul>\n<h6 id='install' class='heading'>&hellip; install</h6>\n\n<ul>\n<li>Integrate RxSwift/RxCocoa with my app. <a href=\"#installation\">Installation Guide</a></li>\n</ul>\n<h6 id='hack-around' class='heading'>&hellip; hack around</h6>\n\n<ul>\n<li>with the example app. <a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/ExampleApp.md\">Running Example App</a></li>\n<li>with operators in playgrounds. <a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Playgrounds.md\">Playgrounds</a></li>\n</ul>\n<h6 id='interact' class='heading'>&hellip; interact</h6>\n\n<ul>\n<li>All of this is great, but it would be nice to talk with other people using RxSwift and exchange experiences. <br /><a href=\"http://slack.rxswift.org\">Join Slack Channel</a></li>\n<li>Report a problem using the library. <a href=\"https://github.com/ReactiveX/RxSwift/blob/main/.github/ISSUE_TEMPLATE.md\">Open an Issue With Bug Template</a></li>\n<li>Request a new feature. <a href=\"Documentation/NewFeatureRequestTemplate.md\">Open an Issue With Feature Request Template</a></li>\n<li>Help out <a href=\"https://github.com/ReactiveX/RxSwift/blob/main/CONTRIBUTING.md\">Check out contribution guide</a></li>\n</ul>\n<h6 id='compare' class='heading'>&hellip; compare</h6>\n\n<ul>\n<li><a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/ComparisonWithOtherLibraries.md\">with Combine and ReactiveSwift</a>.</li>\n</ul>\n<h6 id='understand-the-structure' class='heading'>&hellip; understand the structure</h6>\n\n<p>RxSwift is as compositional as the asynchronous work it drives. The core unit is RxSwift itself, while other dependencies can be added for UI Work, testing, and more.</p>\n\n<p>It comprises five separate components depending on each other in the following way:</p>\n<pre class=\"highlight plaintext\"><code>┌──────────────┐    ┌──────────────┐\n│   RxCocoa    ├────▶   RxRelay    │\n└───────┬──────┘    └──────┬───────┘\n        │                  │\n┌───────▼──────────────────▼───────┐\n│             RxSwift              │\n└───────▲──────────────────▲───────┘\n        │                  │\n┌───────┴──────┐    ┌──────┴───────┐\n│    RxTest    │    │  RxBlocking  │\n└──────────────┘    └──────────────┘\n</code></pre>\n\n<ul>\n<li><strong>RxSwift</strong>: The core of RxSwift, providing the Rx standard as (mostly) defined by <a href=\"https://reactivex.io\">ReactiveX</a>. It has no other dependencies.</li>\n<li><strong>RxCocoa</strong>: Provides Cocoa-specific capabilities for general iOS/macOS/watchOS &amp; tvOS app development, such as Shared Sequences, Traits, and much more. It depends on both <code>RxSwift</code> and <code>RxRelay</code>.</li>\n<li><strong>RxRelay</strong>: Provides <code>PublishRelay</code>, <code>BehaviorRelay</code> and <code>ReplayRelay</code>, three <a href=\"https://github.com/ReactiveX/RxSwift/blob/main/Documentation/Subjects.md#relays\">simple wrappers around Subjects</a>. It depends on <code>RxSwift</code>.</li>\n<li><strong>RxTest</strong> and <strong>RxBlocking</strong>: Provides testing capabilities for Rx-based systems. It depends on <code>RxSwift</code>.</li>\n</ul>\n<h2 id='usage' class='heading'>Usage</h2>\n\n<table>\n  <tr>\n    <th width=\"30%\">Here&rsquo;s an example</th>\n    <th width=\"30%\">In Action</th>\n  </tr>\n  <tr>\n    <td>Define search for GitHub repositories &hellip;</td>\n    <th rowspan=\"9\"><img src=\"https://raw.githubusercontent.com/kzaher/rxswiftcontent/master/GithubSearch.gif\"></th>\n  </tr>\n  <tr>\n    <td><div class=\"highlight highlight-source-swift\"><pre>\nlet searchResults = searchBar.rx.text.orEmpty\n    .throttle(.milliseconds(300), scheduler: MainScheduler.instance)\n    .distinctUntilChanged()\n    .flatMapLatest { query -> Observable&lt;[Repository]&gt; in\n        if query.isEmpty {\n            return .just([])\n        }\n        return searchGitHub(query)\n            .catchAndReturn([])\n    }\n    .observe(on: MainScheduler.instance)</pre></div></td>\n  </tr>\n  <tr>\n    <td>&hellip; then bind the results to your tableview</td>\n  </tr>\n  <tr>\n    <td width=\"30%\"><div class=\"highlight highlight-source-swift\"><pre>\nsearchResults\n    .bind(to: tableView.rx.items(cellIdentifier: \"Cell\")) {\n        (index, repository: Repository, cell) in\n        cell.textLabel?.text = repository.name\n        cell.detailTextLabel?.text = repository.url\n    }\n    .disposed(by: disposeBag)</pre></div></td>\n  </tr>\n</table>\n<h2 id='installation' class='heading'>Installation</h2>\n\n<p>RxSwift doesn&rsquo;t contain any external dependencies.</p>\n\n<p>These are currently the supported installation options:</p>\n<h3 id='manual' class='heading'>Manual</h3>\n\n<p>Open Rx.xcworkspace, choose <code>RxExample</code> and hit run. This method will build everything and run the sample app</p>\n<h3 id='xcframeworks' class='heading'>XCFrameworks</h3>\n\n<p>Each release starting with RxSwift 6 includes <code>*.xcframework</code> framework binaries.</p>\n\n<p>Simply drag the needed framework binaries to your <strong>Frameworks, Libraries, and Embedded Content</strong> section under your target&rsquo;s <strong>General</strong> tab.</p>\n\n<p><img src=\"https://raw.githubusercontent.com/ReactiveX/RxSwift/main/assets/xcframeworks.png\" alt=\"XCFrameworks instructions\" width=\"65%\"></p>\n\n<blockquote>\n<p>[!TIP]\nRxSwift&rsquo;s xcframework(s) are signed with an Apple Developer account, and you can always verify the Team Name: Shai Mishali</p>\n\n<p><img src=\"https://raw.githubusercontent.com/ReactiveX/RxSwift/main/assets/xcframeworks_signing.png\" alt=\"XCFrameworks Signing Team Name Validation\" width=\"65%\"></p>\n</blockquote>\n<h3 id='a-href-https-github-com-carthage-carthage-carthage-a' class='heading'><a href=\"https://github.com/Carthage/Carthage\">Carthage</a></h3>\n\n<p>Add this to <code>Cartfile</code></p>\n<pre class=\"highlight plaintext\"><code>github \"ReactiveX/RxSwift\" \"6.10.0\"\n</code></pre>\n<pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>carthage update\n</code></pre>\n<h4 id='carthage-as-a-static-library' class='heading'>Carthage as a Static Library</h4>\n\n<p>Carthage defaults to building RxSwift as a Dynamic Library.</p>\n\n<p>If you wish to build RxSwift as a Static Library using Carthage you may use the script below to manually modify the framework type before building with Carthage:</p>\n<pre class=\"highlight shell\"><code>carthage update RxSwift <span class=\"nt\">--platform</span> iOS <span class=\"nt\">--no-build</span>\n<span class=\"nb\">sed</span> <span class=\"nt\">-i</span> <span class=\"nt\">-e</span> <span class=\"s1\">'s/MACH_O_TYPE = mh_dylib/MACH_O_TYPE = staticlib/g'</span> Carthage/Checkouts/RxSwift/Rx.xcodeproj/project.pbxproj\ncarthage build RxSwift <span class=\"nt\">--platform</span> iOS\n</code></pre>\n<h3 id='a-href-https-github-com-swiftlang-swift-package-manager-swift-package-manager-a' class='heading'><a href=\"https://github.com/swiftlang/swift-package-manager\">Swift Package Manager</a></h3>\n\n<blockquote>\n<p><strong>Note</strong>: There is a critical cross-dependency bug affecting many projects including RxSwift in Swift Package Manager. We&rsquo;ve <a href=\"https://bugs.swift.org/browse/SR-12303\">filed a bug (SR-12303)</a> in early 2020 but have no answer yet. Your mileage may vary. A partial workaround can be found <a href=\"https://github.com/ReactiveX/RxSwift/issues/2127#issuecomment-717830502\">here</a>.</p>\n</blockquote>\n\n<p>Create a <code>Package.swift</code> file.</p>\n<pre class=\"highlight swift\"><code><span class=\"c1\">// swift-tools-version:5.0</span>\n\n<span class=\"kd\">import</span> <span class=\"kt\">PackageDescription</span>\n\n<span class=\"k\">let</span> <span class=\"nv\">package</span> <span class=\"o\">=</span> <span class=\"kt\">Package</span><span class=\"p\">(</span>\n  <span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"RxProject\"</span><span class=\"p\">,</span>\n  <span class=\"nv\">dependencies</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n    <span class=\"o\">.</span><span class=\"nf\">package</span><span class=\"p\">(</span><span class=\"nv\">url</span><span class=\"p\">:</span> <span class=\"s\">\"https://github.com/ReactiveX/RxSwift.git\"</span><span class=\"p\">,</span> <span class=\"o\">.</span><span class=\"nf\">upToNextMajor</span><span class=\"p\">(</span><span class=\"nv\">from</span><span class=\"p\">:</span> <span class=\"s\">\"6.0.0\"</span><span class=\"p\">))</span>\n  <span class=\"p\">],</span>\n  <span class=\"nv\">targets</span><span class=\"p\">:</span> <span class=\"p\">[</span>\n    <span class=\"o\">.</span><span class=\"nf\">target</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"RxProject\"</span><span class=\"p\">,</span> <span class=\"nv\">dependencies</span><span class=\"p\">:</span> <span class=\"p\">[</span><span class=\"s\">\"RxSwift\"</span><span class=\"p\">,</span> <span class=\"o\">.</span><span class=\"nf\">product</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">:</span> <span class=\"s\">\"RxCocoa\"</span><span class=\"p\">,</span> <span class=\"nv\">package</span><span class=\"p\">:</span> <span class=\"s\">\"RxSwift\"</span><span class=\"p\">)]),</span>\n  <span class=\"p\">]</span>\n<span class=\"p\">)</span>\n</code></pre>\n<pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>swift build\n</code></pre>\n\n<p>To build or test a module with RxTest dependency, set <code>TEST=1</code>.</p>\n<pre class=\"highlight shell\"><code><span class=\"nv\">$ TEST</span><span class=\"o\">=</span>1 swift <span class=\"nb\">test</span>\n</code></pre>\n<h3 id='manually-using-git-submodules' class='heading'>Manually using git submodules</h3>\n\n<ul>\n<li>Add RxSwift as a submodule</li>\n</ul>\n<pre class=\"highlight shell\"><code><span class=\"nv\">$ </span>git submodule add git@github.com:ReactiveX/RxSwift.git\n</code></pre>\n\n<ul>\n<li>Drag <code>Rx.xcodeproj</code> into Project Navigator</li>\n<li>Go to <code>Project &gt; Targets &gt; Build Phases &gt; Link Binary With Libraries</code>, click <code>+</code> and select <code>RxSwift</code>, <code>RxCocoa</code> and <code>RxRelay</code> targets</li>\n</ul>\n<h2 id='references' class='heading'>References</h2>\n\n<ul>\n<li><a href=\"http://reactivex.io/\">http://reactivex.io/</a></li>\n<li><a href=\"https://github.com/Reactive-Extensions\">Reactive Extensions GitHub (GitHub)</a></li>\n<li><a href=\"https://store.raywenderlich.com/products/rxswift-reactive-programming-with-swift\">RxSwift RayWenderlich.com Book</a></li>\n<li><a href=\"https://www.youtube.com/watch?v=GdvLP0ZAhhc\">RxSwift: Debunking the myth of hard (YouTube)</a></li>\n<li><a href=\"https://boxueio.com/series/rxswift-101\">Boxue.io RxSwift Online Course</a> (Chinese 🇨🇳)</li>\n<li><a href=\"https://youtu.be/looJcaeboBY\">Expert to Expert: Brian Beckman and Erik Meijer - Inside the .NET Reactive Framework (Rx) (video)</a></li>\n<li><a href=\"https://youtu.be/-8Y1-lE6NSA\">Reactive Programming Overview (Jafar Husain from Netflix)</a></li>\n<li><a href=\"http://csl.stanford.edu/%7Echristos/pldi2010.fit/meijer.duality.pdf\">Subject/Observer is Dual to Iterator (paper)</a></li>\n<li><a href=\"http://rxmarbles.com/\">Rx standard sequence operators visualized (visualization tool)</a></li>\n<li><a href=\"https://www.haskell.org/\">Haskell</a></li>\n</ul>\n\n          </div>\n        </section>\n\n\n      </article>\n    </div>\n    <section class=\"footer\">\n      <p>&copy; 2026 <a class=\"link\" href=\"\" target=\"_blank\" rel=\"external noopener\"></a>. All rights reserved. (Last updated: 2026-01-26)</p>\n      <p>Generated by <a class=\"link\" href=\"https://github.com/realm/jazzy\" target=\"_blank\" rel=\"external noopener\">jazzy ♪♫ v0.15.4</a>, a <a class=\"link\" href=\"https://realm.io\" target=\"_blank\" rel=\"external noopener\">Realm</a> project.</p>\n    </section>\n  </body>\n</html>\n"
  },
  {
    "path": "docs/js/jazzy.js",
    "content": "// Jazzy - https://github.com/realm/jazzy\n// Copyright Realm Inc.\n// SPDX-License-Identifier: MIT\n\nwindow.jazzy = {'docset': false}\nif (typeof window.dash != 'undefined') {\n  document.documentElement.className += ' dash'\n  window.jazzy.docset = true\n}\nif (navigator.userAgent.match(/xcode/i)) {\n  document.documentElement.className += ' xcode'\n  window.jazzy.docset = true\n}\n\nfunction toggleItem($link, $content) {\n  var animationDuration = 300;\n  $link.toggleClass('token-open');\n  $content.slideToggle(animationDuration);\n}\n\nfunction itemLinkToContent($link) {\n  return $link.parent().parent().next();\n}\n\n// On doc load + hash-change, open any targeted item\nfunction openCurrentItemIfClosed() {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(`a[name=\"${location.hash.substring(1)}\"]`).nextAll('.token');\n  $content = itemLinkToContent($link);\n  if ($content.is(':hidden')) {\n    toggleItem($link, $content);\n  }\n}\n\n$(openCurrentItemIfClosed);\n$(window).on('hashchange', openCurrentItemIfClosed);\n\n// On item link ('token') click, toggle its discussion\n$('.token').on('click', function(event) {\n  if (window.jazzy.docset) {\n    return;\n  }\n  var $link = $(this);\n  toggleItem($link, itemLinkToContent($link));\n\n  // Keeps the document from jumping to the hash.\n  var href = $link.attr('href');\n  if (history.pushState) {\n    history.pushState({}, '', href);\n  } else {\n    location.hash = href;\n  }\n  event.preventDefault();\n});\n\n// Clicks on links to the current, closed, item need to open the item\n$(\"a:not('.token')\").on('click', function() {\n  if (location == this.href) {\n    openCurrentItemIfClosed();\n  }\n});\n\n// KaTeX rendering\nif (\"katex\" in window) {\n  $($('.math').each( (_, element) => {\n    katex.render(element.textContent, element, {\n      displayMode: $(element).hasClass('m-block'),\n      throwOnError: false,\n      trust: true\n    });\n  }))\n}\n"
  },
  {
    "path": "docs/js/jazzy.search.js",
    "content": "// Jazzy - https://github.com/realm/jazzy\n// Copyright Realm Inc.\n// SPDX-License-Identifier: MIT\n\n$(function(){\n  var $typeahead = $('[data-typeahead]');\n  var $form = $typeahead.parents('form');\n  var searchURL = $form.attr('action');\n\n  function displayTemplate(result) {\n    return result.name;\n  }\n\n  function suggestionTemplate(result) {\n    var t = '<div class=\"list-group-item clearfix\">';\n    t += '<span class=\"doc-name\">' + result.name + '</span>';\n    if (result.parent_name) {\n     t += '<span class=\"doc-parent-name label\">' + result.parent_name + '</span>';\n    }\n    t += '</div>';\n    return t;\n  }\n\n  $typeahead.one('focus', function() {\n    $form.addClass('loading');\n\n    $.getJSON(searchURL).then(function(searchData) {\n      const searchIndex = lunr(function() {\n        this.ref('url');\n        this.field('name');\n        this.field('abstract');\n        for (const [url, doc] of Object.entries(searchData)) {\n          this.add({url: url, name: doc.name, abstract: doc.abstract});\n        }\n      });\n\n      $typeahead.typeahead(\n        {\n          highlight: true,\n          minLength: 3,\n          autoselect: true\n        },\n        {\n          limit: 10,\n          display: displayTemplate,\n          templates: { suggestion: suggestionTemplate },\n          source: function(query, sync) {\n            const lcSearch = query.toLowerCase();\n            const results = searchIndex.query(function(q) {\n                q.term(lcSearch, { boost: 100 });\n                q.term(lcSearch, {\n                  boost: 10,\n                  wildcard: lunr.Query.wildcard.TRAILING\n                });\n            }).map(function(result) {\n              var doc = searchData[result.ref];\n              doc.url = result.ref;\n              return doc;\n            });\n            sync(results);\n          }\n        }\n      );\n      $form.removeClass('loading');\n      $typeahead.trigger('focus');\n    });\n  });\n\n  var baseURL = searchURL.slice(0, -\"search.json\".length);\n\n  $typeahead.on('typeahead:select', function(e, result) {\n    window.location = baseURL + result.url;\n  });\n});\n"
  },
  {
    "path": "docs/js/typeahead.jquery.js",
    "content": "/*!\n * typeahead.js 1.3.3\n * https://github.com/corejavascript/typeahead.js\n * Copyright 2013-2024 Twitter, Inc. and other contributors; Licensed MIT\n */\n\n\n(function(root, factory) {\n    if (typeof define === \"function\" && define.amd) {\n        define([ \"jquery\" ], function(a0) {\n            return factory(a0);\n        });\n    } else if (typeof module === \"object\" && module.exports) {\n        module.exports = factory(require(\"jquery\"));\n    } else {\n        factory(root[\"jQuery\"]);\n    }\n})(this, function($) {\n    var _ = function() {\n        \"use strict\";\n        return {\n            isMsie: function() {\n                return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\n            },\n            isBlankString: function(str) {\n                return !str || /^\\s*$/.test(str);\n            },\n            escapeRegExChars: function(str) {\n                return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n            },\n            isString: function(obj) {\n                return typeof obj === \"string\";\n            },\n            isNumber: function(obj) {\n                return typeof obj === \"number\";\n            },\n            isArray: $.isArray,\n            isFunction: $.isFunction,\n            isObject: $.isPlainObject,\n            isUndefined: function(obj) {\n                return typeof obj === \"undefined\";\n            },\n            isElement: function(obj) {\n                return !!(obj && obj.nodeType === 1);\n            },\n            isJQuery: function(obj) {\n                return obj instanceof $;\n            },\n            toStr: function toStr(s) {\n                return _.isUndefined(s) || s === null ? \"\" : s + \"\";\n            },\n            bind: $.proxy,\n            each: function(collection, cb) {\n                $.each(collection, reverseArgs);\n                function reverseArgs(index, value) {\n                    return cb(value, index);\n                }\n            },\n            map: $.map,\n            filter: $.grep,\n            every: function(obj, test) {\n                var result = true;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (!(result = test.call(null, val, key, obj))) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            some: function(obj, test) {\n                var result = false;\n                if (!obj) {\n                    return result;\n                }\n                $.each(obj, function(key, val) {\n                    if (result = test.call(null, val, key, obj)) {\n                        return false;\n                    }\n                });\n                return !!result;\n            },\n            mixin: $.extend,\n            identity: function(x) {\n                return x;\n            },\n            clone: function(obj) {\n                return $.extend(true, {}, obj);\n            },\n            getIdGenerator: function() {\n                var counter = 0;\n                return function() {\n                    return counter++;\n                };\n            },\n            templatify: function templatify(obj) {\n                return $.isFunction(obj) ? obj : template;\n                function template() {\n                    return String(obj);\n                }\n            },\n            defer: function(fn) {\n                setTimeout(fn, 0);\n            },\n            debounce: function(func, wait, immediate) {\n                var timeout, result;\n                return function() {\n                    var context = this, args = arguments, later, callNow;\n                    later = function() {\n                        timeout = null;\n                        if (!immediate) {\n                            result = func.apply(context, args);\n                        }\n                    };\n                    callNow = immediate && !timeout;\n                    clearTimeout(timeout);\n                    timeout = setTimeout(later, wait);\n                    if (callNow) {\n                        result = func.apply(context, args);\n                    }\n                    return result;\n                };\n            },\n            throttle: function(func, wait) {\n                var context, args, timeout, result, previous, later;\n                previous = 0;\n                later = function() {\n                    previous = new Date();\n                    timeout = null;\n                    result = func.apply(context, args);\n                };\n                return function() {\n                    var now = new Date(), remaining = wait - (now - previous);\n                    context = this;\n                    args = arguments;\n                    if (remaining <= 0) {\n                        clearTimeout(timeout);\n                        timeout = null;\n                        previous = now;\n                        result = func.apply(context, args);\n                    } else if (!timeout) {\n                        timeout = setTimeout(later, remaining);\n                    }\n                    return result;\n                };\n            },\n            stringify: function(val) {\n                return _.isString(val) ? val : JSON.stringify(val);\n            },\n            guid: function() {\n                function _p8(s) {\n                    var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\n                    return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\n                }\n                return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\n            },\n            noop: function() {}\n        };\n    }();\n    var WWW = function() {\n        \"use strict\";\n        var defaultClassNames = {\n            wrapper: \"twitter-typeahead\",\n            input: \"tt-input\",\n            hint: \"tt-hint\",\n            menu: \"tt-menu\",\n            dataset: \"tt-dataset\",\n            suggestion: \"tt-suggestion\",\n            selectable: \"tt-selectable\",\n            empty: \"tt-empty\",\n            open: \"tt-open\",\n            cursor: \"tt-cursor\",\n            highlight: \"tt-highlight\"\n        };\n        return build;\n        function build(o) {\n            var www, classes;\n            classes = _.mixin({}, defaultClassNames, o);\n            www = {\n                css: buildCss(),\n                classes: classes,\n                html: buildHtml(classes),\n                selectors: buildSelectors(classes)\n            };\n            return {\n                css: www.css,\n                html: www.html,\n                classes: www.classes,\n                selectors: www.selectors,\n                mixin: function(o) {\n                    _.mixin(o, www);\n                }\n            };\n        }\n        function buildHtml(c) {\n            return {\n                wrapper: '<span class=\"' + c.wrapper + '\"></span>',\n                menu: '<div role=\"listbox\" class=\"' + c.menu + '\"></div>'\n            };\n        }\n        function buildSelectors(classes) {\n            var selectors = {};\n            _.each(classes, function(v, k) {\n                selectors[k] = \".\" + v;\n            });\n            return selectors;\n        }\n        function buildCss() {\n            var css = {\n                wrapper: {\n                    position: \"relative\",\n                    display: \"inline-block\"\n                },\n                hint: {\n                    position: \"absolute\",\n                    top: \"0\",\n                    left: \"0\",\n                    borderColor: \"transparent\",\n                    boxShadow: \"none\",\n                    opacity: \"1\"\n                },\n                input: {\n                    position: \"relative\",\n                    verticalAlign: \"top\",\n                    backgroundColor: \"transparent\"\n                },\n                inputWithNoHint: {\n                    position: \"relative\",\n                    verticalAlign: \"top\"\n                },\n                menu: {\n                    position: \"absolute\",\n                    top: \"100%\",\n                    left: \"0\",\n                    zIndex: \"100\",\n                    display: \"none\"\n                },\n                ltr: {\n                    left: \"0\",\n                    right: \"auto\"\n                },\n                rtl: {\n                    left: \"auto\",\n                    right: \" 0\"\n                }\n            };\n            if (_.isMsie()) {\n                _.mixin(css.input, {\n                    backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\n                });\n            }\n            return css;\n        }\n    }();\n    var EventBus = function() {\n        \"use strict\";\n        var namespace, deprecationMap;\n        namespace = \"typeahead:\";\n        deprecationMap = {\n            render: \"rendered\",\n            cursorchange: \"cursorchanged\",\n            select: \"selected\",\n            autocomplete: \"autocompleted\"\n        };\n        function EventBus(o) {\n            if (!o || !o.el) {\n                $.error(\"EventBus initialized without el\");\n            }\n            this.$el = $(o.el);\n        }\n        _.mixin(EventBus.prototype, {\n            _trigger: function(type, args) {\n                var $e = $.Event(namespace + type);\n                this.$el.trigger.call(this.$el, $e, args || []);\n                return $e;\n            },\n            before: function(type) {\n                var args, $e;\n                args = [].slice.call(arguments, 1);\n                $e = this._trigger(\"before\" + type, args);\n                return $e.isDefaultPrevented();\n            },\n            trigger: function(type) {\n                var deprecatedType;\n                this._trigger(type, [].slice.call(arguments, 1));\n                if (deprecatedType = deprecationMap[type]) {\n                    this._trigger(deprecatedType, [].slice.call(arguments, 1));\n                }\n            }\n        });\n        return EventBus;\n    }();\n    var EventEmitter = function() {\n        \"use strict\";\n        var splitter = /\\s+/, nextTick = getNextTick();\n        return {\n            onSync: onSync,\n            onAsync: onAsync,\n            off: off,\n            trigger: trigger\n        };\n        function on(method, types, cb, context) {\n            var type;\n            if (!cb) {\n                return this;\n            }\n            types = types.split(splitter);\n            cb = context ? bindContext(cb, context) : cb;\n            this._callbacks = this._callbacks || {};\n            while (type = types.shift()) {\n                this._callbacks[type] = this._callbacks[type] || {\n                    sync: [],\n                    async: []\n                };\n                this._callbacks[type][method].push(cb);\n            }\n            return this;\n        }\n        function onAsync(types, cb, context) {\n            return on.call(this, \"async\", types, cb, context);\n        }\n        function onSync(types, cb, context) {\n            return on.call(this, \"sync\", types, cb, context);\n        }\n        function off(types) {\n            var type;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            while (type = types.shift()) {\n                delete this._callbacks[type];\n            }\n            return this;\n        }\n        function trigger(types) {\n            var type, callbacks, args, syncFlush, asyncFlush;\n            if (!this._callbacks) {\n                return this;\n            }\n            types = types.split(splitter);\n            args = [].slice.call(arguments, 1);\n            while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\n                syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\n                asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\n                syncFlush() && nextTick(asyncFlush);\n            }\n            return this;\n        }\n        function getFlush(callbacks, context, args) {\n            return flush;\n            function flush() {\n                var cancelled;\n                for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\n                    cancelled = callbacks[i].apply(context, args) === false;\n                }\n                return !cancelled;\n            }\n        }\n        function getNextTick() {\n            var nextTickFn;\n            if (window.setImmediate) {\n                nextTickFn = function nextTickSetImmediate(fn) {\n                    setImmediate(function() {\n                        fn();\n                    });\n                };\n            } else {\n                nextTickFn = function nextTickSetTimeout(fn) {\n                    setTimeout(function() {\n                        fn();\n                    }, 0);\n                };\n            }\n            return nextTickFn;\n        }\n        function bindContext(fn, context) {\n            return fn.bind ? fn.bind(context) : function() {\n                fn.apply(context, [].slice.call(arguments, 0));\n            };\n        }\n    }();\n    var highlight = function(doc) {\n        \"use strict\";\n        var defaults = {\n            node: null,\n            pattern: null,\n            tagName: \"strong\",\n            className: null,\n            wordsOnly: false,\n            caseSensitive: false,\n            diacriticInsensitive: false\n        };\n        var accented = {\n            A: \"[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Ａａ]\",\n            B: \"[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Ｂｂ]\",\n            C: \"[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Ｃｃ]\",\n            D: \"[DdĎďǄ-ǆǱ-ǳᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Ｄｄ]\",\n            E: \"[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ｅｅ]\",\n            F: \"[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ﬀ-ﬄＦｆ]\",\n            G: \"[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Ｇｇ]\",\n            H: \"[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Ｈｈ]\",\n            I: \"[IiÌ-Ïì-ïĨ-İĲĳǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕ﬁﬃＩｉ]\",\n            J: \"[JjĲ-ĵǇ-ǌǰʲᴶⅉ⒥ⒿⓙⱼＪｊ]\",\n            K: \"[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Ｋｋ]\",\n            L: \"[LlĹ-ŀǇ-ǉˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿ﬂﬄＬｌ]\",\n            M: \"[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Ｍｍ]\",\n            N: \"[NnÑñŃ-ŉǊ-ǌǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Ｎｎ]\",\n            O: \"[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Ｏｏ]\",\n            P: \"[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Ｐｐ]\",\n            Q: \"[Qqℚ⒬Ⓠⓠ㏃Ｑｑ]\",\n            R: \"[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Ｒｒ]\",\n            S: \"[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜ﬆＳｓ]\",\n            T: \"[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ﬅﬆＴｔ]\",\n            U: \"[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Ｕｕ]\",\n            V: \"[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Ｖｖ]\",\n            W: \"[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ｗｗ]\",\n            X: \"[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Ｘｘ]\",\n            Y: \"[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Ｙｙ]\",\n            Z: \"[ZzŹ-žǱ-ǳᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Ｚｚ]\"\n        };\n        return function hightlight(o) {\n            var regex;\n            o = _.mixin({}, defaults, o);\n            if (!o.node || !o.pattern) {\n                return;\n            }\n            o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\n            regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);\n            traverse(o.node, hightlightTextNode);\n            function hightlightTextNode(textNode) {\n                var match, patternNode, wrapperNode;\n                if (match = regex.exec(textNode.data)) {\n                    wrapperNode = doc.createElement(o.tagName);\n                    o.className && (wrapperNode.className = o.className);\n                    patternNode = textNode.splitText(match.index);\n                    patternNode.splitText(match[0].length);\n                    wrapperNode.appendChild(patternNode.cloneNode(true));\n                    textNode.parentNode.replaceChild(wrapperNode, patternNode);\n                }\n                return !!match;\n            }\n            function traverse(el, hightlightTextNode) {\n                var childNode, TEXT_NODE_TYPE = 3;\n                for (var i = 0; i < el.childNodes.length; i++) {\n                    childNode = el.childNodes[i];\n                    if (childNode.nodeType === TEXT_NODE_TYPE) {\n                        i += hightlightTextNode(childNode) ? 1 : 0;\n                    } else {\n                        traverse(childNode, hightlightTextNode);\n                    }\n                }\n            }\n        };\n        function accent_replacer(chr) {\n            return accented[chr.toUpperCase()] || chr;\n        }\n        function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {\n            var escapedPatterns = [], regexStr;\n            for (var i = 0, len = patterns.length; i < len; i++) {\n                var escapedWord = _.escapeRegExChars(patterns[i]);\n                if (diacriticInsensitive) {\n                    escapedWord = escapedWord.replace(/\\S/g, accent_replacer);\n                }\n                escapedPatterns.push(escapedWord);\n            }\n            regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\n            return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\n        }\n    }(window.document);\n    var Input = function() {\n        \"use strict\";\n        var specialKeyCodeMap;\n        specialKeyCodeMap = {\n            9: \"tab\",\n            27: \"esc\",\n            37: \"left\",\n            39: \"right\",\n            13: \"enter\",\n            38: \"up\",\n            40: \"down\"\n        };\n        function Input(o, www) {\n            var id;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"input is missing\");\n            }\n            www.mixin(this);\n            this.$hint = $(o.hint);\n            this.$input = $(o.input);\n            this.$menu = $(o.menu);\n            id = this.$input.attr(\"id\") || _.guid();\n            this.$menu.attr(\"id\", id + \"_listbox\");\n            this.$hint.attr({\n                \"aria-hidden\": true\n            });\n            this.$input.attr({\n                \"aria-owns\": id + \"_listbox\",\n                \"aria-controls\": id + \"_listbox\",\n                role: \"combobox\",\n                \"aria-autocomplete\": \"list\",\n                \"aria-expanded\": false\n            });\n            this.query = this.$input.val();\n            this.queryWhenFocused = this.hasFocus() ? this.query : null;\n            this.$overflowHelper = buildOverflowHelper(this.$input);\n            this._checkLanguageDirection();\n            if (this.$hint.length === 0) {\n                this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\n            }\n            this.onSync(\"cursorchange\", this._updateDescendent);\n        }\n        Input.normalizeQuery = function(str) {\n            return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\n        };\n        _.mixin(Input.prototype, EventEmitter, {\n            _onBlur: function onBlur() {\n                this.resetInputValue();\n                this.trigger(\"blurred\");\n            },\n            _onFocus: function onFocus() {\n                this.queryWhenFocused = this.query;\n                this.trigger(\"focused\");\n            },\n            _onKeydown: function onKeydown($e) {\n                var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\n                this._managePreventDefault(keyName, $e);\n                if (keyName && this._shouldTrigger(keyName, $e)) {\n                    this.trigger(keyName + \"Keyed\", $e);\n                }\n            },\n            _onInput: function onInput() {\n                this._setQuery(this.getInputValue());\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            _managePreventDefault: function managePreventDefault(keyName, $e) {\n                var preventDefault;\n                switch (keyName) {\n                  case \"up\":\n                  case \"down\":\n                    preventDefault = !withModifier($e);\n                    break;\n\n                  default:\n                    preventDefault = false;\n                }\n                preventDefault && $e.preventDefault();\n            },\n            _shouldTrigger: function shouldTrigger(keyName, $e) {\n                var trigger;\n                switch (keyName) {\n                  case \"tab\":\n                    trigger = !withModifier($e);\n                    break;\n\n                  default:\n                    trigger = true;\n                }\n                return trigger;\n            },\n            _checkLanguageDirection: function checkLanguageDirection() {\n                var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.$hint.attr(\"dir\", dir);\n                    this.trigger(\"langDirChanged\", dir);\n                }\n            },\n            _setQuery: function setQuery(val, silent) {\n                var areEquivalent, hasDifferentWhitespace;\n                areEquivalent = areQueriesEquivalent(val, this.query);\n                hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\n                this.query = val;\n                if (!silent && !areEquivalent) {\n                    this.trigger(\"queryChanged\", this.query);\n                } else if (!silent && hasDifferentWhitespace) {\n                    this.trigger(\"whitespaceChanged\", this.query);\n                }\n            },\n            _updateDescendent: function updateDescendent(event, id) {\n                this.$input.attr(\"aria-activedescendant\", id);\n            },\n            bind: function() {\n                var that = this, onBlur, onFocus, onKeydown, onInput;\n                onBlur = _.bind(this._onBlur, this);\n                onFocus = _.bind(this._onFocus, this);\n                onKeydown = _.bind(this._onKeydown, this);\n                onInput = _.bind(this._onInput, this);\n                this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\n                if (!_.isMsie() || _.isMsie() > 9) {\n                    this.$input.on(\"input.tt\", onInput);\n                } else {\n                    this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\n                        if (specialKeyCodeMap[$e.which || $e.keyCode]) {\n                            return;\n                        }\n                        _.defer(_.bind(that._onInput, that, $e));\n                    });\n                }\n                return this;\n            },\n            focus: function focus() {\n                this.$input.focus();\n            },\n            blur: function blur() {\n                this.$input.blur();\n            },\n            getLangDir: function getLangDir() {\n                return this.dir;\n            },\n            getQuery: function getQuery() {\n                return this.query || \"\";\n            },\n            setQuery: function setQuery(val, silent) {\n                this.setInputValue(val);\n                this._setQuery(val, silent);\n            },\n            hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\n                return this.query !== this.queryWhenFocused;\n            },\n            getInputValue: function getInputValue() {\n                return this.$input.val();\n            },\n            setInputValue: function setInputValue(value) {\n                this.$input.val(value);\n                this.clearHintIfInvalid();\n                this._checkLanguageDirection();\n            },\n            resetInputValue: function resetInputValue() {\n                this.setInputValue(this.query);\n            },\n            getHint: function getHint() {\n                return this.$hint.val();\n            },\n            setHint: function setHint(value) {\n                this.$hint.val(value);\n            },\n            clearHint: function clearHint() {\n                this.setHint(\"\");\n            },\n            clearHintIfInvalid: function clearHintIfInvalid() {\n                var val, hint, valIsPrefixOfHint, isValid;\n                val = this.getInputValue();\n                hint = this.getHint();\n                valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\n                isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\n                !isValid && this.clearHint();\n            },\n            hasFocus: function hasFocus() {\n                return this.$input.is(\":focus\");\n            },\n            hasOverflow: function hasOverflow() {\n                var constraint = this.$input.width() - 2;\n                this.$overflowHelper.text(this.getInputValue());\n                return this.$overflowHelper.width() >= constraint;\n            },\n            isCursorAtEnd: function() {\n                var valueLength, selectionStart, range;\n                valueLength = this.$input.val().length;\n                selectionStart = this.$input[0].selectionStart;\n                if (_.isNumber(selectionStart)) {\n                    return selectionStart === valueLength;\n                } else if (document.selection) {\n                    range = document.selection.createRange();\n                    range.moveStart(\"character\", -valueLength);\n                    return valueLength === range.text.length;\n                }\n                return true;\n            },\n            destroy: function destroy() {\n                this.$hint.off(\".tt\");\n                this.$input.off(\".tt\");\n                this.$overflowHelper.remove();\n                this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\n            },\n            setAriaExpanded: function setAriaExpanded(value) {\n                this.$input.attr(\"aria-expanded\", value);\n            }\n        });\n        return Input;\n        function buildOverflowHelper($input) {\n            return $('<pre aria-hidden=\"true\"></pre>').css({\n                position: \"absolute\",\n                visibility: \"hidden\",\n                whiteSpace: \"pre\",\n                fontFamily: $input.css(\"font-family\"),\n                fontSize: $input.css(\"font-size\"),\n                fontStyle: $input.css(\"font-style\"),\n                fontVariant: $input.css(\"font-variant\"),\n                fontWeight: $input.css(\"font-weight\"),\n                wordSpacing: $input.css(\"word-spacing\"),\n                letterSpacing: $input.css(\"letter-spacing\"),\n                textIndent: $input.css(\"text-indent\"),\n                textRendering: $input.css(\"text-rendering\"),\n                textTransform: $input.css(\"text-transform\")\n            }).insertAfter($input);\n        }\n        function areQueriesEquivalent(a, b) {\n            return Input.normalizeQuery(a) === Input.normalizeQuery(b);\n        }\n        function withModifier($e) {\n            return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\n        }\n    }();\n    var Dataset = function() {\n        \"use strict\";\n        var keys, nameGenerator;\n        keys = {\n            dataset: \"tt-selectable-dataset\",\n            val: \"tt-selectable-display\",\n            obj: \"tt-selectable-object\"\n        };\n        nameGenerator = _.getIdGenerator();\n        function Dataset(o, www) {\n            o = o || {};\n            o.templates = o.templates || {};\n            o.templates.notFound = o.templates.notFound || o.templates.empty;\n            if (!o.source) {\n                $.error(\"missing source\");\n            }\n            if (!o.node) {\n                $.error(\"missing node\");\n            }\n            if (o.name && !isValidName(o.name)) {\n                $.error(\"invalid dataset name: \" + o.name);\n            }\n            www.mixin(this);\n            this.highlight = !!o.highlight;\n            this.name = _.toStr(o.name || nameGenerator());\n            this.limit = o.limit || 5;\n            this.displayFn = getDisplayFn(o.display || o.displayKey);\n            this.templates = getTemplates(o.templates, this.displayFn);\n            this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\n            this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\n            this._resetLastSuggestion();\n            this.$el = $(o.node).attr(\"role\", \"presentation\").addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\n        }\n        Dataset.extractData = function extractData(el) {\n            var $el = $(el);\n            if ($el.data(keys.obj)) {\n                return {\n                    dataset: $el.data(keys.dataset) || \"\",\n                    val: $el.data(keys.val) || \"\",\n                    obj: $el.data(keys.obj) || null\n                };\n            }\n            return null;\n        };\n        _.mixin(Dataset.prototype, EventEmitter, {\n            _overwrite: function overwrite(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (this.async && this.templates.pending) {\n                    this._renderPending(query);\n                } else if (!this.async && this.templates.notFound) {\n                    this._renderNotFound(query);\n                } else {\n                    this._empty();\n                }\n                this.trigger(\"rendered\", suggestions, false, this.name);\n            },\n            _append: function append(query, suggestions) {\n                suggestions = suggestions || [];\n                if (suggestions.length && this.$lastSuggestion.length) {\n                    this._appendSuggestions(query, suggestions);\n                } else if (suggestions.length) {\n                    this._renderSuggestions(query, suggestions);\n                } else if (!this.$lastSuggestion.length && this.templates.notFound) {\n                    this._renderNotFound(query);\n                }\n                this.trigger(\"rendered\", suggestions, true, this.name);\n            },\n            _renderSuggestions: function renderSuggestions(query, suggestions) {\n                var $fragment;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                this.$lastSuggestion = $fragment.children().last();\n                this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\n            },\n            _appendSuggestions: function appendSuggestions(query, suggestions) {\n                var $fragment, $lastSuggestion;\n                $fragment = this._getSuggestionsFragment(query, suggestions);\n                $lastSuggestion = $fragment.children().last();\n                this.$lastSuggestion.after($fragment);\n                this.$lastSuggestion = $lastSuggestion;\n            },\n            _renderPending: function renderPending(query) {\n                var template = this.templates.pending;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _renderNotFound: function renderNotFound(query) {\n                var template = this.templates.notFound;\n                this._resetLastSuggestion();\n                template && this.$el.html(template({\n                    query: query,\n                    dataset: this.name\n                }));\n            },\n            _empty: function empty() {\n                this.$el.empty();\n                this._resetLastSuggestion();\n            },\n            _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\n                var that = this, fragment;\n                fragment = document.createDocumentFragment();\n                _.each(suggestions, function getSuggestionNode(suggestion) {\n                    var $el, context;\n                    context = that._injectQuery(query, suggestion);\n                    $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\n                    fragment.appendChild($el[0]);\n                });\n                this.highlight && highlight({\n                    className: this.classes.highlight,\n                    node: fragment,\n                    pattern: query\n                });\n                return $(fragment);\n            },\n            _getFooter: function getFooter(query, suggestions) {\n                return this.templates.footer ? this.templates.footer({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _getHeader: function getHeader(query, suggestions) {\n                return this.templates.header ? this.templates.header({\n                    query: query,\n                    suggestions: suggestions,\n                    dataset: this.name\n                }) : null;\n            },\n            _resetLastSuggestion: function resetLastSuggestion() {\n                this.$lastSuggestion = $();\n            },\n            _injectQuery: function injectQuery(query, obj) {\n                return _.isObject(obj) ? _.mixin({\n                    _query: query\n                }, obj) : obj;\n            },\n            update: function update(query) {\n                var that = this, canceled = false, syncCalled = false, rendered = 0;\n                this.cancel();\n                this.cancel = function cancel() {\n                    canceled = true;\n                    that.cancel = $.noop;\n                    that.async && that.trigger(\"asyncCanceled\", query, that.name);\n                };\n                this.source(query, sync, async);\n                !syncCalled && sync([]);\n                function sync(suggestions) {\n                    if (syncCalled) {\n                        return;\n                    }\n                    syncCalled = true;\n                    suggestions = (suggestions || []).slice(0, that.limit);\n                    rendered = suggestions.length;\n                    that._overwrite(query, suggestions);\n                    if (rendered < that.limit && that.async) {\n                        that.trigger(\"asyncRequested\", query, that.name);\n                    }\n                }\n                function async(suggestions) {\n                    suggestions = suggestions || [];\n                    if (!canceled && rendered < that.limit) {\n                        that.cancel = $.noop;\n                        var idx = Math.abs(rendered - that.limit);\n                        rendered += idx;\n                        that._append(query, suggestions.slice(0, idx));\n                        that.async && that.trigger(\"asyncReceived\", query, that.name);\n                    }\n                }\n            },\n            cancel: $.noop,\n            clear: function clear() {\n                this._empty();\n                this.cancel();\n                this.trigger(\"cleared\");\n            },\n            isEmpty: function isEmpty() {\n                return this.$el.is(\":empty\");\n            },\n            destroy: function destroy() {\n                this.$el = $(\"<div>\");\n            }\n        });\n        return Dataset;\n        function getDisplayFn(display) {\n            display = display || _.stringify;\n            return _.isFunction(display) ? display : displayFn;\n            function displayFn(obj) {\n                return obj[display];\n            }\n        }\n        function getTemplates(templates, displayFn) {\n            return {\n                notFound: templates.notFound && _.templatify(templates.notFound),\n                pending: templates.pending && _.templatify(templates.pending),\n                header: templates.header && _.templatify(templates.header),\n                footer: templates.footer && _.templatify(templates.footer),\n                suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate\n            };\n            function userSuggestionTemplate(context) {\n                var template = templates.suggestion;\n                return $(template(context)).attr(\"id\", _.guid());\n            }\n            function suggestionTemplate(context) {\n                return $('<div role=\"option\">').attr(\"id\", _.guid()).text(displayFn(context));\n            }\n        }\n        function isValidName(str) {\n            return /^[_a-zA-Z0-9-]+$/.test(str);\n        }\n    }();\n    var Menu = function() {\n        \"use strict\";\n        function Menu(o, www) {\n            var that = this;\n            o = o || {};\n            if (!o.node) {\n                $.error(\"node is required\");\n            }\n            www.mixin(this);\n            this.$node = $(o.node);\n            this.query = null;\n            this.datasets = _.map(o.datasets, initializeDataset);\n            function initializeDataset(oDataset) {\n                var node = that.$node.find(oDataset.node).first();\n                oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\n                return new Dataset(oDataset, www);\n            }\n        }\n        _.mixin(Menu.prototype, EventEmitter, {\n            _onSelectableClick: function onSelectableClick($e) {\n                this.trigger(\"selectableClicked\", $($e.currentTarget));\n            },\n            _onRendered: function onRendered(type, dataset, suggestions, async) {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetRendered\", dataset, suggestions, async);\n            },\n            _onCleared: function onCleared() {\n                this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\n                this.trigger(\"datasetCleared\");\n            },\n            _propagate: function propagate() {\n                this.trigger.apply(this, arguments);\n            },\n            _allDatasetsEmpty: function allDatasetsEmpty() {\n                return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {\n                    var isEmpty = dataset.isEmpty();\n                    this.$node.attr(\"aria-expanded\", !isEmpty);\n                    return isEmpty;\n                }, this));\n            },\n            _getSelectables: function getSelectables() {\n                return this.$node.find(this.selectors.selectable);\n            },\n            _removeCursor: function _removeCursor() {\n                var $selectable = this.getActiveSelectable();\n                $selectable && $selectable.removeClass(this.classes.cursor);\n            },\n            _ensureVisible: function ensureVisible($el) {\n                var elTop, elBottom, nodeScrollTop, nodeHeight;\n                elTop = $el.position().top;\n                elBottom = elTop + $el.outerHeight(true);\n                nodeScrollTop = this.$node.scrollTop();\n                nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\n                if (elTop < 0) {\n                    this.$node.scrollTop(nodeScrollTop + elTop);\n                } else if (nodeHeight < elBottom) {\n                    this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\n                }\n            },\n            bind: function() {\n                var that = this, onSelectableClick;\n                onSelectableClick = _.bind(this._onSelectableClick, this);\n                this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\n                this.$node.on(\"mouseover\", this.selectors.selectable, function() {\n                    that.setCursor($(this));\n                });\n                this.$node.on(\"mouseleave\", function() {\n                    that._removeCursor();\n                });\n                _.each(this.datasets, function(dataset) {\n                    dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                return this.$node.hasClass(this.classes.open);\n            },\n            open: function open() {\n                this.$node.scrollTop(0);\n                this.$node.addClass(this.classes.open);\n            },\n            close: function close() {\n                this.$node.attr(\"aria-expanded\", false);\n                this.$node.removeClass(this.classes.open);\n                this._removeCursor();\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.attr(\"dir\", dir);\n            },\n            selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\n                var $selectables, $oldCursor, oldIndex, newIndex;\n                $oldCursor = this.getActiveSelectable();\n                $selectables = this._getSelectables();\n                oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\n                newIndex = oldIndex + delta;\n                newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\n                newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\n                return newIndex === -1 ? null : $selectables.eq(newIndex);\n            },\n            setCursor: function setCursor($selectable) {\n                this._removeCursor();\n                if ($selectable = $selectable && $selectable.first()) {\n                    $selectable.addClass(this.classes.cursor);\n                    this._ensureVisible($selectable);\n                }\n            },\n            getSelectableData: function getSelectableData($el) {\n                return $el && $el.length ? Dataset.extractData($el) : null;\n            },\n            getActiveSelectable: function getActiveSelectable() {\n                var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\n                return $selectable.length ? $selectable : null;\n            },\n            getTopSelectable: function getTopSelectable() {\n                var $selectable = this._getSelectables().first();\n                return $selectable.length ? $selectable : null;\n            },\n            update: function update(query) {\n                var isValidUpdate = query !== this.query;\n                if (isValidUpdate) {\n                    this.query = query;\n                    _.each(this.datasets, updateDataset);\n                }\n                return isValidUpdate;\n                function updateDataset(dataset) {\n                    dataset.update(query);\n                }\n            },\n            empty: function empty() {\n                _.each(this.datasets, clearDataset);\n                this.query = null;\n                this.$node.addClass(this.classes.empty);\n                function clearDataset(dataset) {\n                    dataset.clear();\n                }\n            },\n            destroy: function destroy() {\n                this.$node.off(\".tt\");\n                this.$node = $(\"<div>\");\n                _.each(this.datasets, destroyDataset);\n                function destroyDataset(dataset) {\n                    dataset.destroy();\n                }\n            }\n        });\n        return Menu;\n    }();\n    var Status = function() {\n        \"use strict\";\n        function Status(options) {\n            this.$el = $(\"<span></span>\", {\n                role: \"status\",\n                \"aria-live\": \"polite\"\n            }).css({\n                position: \"absolute\",\n                padding: \"0\",\n                border: \"0\",\n                height: \"1px\",\n                width: \"1px\",\n                \"margin-bottom\": \"-1px\",\n                \"margin-right\": \"-1px\",\n                overflow: \"hidden\",\n                clip: \"rect(0 0 0 0)\",\n                \"white-space\": \"nowrap\"\n            });\n            options.$input.after(this.$el);\n            _.each(options.menu.datasets, _.bind(function(dataset) {\n                if (dataset.onSync) {\n                    dataset.onSync(\"rendered\", _.bind(this.update, this));\n                    dataset.onSync(\"cleared\", _.bind(this.cleared, this));\n                }\n            }, this));\n        }\n        _.mixin(Status.prototype, {\n            update: function update(event, suggestions) {\n                var length = suggestions.length;\n                var words;\n                if (length === 1) {\n                    words = {\n                        result: \"result\",\n                        is: \"is\"\n                    };\n                } else {\n                    words = {\n                        result: \"results\",\n                        is: \"are\"\n                    };\n                }\n                this.$el.text(length + \" \" + words.result + \" \" + words.is + \" available, use up and down arrow keys to navigate.\");\n            },\n            cleared: function() {\n                this.$el.text(\"\");\n            }\n        });\n        return Status;\n    }();\n    var DefaultMenu = function() {\n        \"use strict\";\n        var s = Menu.prototype;\n        function DefaultMenu() {\n            Menu.apply(this, [].slice.call(arguments, 0));\n        }\n        _.mixin(DefaultMenu.prototype, Menu.prototype, {\n            open: function open() {\n                !this._allDatasetsEmpty() && this._show();\n                return s.open.apply(this, [].slice.call(arguments, 0));\n            },\n            close: function close() {\n                this._hide();\n                return s.close.apply(this, [].slice.call(arguments, 0));\n            },\n            _onRendered: function onRendered() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onRendered.apply(this, [].slice.call(arguments, 0));\n            },\n            _onCleared: function onCleared() {\n                if (this._allDatasetsEmpty()) {\n                    this._hide();\n                } else {\n                    this.isOpen() && this._show();\n                }\n                return s._onCleared.apply(this, [].slice.call(arguments, 0));\n            },\n            setLanguageDirection: function setLanguageDirection(dir) {\n                this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\n                return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\n            },\n            _hide: function hide() {\n                this.$node.hide();\n            },\n            _show: function show() {\n                this.$node.css(\"display\", \"block\");\n            }\n        });\n        return DefaultMenu;\n    }();\n    var Typeahead = function() {\n        \"use strict\";\n        function Typeahead(o, www) {\n            var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\n            o = o || {};\n            if (!o.input) {\n                $.error(\"missing input\");\n            }\n            if (!o.menu) {\n                $.error(\"missing menu\");\n            }\n            if (!o.eventBus) {\n                $.error(\"missing event bus\");\n            }\n            www.mixin(this);\n            this.eventBus = o.eventBus;\n            this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\n            this.input = o.input;\n            this.menu = o.menu;\n            this.enabled = true;\n            this.autoselect = !!o.autoselect;\n            this.active = false;\n            this.input.hasFocus() && this.activate();\n            this.dir = this.input.getLangDir();\n            this._hacks();\n            this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\n            onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\n            onBlurred = c(this, \"deactivate\", \"_onBlurred\");\n            onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\n            onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\n            onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\n            onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\n            onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\n            onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\n            onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\n            onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\n            onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\n            this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\n        }\n        _.mixin(Typeahead.prototype, {\n            _hacks: function hacks() {\n                var $input, $menu;\n                $input = this.input.$input || $(\"<div>\");\n                $menu = this.menu.$node || $(\"<div>\");\n                $input.on(\"blur.tt\", function($e) {\n                    var active, isActive, hasActive;\n                    active = document.activeElement;\n                    isActive = $menu.is(active);\n                    hasActive = $menu.has(active).length > 0;\n                    if (_.isMsie() && (isActive || hasActive)) {\n                        $e.preventDefault();\n                        $e.stopImmediatePropagation();\n                        _.defer(function() {\n                            $input.focus();\n                        });\n                    }\n                });\n                $menu.on(\"mousedown.tt\", function($e) {\n                    $e.preventDefault();\n                });\n            },\n            _onSelectableClicked: function onSelectableClicked(type, $el) {\n                this.select($el);\n            },\n            _onDatasetCleared: function onDatasetCleared() {\n                this._updateHint();\n            },\n            _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {\n                this._updateHint();\n                if (this.autoselect) {\n                    var cursorClass = this.selectors.cursor.substr(1);\n                    this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass);\n                }\n                this.eventBus.trigger(\"render\", suggestions, async, dataset);\n            },\n            _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\n                this.eventBus.trigger(\"asyncrequest\", query, dataset);\n            },\n            _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\n                this.eventBus.trigger(\"asynccancel\", query, dataset);\n            },\n            _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\n                this.eventBus.trigger(\"asyncreceive\", query, dataset);\n            },\n            _onFocused: function onFocused() {\n                this._minLengthMet() && this.menu.update(this.input.getQuery());\n            },\n            _onBlurred: function onBlurred() {\n                if (this.input.hasQueryChangedSinceLastFocus()) {\n                    this.eventBus.trigger(\"change\", this.input.getQuery());\n                }\n            },\n            _onEnterKeyed: function onEnterKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    if (this.select($selectable)) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                } else if (this.autoselect) {\n                    if (this.select(this.menu.getTopSelectable())) {\n                        $e.preventDefault();\n                        $e.stopPropagation();\n                    }\n                }\n            },\n            _onTabKeyed: function onTabKeyed(type, $e) {\n                var $selectable;\n                if ($selectable = this.menu.getActiveSelectable()) {\n                    this.select($selectable) && $e.preventDefault();\n                } else if (this.autoselect) {\n                    if ($selectable = this.menu.getTopSelectable()) {\n                        this.autocomplete($selectable) && $e.preventDefault();\n                    }\n                }\n            },\n            _onEscKeyed: function onEscKeyed() {\n                this.close();\n            },\n            _onUpKeyed: function onUpKeyed() {\n                this.moveCursor(-1);\n            },\n            _onDownKeyed: function onDownKeyed() {\n                this.moveCursor(+1);\n            },\n            _onLeftKeyed: function onLeftKeyed() {\n                if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onRightKeyed: function onRightKeyed() {\n                if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\n                    this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\n                }\n            },\n            _onQueryChanged: function onQueryChanged(e, query) {\n                this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\n            },\n            _onWhitespaceChanged: function onWhitespaceChanged() {\n                this._updateHint();\n            },\n            _onLangDirChanged: function onLangDirChanged(e, dir) {\n                if (this.dir !== dir) {\n                    this.dir = dir;\n                    this.menu.setLanguageDirection(dir);\n                }\n            },\n            _openIfActive: function openIfActive() {\n                this.isActive() && this.open();\n            },\n            _minLengthMet: function minLengthMet(query) {\n                query = _.isString(query) ? query : this.input.getQuery() || \"\";\n                return query.length >= this.minLength;\n            },\n            _updateHint: function updateHint() {\n                var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\n                $selectable = this.menu.getTopSelectable();\n                data = this.menu.getSelectableData($selectable);\n                val = this.input.getInputValue();\n                if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\n                    query = Input.normalizeQuery(val);\n                    escapedQuery = _.escapeRegExChars(query);\n                    frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\n                    match = frontMatchRegEx.exec(data.val);\n                    match && this.input.setHint(val + match[1]);\n                } else {\n                    this.input.clearHint();\n                }\n            },\n            isEnabled: function isEnabled() {\n                return this.enabled;\n            },\n            enable: function enable() {\n                this.enabled = true;\n            },\n            disable: function disable() {\n                this.enabled = false;\n            },\n            isActive: function isActive() {\n                return this.active;\n            },\n            activate: function activate() {\n                if (this.isActive()) {\n                    return true;\n                } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\n                    return false;\n                } else {\n                    this.active = true;\n                    this.eventBus.trigger(\"active\");\n                    return true;\n                }\n            },\n            deactivate: function deactivate() {\n                if (!this.isActive()) {\n                    return true;\n                } else if (this.eventBus.before(\"idle\")) {\n                    return false;\n                } else {\n                    this.active = false;\n                    this.close();\n                    this.eventBus.trigger(\"idle\");\n                    return true;\n                }\n            },\n            isOpen: function isOpen() {\n                return this.menu.isOpen();\n            },\n            open: function open() {\n                if (!this.isOpen() && !this.eventBus.before(\"open\")) {\n                    this.input.setAriaExpanded(true);\n                    this.menu.open();\n                    this._updateHint();\n                    this.eventBus.trigger(\"open\");\n                }\n                return this.isOpen();\n            },\n            close: function close() {\n                if (this.isOpen() && !this.eventBus.before(\"close\")) {\n                    this.input.setAriaExpanded(false);\n                    this.menu.close();\n                    this.input.clearHint();\n                    this.input.resetInputValue();\n                    this.eventBus.trigger(\"close\");\n                }\n                return !this.isOpen();\n            },\n            setVal: function setVal(val) {\n                this.input.setQuery(_.toStr(val));\n            },\n            getVal: function getVal() {\n                return this.input.getQuery();\n            },\n            select: function select($selectable) {\n                var data = this.menu.getSelectableData($selectable);\n                if (data && !this.eventBus.before(\"select\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val, true);\n                    this.eventBus.trigger(\"select\", data.obj, data.dataset);\n                    this.close();\n                    return true;\n                }\n                return false;\n            },\n            autocomplete: function autocomplete($selectable) {\n                var query, data, isValid;\n                query = this.input.getQuery();\n                data = this.menu.getSelectableData($selectable);\n                isValid = data && query !== data.val;\n                if (isValid && !this.eventBus.before(\"autocomplete\", data.obj, data.dataset)) {\n                    this.input.setQuery(data.val);\n                    this.eventBus.trigger(\"autocomplete\", data.obj, data.dataset);\n                    return true;\n                }\n                return false;\n            },\n            moveCursor: function moveCursor(delta) {\n                var query, $candidate, data, suggestion, datasetName, cancelMove, id;\n                query = this.input.getQuery();\n                $candidate = this.menu.selectableRelativeToCursor(delta);\n                data = this.menu.getSelectableData($candidate);\n                suggestion = data ? data.obj : null;\n                datasetName = data ? data.dataset : null;\n                id = $candidate ? $candidate.attr(\"id\") : null;\n                this.input.trigger(\"cursorchange\", id);\n                cancelMove = this._minLengthMet() && this.menu.update(query);\n                if (!cancelMove && !this.eventBus.before(\"cursorchange\", suggestion, datasetName)) {\n                    this.menu.setCursor($candidate);\n                    if (data) {\n                        if (typeof data.val === \"string\") {\n                            this.input.setInputValue(data.val);\n                        }\n                    } else {\n                        this.input.resetInputValue();\n                        this._updateHint();\n                    }\n                    this.eventBus.trigger(\"cursorchange\", suggestion, datasetName);\n                    return true;\n                }\n                return false;\n            },\n            destroy: function destroy() {\n                this.input.destroy();\n                this.menu.destroy();\n            }\n        });\n        return Typeahead;\n        function c(ctx) {\n            var methods = [].slice.call(arguments, 1);\n            return function() {\n                var args = [].slice.call(arguments);\n                _.each(methods, function(method) {\n                    return ctx[method].apply(ctx, args);\n                });\n            };\n        }\n    }();\n    (function() {\n        \"use strict\";\n        var old, keys, methods;\n        old = $.fn.typeahead;\n        keys = {\n            www: \"tt-www\",\n            attrs: \"tt-attrs\",\n            typeahead: \"tt-typeahead\"\n        };\n        methods = {\n            initialize: function initialize(o, datasets) {\n                var www;\n                datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\n                o = o || {};\n                www = WWW(o.classNames);\n                return this.each(attach);\n                function attach() {\n                    var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;\n                    _.each(datasets, function(d) {\n                        d.highlight = !!o.highlight;\n                    });\n                    $input = $(this);\n                    $wrapper = $(www.html.wrapper);\n                    $hint = $elOrNull(o.hint);\n                    $menu = $elOrNull(o.menu);\n                    defaultHint = o.hint !== false && !$hint;\n                    defaultMenu = o.menu !== false && !$menu;\n                    defaultHint && ($hint = buildHintFromInput($input, www));\n                    defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\n                    $hint && $hint.val(\"\");\n                    $input = prepInput($input, www);\n                    if (defaultHint || defaultMenu) {\n                        $wrapper.css(www.css.wrapper);\n                        $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\n                        $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\n                    }\n                    MenuConstructor = defaultMenu ? DefaultMenu : Menu;\n                    eventBus = new EventBus({\n                        el: $input\n                    });\n                    input = new Input({\n                        hint: $hint,\n                        input: $input,\n                        menu: $menu\n                    }, www);\n                    menu = new MenuConstructor({\n                        node: $menu,\n                        datasets: datasets\n                    }, www);\n                    status = new Status({\n                        $input: $input,\n                        menu: menu\n                    });\n                    typeahead = new Typeahead({\n                        input: input,\n                        menu: menu,\n                        eventBus: eventBus,\n                        minLength: o.minLength,\n                        autoselect: o.autoselect\n                    }, www);\n                    $input.data(keys.www, www);\n                    $input.data(keys.typeahead, typeahead);\n                }\n            },\n            isEnabled: function isEnabled() {\n                var enabled;\n                ttEach(this.first(), function(t) {\n                    enabled = t.isEnabled();\n                });\n                return enabled;\n            },\n            enable: function enable() {\n                ttEach(this, function(t) {\n                    t.enable();\n                });\n                return this;\n            },\n            disable: function disable() {\n                ttEach(this, function(t) {\n                    t.disable();\n                });\n                return this;\n            },\n            isActive: function isActive() {\n                var active;\n                ttEach(this.first(), function(t) {\n                    active = t.isActive();\n                });\n                return active;\n            },\n            activate: function activate() {\n                ttEach(this, function(t) {\n                    t.activate();\n                });\n                return this;\n            },\n            deactivate: function deactivate() {\n                ttEach(this, function(t) {\n                    t.deactivate();\n                });\n                return this;\n            },\n            isOpen: function isOpen() {\n                var open;\n                ttEach(this.first(), function(t) {\n                    open = t.isOpen();\n                });\n                return open;\n            },\n            open: function open() {\n                ttEach(this, function(t) {\n                    t.open();\n                });\n                return this;\n            },\n            close: function close() {\n                ttEach(this, function(t) {\n                    t.close();\n                });\n                return this;\n            },\n            select: function select(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.select($el);\n                });\n                return success;\n            },\n            autocomplete: function autocomplete(el) {\n                var success = false, $el = $(el);\n                ttEach(this.first(), function(t) {\n                    success = t.autocomplete($el);\n                });\n                return success;\n            },\n            moveCursor: function moveCursoe(delta) {\n                var success = false;\n                ttEach(this.first(), function(t) {\n                    success = t.moveCursor(delta);\n                });\n                return success;\n            },\n            val: function val(newVal) {\n                var query;\n                if (!arguments.length) {\n                    ttEach(this.first(), function(t) {\n                        query = t.getVal();\n                    });\n                    return query;\n                } else {\n                    ttEach(this, function(t) {\n                        t.setVal(_.toStr(newVal));\n                    });\n                    return this;\n                }\n            },\n            destroy: function destroy() {\n                ttEach(this, function(typeahead, $input) {\n                    revert($input);\n                    typeahead.destroy();\n                });\n                return this;\n            }\n        };\n        $.fn.typeahead = function(method) {\n            if (methods[method]) {\n                return methods[method].apply(this, [].slice.call(arguments, 1));\n            } else {\n                return methods.initialize.apply(this, arguments);\n            }\n        };\n        $.fn.typeahead.noConflict = function noConflict() {\n            $.fn.typeahead = old;\n            return this;\n        };\n        function ttEach($els, fn) {\n            $els.each(function() {\n                var $input = $(this), typeahead;\n                (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\n            });\n        }\n        function buildHintFromInput($input, www) {\n            return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({\n                readonly: true,\n                required: false\n            }).removeAttr(\"id name placeholder\").removeClass(\"required\").attr({\n                spellcheck: \"false\",\n                tabindex: -1\n            });\n        }\n        function prepInput($input, www) {\n            $input.data(keys.attrs, {\n                dir: $input.attr(\"dir\"),\n                autocomplete: $input.attr(\"autocomplete\"),\n                spellcheck: $input.attr(\"spellcheck\"),\n                style: $input.attr(\"style\")\n            });\n            $input.addClass(www.classes.input).attr({\n                spellcheck: false\n            });\n            try {\n                !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\n            } catch (e) {}\n            return $input;\n        }\n        function getBackgroundStyles($el) {\n            return {\n                backgroundAttachment: $el.css(\"background-attachment\"),\n                backgroundClip: $el.css(\"background-clip\"),\n                backgroundColor: $el.css(\"background-color\"),\n                backgroundImage: $el.css(\"background-image\"),\n                backgroundOrigin: $el.css(\"background-origin\"),\n                backgroundPosition: $el.css(\"background-position\"),\n                backgroundRepeat: $el.css(\"background-repeat\"),\n                backgroundSize: $el.css(\"background-size\")\n            };\n        }\n        function revert($input) {\n            var www, $wrapper;\n            www = $input.data(keys.www);\n            $wrapper = $input.parent().filter(www.selectors.wrapper);\n            _.each($input.data(keys.attrs), function(val, key) {\n                _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\n            });\n            $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\n            if ($wrapper.length) {\n                $input.detach().insertAfter($wrapper);\n                $wrapper.remove();\n            }\n        }\n        function $elOrNull(obj) {\n            var isValid, $el;\n            isValid = _.isJQuery(obj) || _.isElement(obj);\n            $el = isValid ? $(obj).first() : [];\n            return $el.length ? $el : null;\n        }\n    })();\n});"
  },
  {
    "path": "docs/search.json",
    "content": "{\"Other%20Typealiases.html#/s:7RxSwift0A10Observablea\":{\"name\":\"RxObservable\",\"abstract\":\"<p>A type-erased <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/ObservableType.html\\\">ObservableType</a></code>.</p>\"},\"Other%20Typealiases.html#/s:7RxSwift0A12TimeIntervala\":{\"name\":\"RxTimeInterval\",\"abstract\":\"<p>Undocumented</p>\"},\"Other%20Typealiases.html#/s:7RxSwift0A4Timea\":{\"name\":\"RxTime\",\"abstract\":\"<p>Type that represents absolute time in the context of RxSwift.</p>\"},\"Other%20Typealiases.html#/s:7RxSwift0A15AbstractIntegera\":{\"name\":\"RxAbstractInteger\",\"abstract\":\"<p>Undocumented</p>\"},\"Other%20Typealiases.html#/s:7RxSwift11SingleEventa\":{\"name\":\"SingleEvent\",\"abstract\":\"<p>Undocumented</p>\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP5TraitQa\":{\"name\":\"Trait\",\"abstract\":\"<p>Additional constraints</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP7ElementQa\":{\"name\":\"Element\",\"abstract\":\"<p>Sequence element type</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypeP09primitiveD0AA0cD0Vy5TraitQz7ElementQzGvp\":{\"name\":\"primitiveSequence\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA06SingleI0Oqd__GAQlF\":{\"name\":\"andThen(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAA05MaybeI0Oqd__GAQlF\":{\"name\":\"andThen(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA0cD0VyAiEGAOF\":{\"name\":\"andThen(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE7andThenyAA10ObservableCyqd__GAOlF\":{\"name\":\"andThen(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE0H8Observera\":{\"name\":\"CompletableObserver\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6create9subscribeAA0cD0VyAiEGAA10Disposable_pyAA0H5EventOcc_tFZ\":{\"name\":\"create(subscribe:)\",\"abstract\":\"<p>Creates an observable sequence from a specified subscribe method implementation.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribeyAA10Disposable_pyAA0H5EventOcF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes <code>observer</code> to receive events for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe4with11onCompleted0L5Error0L8DisposedAA10Disposable_pqd___yqd__cSgyqd___s0N0_ptcSgARtRld__ClF\":{\"name\":\"subscribe(with:onCompleted:onError:onDisposed:)\",\"abstract\":\"<p>Subscribes a completion handler and an error handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE9subscribe11onCompleted0K5Error0K8DisposedAA10Disposable_pyycSg_ys0M0_pcSgAQtF\":{\"name\":\"subscribe(onCompleted:onError:onDisposed:)\",\"abstract\":\"<p>Subscribes a completion handler and an error handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5erroryAA0cD0VyAiEGs5Error_pFZ\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Returns an observable sequence that terminates with an <code>error</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5neverAA0cD0VyAiEGyFZ\":{\"name\":\"never()\",\"abstract\":\"<p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5emptyAA0cD0VyAiEGyFZ\":{\"name\":\"empty()\",\"abstract\":\"<p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE2do7onError05afterL00K9Completed0mN00K9Subscribe0K10Subscribed0K7DisposeAA0cD0VyAiEGys0L0_pKcSg_AXyyKcSgAYyycSgA2ZtF\":{\"name\":\"do(onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\",\"abstract\":\"<p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOF\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__STRd__AoFRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE6concatyAA0cD0VyAiEGAOd_tFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGqd__SlRd__AoFRtd__lFZ\":{\"name\":\"zip(_:)\",\"abstract\":\"<p>Merges the completion of all Completables from a collection into a single Completable.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGSayAOGFZ\":{\"name\":\"zip(_:)\",\"abstract\":\"<p>Merges the completion of all Completables from an array into a single Completable.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE3zipyAA0cD0VyAiEGAOd_tFZ\":{\"name\":\"zip(_:)\",\"abstract\":\"<p>Merges the completion of all Completables into a single Completable.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE0F8Observera\":{\"name\":\"MaybeObserver\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pyAA0F5EventOyAMGcc_tFZ\":{\"name\":\"create(subscribe:)\",\"abstract\":\"<p>Creates an observable sequence from a specified subscribe method implementation.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribeyAA10Disposable_pyAA0F5EventOy7ElementQzGcF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes <code>observer</code> to receive events for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe4with9onSuccess0J5Error0J9Completed0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0L0_ptcSgyqd__cSgATtRld__ClF\":{\"name\":\"subscribe(with:onSuccess:onError:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes a success handler, an error handler, and a completion handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I9Completed0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcSgyycSgAStF\":{\"name\":\"subscribe(onSuccess:onError:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes a success handler, an error handler, and a completion handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\":{\"name\":\"just(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\":{\"name\":\"just(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Returns an observable sequence that terminates with an <code>error</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\":{\"name\":\"never()\",\"abstract\":\"<p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5emptyAA0cD0VyAE7ElementQzGyFZ\":{\"name\":\"empty()\",\"abstract\":\"<p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE2do6onNext05afterJ00I5Error0kL00I9Completed0kM00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyAUKcSg_AWys0L0_pKcSgAYyyKcSgAZyycSgA_A_tF\":{\"name\":\"do(onNext:afterNext:onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\",\"abstract\":\"<p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE6filteryAA0cD0VyAE7ElementQzGSbALKcF\":{\"name\":\"filter(_:)\",\"abstract\":\"<p>Filters the elements of an observable sequence based on a predicate.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\":{\"name\":\"map(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new form.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE10compactMapyAA0cD0VyAEqd__Gqd__Sg7ElementQzKclF\":{\"name\":\"compactMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\":{\"name\":\"flatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty7defaultAA0cD0VyAA06SingleG0O7ElementQzGAO_tF\":{\"name\":\"ifEmpty(default:)\",\"abstract\":\"<p>Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAE7ElementQzGAN_tF\":{\"name\":\"ifEmpty(switchTo:)\",\"abstract\":\"<p>Returns the elements of the specified sequence or <code>other</code> sequence if the sequence is empty.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE7ifEmpty8switchToAA0cD0VyAA06SingleG0O7ElementQzGAP_tF\":{\"name\":\"ifEmpty(switchTo:)\",\"abstract\":\"<p>Returns the elements of the specified sequence or <code>other</code> sequence if the sequence is empty.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\":{\"name\":\"catchAndReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\":{\"name\":\"catchErrorJustReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create8detached8priority4workAA0cD0VyAE7ElementQzGSb_ScPSgAOyYaYbKctFZ\":{\"name\":\"create(detached:priority:work:)\",\"abstract\":\"<p>Creates a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\\\">Single</a></code> from the result of an asynchronous operation</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5value7ElementQzvp\":{\"name\":\"value\",\"abstract\":\"<p>Allows awaiting the success or failure of this <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\\\">Single</a></code>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE5value7ElementQzSgvp\":{\"name\":\"value\",\"abstract\":\"<p>Allows awaiting the success or failure of this <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\\\">Maybe</a></code>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs5NeverO7ElementRtzAA16CompletableTraitO0I0RtzrlE5valueytvp\":{\"name\":\"value\",\"abstract\":\"<p>Allows awaiting the success or failure of this <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\\\">Completable</a></code>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\":{\"name\":\"zip(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\":{\"name\":\"zip(_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip__14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAMqd___qd_0_tKctr0_lFZ\":{\"name\":\"zip(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_tGALyAGqd__G_ALyAGqd_0_Gtr0_lFZ\":{\"name\":\"zip(_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\":{\"name\":\"zip(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\":{\"name\":\"zip(_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip___14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAMqd___qd_0_qd_1_tKctr1_lFZ\":{\"name\":\"zip(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_Gtr1_lFZ\":{\"name\":\"zip(_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\":{\"name\":\"zip(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\":{\"name\":\"zip(_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAMqd___qd_0_qd_1_qd_2_tKctr2_lFZ\":{\"name\":\"zip(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_Gtr2_lFZ\":{\"name\":\"zip(_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\":{\"name\":\"zip(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\":{\"name\":\"zip(_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_____14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAMqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\":{\"name\":\"zip(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_Gtr3_lFZ\":{\"name\":\"zip(_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_Gtr4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip_______14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_Gtr5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA11SingleTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A10MaybeTraitO0G0RtzrlE3zip________14resultSelectorAA0cD0VyAE7ElementQzGAKyAEqd__G_AKyAEqd_0_GAKyAEqd_1_GAKyAEqd_2_GAKyAEqd_3_GAKyAEqd_4_GAKyAEqd_5_GAKyAEqd_6_GAMqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAyp7ElementRtzAA10MaybeTraitO0H0RtzrlE3zipyAA0cD0VyAGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tGALyAGqd__G_ALyAGqd_0_GALyAGqd_1_GALyAGqd_2_GALyAGqd_3_GALyAGqd_4_GALyAGqd_5_GALyAGqd_6_Gtr6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_9schedulerAA0cD0Vy5TraitQzAFG8Dispatch0M12TimeIntervalO_AA09SchedulerE0_ptFZ\":{\"name\":\"timer(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE0F8Observera\":{\"name\":\"SingleObserver\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6create9subscribeAA0cD0VyAE7ElementQzGAA10Disposable_pys6ResultOyAMs5Error_pGcc_tFZ\":{\"name\":\"create(subscribe:)\",\"abstract\":\"<p>Creates an observable sequence from a specified subscribe method implementation.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribeyAA10Disposable_pys6ResultOy7ElementQzs5Error_pGcF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes <code>observer</code> to receive events for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I5Error0I8DisposedAA10Disposable_py7ElementQzcSg_ys0K0_pcyycSgtF\":{\"name\":\"subscribe(onSuccess:onError:onDisposed:)\",\"abstract\":\"<p>Subscribes a success handler, and an error handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe4with9onSuccess0J7Failure0J8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s5Error_ptcSgyqd__cSgtRld__ClF\":{\"name\":\"subscribe(with:onSuccess:onFailure:onDisposed:)\",\"abstract\":\"<p>Subscribes a success handler, and an error handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE9subscribe9onSuccess0I7Failure0I8DisposedAA10Disposable_py7ElementQzcSg_ys5Error_pcSgyycSgtF\":{\"name\":\"subscribe(onSuccess:onFailure:onDisposed:)\",\"abstract\":\"<p>Subscribes a success handler, and an error handler for this sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4justyAA0cD0VyAE7ElementQzGALFZ\":{\"name\":\"just(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE4just_9schedulerAA0cD0VyAE7ElementQzGAM_AA018ImmediateSchedulerE0_ptFZ\":{\"name\":\"just(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5erroryAA0cD0VyAE7ElementQzGs5Error_pFZ\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Returns an observable sequence that terminates with an <code>error</code>.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE5neverAA0cD0VyAE7ElementQzGyFZ\":{\"name\":\"never()\",\"abstract\":\"<p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE2do9onSuccess05afterJ00I5Error0kL00I9Subscribe0I10Subscribed0I7DisposeAA0cD0VyAE7ElementQzGyASKcSg_AUys0L0_pKcSgAWyycSgA2XtF\":{\"name\":\"do(onSuccess:afterSuccess:onError:afterError:onSubscribe:onSubscribed:onDispose:)\",\"abstract\":\"<p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE6filteryAA0cD0VyAA05MaybeG0O7ElementQzGSbANKcF\":{\"name\":\"filter(_:)\",\"abstract\":\"<p>Filters the elements of an observable sequence based on a predicate.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3mapyAA0cD0VyAEqd__Gqd__7ElementQzKclF\":{\"name\":\"map(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new form.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE10compactMapyAA0cD0VyAA05MaybeG0Oqd__Gqd__Sg7ElementQzKclF\":{\"name\":\"compactMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7flatMapyAA0cD0VyAEqd__GAK7ElementQzKclF\":{\"name\":\"flatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE12flatMapMaybeyAA0cD0VyAA0jG0Oqd__GAM7ElementQzKclF\":{\"name\":\"flatMapMaybe(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE18flatMapCompletableyAA0cD0VyAA0jG0Os5NeverOGAO7ElementQzKcF\":{\"name\":\"flatMapCompletable(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zip_14resultSelectorAA0cD0VyAEqd_0_Gqd___qd_0_Say7ElementQzGKctSlRd__AKyAeNGAMRtd__r0_lFZ\":{\"name\":\"zip(_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE3zipyAA0cD0VyAESay7ElementQzGGqd__SlRd__AJyAeLGAKRtd__lFZ\":{\"name\":\"zip(_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE14catchAndReturnyAA0cD0VyAE7ElementQzGALF\":{\"name\":\"catchAndReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE20catchErrorJustReturnyAA0cD0VyAE7ElementQzGALF\":{\"name\":\"catchErrorJustReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE7asMaybeAA0cD0VyAA0iG0O7ElementQzGyF\":{\"name\":\"asMaybe()\",\"abstract\":\"<p>Converts <code>self</code> to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\\\">Maybe</a></code> trait.</p>\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/PrimitiveSequenceType.html#/s:7RxSwift21PrimitiveSequenceTypePA2A11SingleTraitO0G0RtzrlE13asCompletableAA0cD0VyAA0iG0Os5NeverOGyF\":{\"name\":\"asCompletable()\",\"abstract\":\"<p>Converts <code>self</code> to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbRxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\\\">Completable</a></code> trait, ignoring its emitted value if\",\"parent_name\":\"PrimitiveSequenceType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE13combineLatest_14resultSelectorAA0C0Vy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\":{\"name\":\"combineLatest(_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE13combineLatestyAA0C0VySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\":{\"name\":\"combineLatest(_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6valuesScSy7ElementQzGvp\":{\"name\":\"values\",\"abstract\":\"<p>Allows iterating over the values of an Infallible\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4justyAA0C0Vy7ElementQzGAHFZ\":{\"name\":\"just(_:)\",\"abstract\":\"<p>Returns an infallible sequence that contains a single element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4just_9schedulerAA0C0Vy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"just(_:scheduler:)\",\"abstract\":\"<p>Returns an infallible sequence that contains a single element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5neverAA0C0Vy7ElementQzGyFZ\":{\"name\":\"never()\",\"abstract\":\"<p>Returns a non-terminating infallible sequence, which can be used to denote an infinite duration.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5emptyAA0C0Vy7ElementQzGyFZ\":{\"name\":\"empty()\",\"abstract\":\"<p>Returns an empty infallible sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE8deferredyAA0C0Vy7ElementQzGAIyKcFZ\":{\"name\":\"deferred(_:)\",\"abstract\":\"<p>Returns an infallible sequence that invokes the specified factory function whenever a new observer subscribes.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6filteryAA0C0Vy7ElementQzGSbAHcF\":{\"name\":\"filter(_:)\",\"abstract\":\"<p>Filters the elements of an observable sequence based on a predicate.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3mapyAA0C0Vyqd__Gqd__7ElementQzclF\":{\"name\":\"map(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new form.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE10compactMapyAA0C0Vyqd__Gqd__Sg7ElementQzclF\":{\"name\":\"compactMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGqd__AHKcSQRd__lF\":{\"name\":\"distinctUntilChanged(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>keySelector</code>.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChangedyAA0C0Vy7ElementQzGSbAH_AHtKcF\":{\"name\":\"distinctUntilChanged(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>comparer</code>.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged_8comparerAA0C0Vy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\":{\"name\":\"distinctUntilChanged(_:comparer:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE20distinctUntilChanged2atAA0C0Vy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\":{\"name\":\"distinctUntilChanged(at:)\",\"abstract\":\"<p>Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE8debounce_9schedulerAA0C0Vy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"debounce(_:scheduler:)\",\"abstract\":\"<p>Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE8throttle_6latest9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\":{\"name\":\"throttle(_:latest:scheduler:)\",\"abstract\":\"<p>Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE7flatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\":{\"name\":\"flatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE13flatMapLatestyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\":{\"name\":\"flatMapLatest(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new sequence of observable sequences and then\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE12flatMapFirstyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\":{\"name\":\"flatMapFirst(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__AA021ObservableConvertibleD0Rd__AGQyd__AHRSlF\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__STRd__AiGRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE6concatyAA0C0Vy7ElementQzGAId_tFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE9concatMapyAA0C0Vy7ElementQyd__Gqd__AGQzcAA021ObservableConvertibleD0Rd__lF\":{\"name\":\"concatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGqd__SlRd__AiGRtd__lFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all observable sequences from collection into a single observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGSayAIGFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all infallible sequences from array into a single infallible sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5mergeyAA0C0Vy7ElementQzGAId_tFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all infallible sequences into a single infallible sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4scan4into11accumulatorAA0C0Vyqd__Gqd___yqd__z_7ElementQztctlF\":{\"name\":\"scan(into:accumulator:)\",\"abstract\":\"<p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4scan_11accumulatorAA0C0Vyqd__Gqd___qd__qd___7ElementQztctlF\":{\"name\":\"scan(_:accumulator:)\",\"abstract\":\"<p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE9startWithyAA0C0Vy7ElementQzGAHF\":{\"name\":\"startWith(_:)\",\"abstract\":\"<p>Prepends a value to an observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAaBRd__lF\":{\"name\":\"take(until:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4take5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\":{\"name\":\"take(until:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4take5until8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\":{\"name\":\"take(until:behavior:)\",\"abstract\":\"<p>Returns elements from an observable sequence until the specified condition is true.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4take5while8behaviorAA0C0Vy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\":{\"name\":\"take(while:behavior:)\",\"abstract\":\"<p>Returns elements from an observable sequence as long as a specified condition is true.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4takeyAA0C0Vy7ElementQzGSiF\":{\"name\":\"take(_:)\",\"abstract\":\"<p>Returns a specified number of contiguous elements from the start of an observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4take3for9schedulerAA0C0Vy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"take(for:scheduler:)\",\"abstract\":\"<p>Takes elements for the specified duration from the start of the infallible source sequence, using the specified scheduler to run timers.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4skip5whileAA0C0Vy7ElementQzGSbAIKc_tF\":{\"name\":\"skip(while:)\",\"abstract\":\"<p>Bypasses elements in an infallible sequence as long as a specified condition is true and then returns the remaining elements.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE4skip5untilAA0C0Vy7ElementQzGqd___tAA010ObservableD0Rd__lF\":{\"name\":\"skip(until:)\",\"abstract\":\"<p>Returns the elements from the source infallible sequence that are emitted after the other infallible sequence produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE5share6replay5scopeAA0C0Vy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\":{\"name\":\"share(replay:scope:)\",\"abstract\":\"<p>Returns an observable sequence that <strong>shares a single subscription to the underlying sequence</strong>, and immediately upon subscription replays  elements in buffer.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE14withUnretained_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\":{\"name\":\"withUnretained(_:resultSelector:)\",\"abstract\":\"<p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE14withUnretainedyAA0C0Vyqd___7ElementQztGqd__Rld__ClF\":{\"name\":\"withUnretained(_:)\",\"abstract\":\"<p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE14withLatestFrom_14resultSelectorAA0C0Vyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAaBRd__r0_lF\":{\"name\":\"withLatestFrom(_:resultSelector:)\",\"abstract\":\"<p>Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE14withLatestFromyAA0C0Vy7ElementQyd__Gqd__AaBRd__lF\":{\"name\":\"withLatestFrom(_:)\",\"abstract\":\"<p>Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when <code>self</code> emits an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip__14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAIqd___qd_0_tKctr0_lFZ\":{\"name\":\"zip(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip___14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAIqd___qd_0_qd_1_tKctr1_lFZ\":{\"name\":\"zip(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAIqd___qd_0_qd_1_qd_2_tKctr2_lFZ\":{\"name\":\"zip(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip_____14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAIqd___qd_0_qd_1_qd_2_qd_3_tKctr3_lFZ\":{\"name\":\"zip(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_tKctr4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip_______14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tKctr5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE3zip________14resultSelectorAA0C0Vy7ElementQzGAGyqd__G_AGyqd_0_GAGyqd_1_GAGyqd_2_GAGyqd_3_GAGyqd_4_GAGyqd_5_GAGyqd_6_GAIqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tKctr6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE9subscribe4with6onNext0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd__cSgAMtRld__ClF\":{\"name\":\"subscribe(with:onNext:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes an element handler, a completion handler and disposed handler to an observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE9subscribe6onNext0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_yycSgALtF\":{\"name\":\"subscribe(onNext:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes an element handler, a completion handler and disposed handler to an observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAE9subscribeyAA10Disposable_pyAA0C5EventOy7ElementQzGcF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an event handler to an observable sequence.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\":{\"name\":\"combineLatest(_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\":{\"name\":\"combineLatest(_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\":{\"name\":\"combineLatest(_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAAyp7ElementRtzrlE13combineLatestyAA0C0VyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/InfallibleType.html#/s:7RxSwift14InfallibleTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0VyAEGyF\":{\"name\":\"distinctUntilChanged()\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to equality operator.</p>\",\"parent_name\":\"InfallibleType\"},\"Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatibleP0C4BaseQa\":{\"name\":\"ReactiveBase\",\"abstract\":\"<p>Extended type</p>\",\"parent_name\":\"ReactiveCompatible\"},\"Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGmvpZ\":{\"name\":\"rx\",\"abstract\":\"<p>Reactive extensions.</p>\",\"parent_name\":\"ReactiveCompatible\"},\"Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatibleP2rxAA0C0Vy0C4BaseQzGvp\":{\"name\":\"rx\",\"abstract\":\"<p>Reactive extensions.</p>\",\"parent_name\":\"ReactiveCompatible\"},\"Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGmvpZ\":{\"name\":\"rx\",\"abstract\":\"<p>Reactive extensions.</p>\",\"parent_name\":\"ReactiveCompatible\"},\"Protocols/ReactiveCompatible.html#/s:7RxSwift18ReactiveCompatiblePAAE2rxAA0C0VyxGvp\":{\"name\":\"rx\",\"abstract\":\"<p>Reactive extensions.</p>\",\"parent_name\":\"ReactiveCompatible\"},\"Protocols/DataDecoder.html#/s:7RxSwift11DataDecoderP6decode_4fromqd__qd__m_10Foundation0C0VtKSeRd__lF\":{\"name\":\"decode(_:from:)\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"DataDecoder\"},\"Protocols/EventConvertible.html#/s:7RxSwift16EventConvertibleP7ElementQa\":{\"name\":\"Element\",\"abstract\":\"<p>Type of element in event</p>\",\"parent_name\":\"EventConvertible\"},\"Protocols/EventConvertible.html#/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\":{\"name\":\"event\",\"abstract\":\"<p>Event representation of this instance</p>\",\"parent_name\":\"EventConvertible\"},\"Protocols/EventConvertible.html\":{\"name\":\"EventConvertible\",\"abstract\":\"<p>A type that can be converted to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Event.html\\\">Event&lt;Element&gt;</a></code>.</p>\"},\"Protocols/DataDecoder.html\":{\"name\":\"DataDecoder\",\"abstract\":\"<p>Represents an entity capable of decoding raw <code>Data</code>\"},\"Protocols/ReactiveCompatible.html\":{\"name\":\"ReactiveCompatible\",\"abstract\":\"<p>A type that has reactive extensions.</p>\"},\"Protocols/InfallibleType.html\":{\"name\":\"InfallibleType\",\"abstract\":\"<p><code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Infallible.html\\\">Infallible</a></code> is an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code>-like push-style interface\"},\"Protocols/PrimitiveSequenceType.html\":{\"name\":\"PrimitiveSequenceType\",\"abstract\":\"<p>Observable sequences containing 0 or 1 element</p>\"},\"Extensions/AsyncSequence.html#/s:Sci7RxSwiftE12asObservable8priorityAA0D0Cy7ElementQzGScPSg_tF\":{\"name\":\"asObservable(priority:)\",\"abstract\":\"<p>Convert an <code>AsyncSequence</code> to an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code>.</p>\",\"parent_name\":\"AsyncSequence\"},\"Extensions/AsyncSequence.html\":{\"name\":\"AsyncSequence\"},\"Other%20Extensions.html#/s:10Foundation11JSONDecoderC\":{\"name\":\"JSONDecoder\"},\"Other%20Extensions.html#/s:10Foundation19PropertyListDecoderC\":{\"name\":\"PropertyListDecoder\"},\"Other%20Extensions.html#/c:objc(cs)NSObject\":{\"name\":\"NSObject\",\"abstract\":\"<p>Extend NSObject with <code>rx</code> proxy.</p>\"},\"Enums/MaybeEvent.html#/s:7RxSwift10MaybeEventO7successyACyxGxcAEmlF\":{\"name\":\"success(_:)\",\"abstract\":\"<p>One and only sequence element is produced. (underlying observable sequence emits: <code>.next(Element)</code>, <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/MaybeEvent.html#/s:7RxSwift10MaybeEventO9completedyACyxGAEmlF\\\">.completed</a></code>)</p>\",\"parent_name\":\"MaybeEvent\"},\"Enums/MaybeEvent.html#/s:7RxSwift10MaybeEventO5erroryACyxGs5Error_pcAEmlF\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Sequence terminated with an error. (underlying observable sequence emits: <code>.error(Error)</code>)</p>\",\"parent_name\":\"MaybeEvent\"},\"Enums/MaybeEvent.html#/s:7RxSwift10MaybeEventO9completedyACyxGAEmlF\":{\"name\":\"completed\",\"abstract\":\"<p>Sequence completed successfully.</p>\",\"parent_name\":\"MaybeEvent\"},\"Enums/CompletableEvent.html#/s:7RxSwift16CompletableEventO5erroryACs5Error_pcACmF\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Sequence terminated with an error. (underlying observable sequence emits: <code>.error(Error)</code>)</p>\",\"parent_name\":\"CompletableEvent\"},\"Enums/CompletableEvent.html#/s:7RxSwift16CompletableEventO9completedyA2CmF\":{\"name\":\"completed\",\"abstract\":\"<p>Sequence completed successfully.</p>\",\"parent_name\":\"CompletableEvent\"},\"Enums/InfallibleEvent.html#/s:7RxSwift15InfallibleEventO4nextyACyxGxcAEmlF\":{\"name\":\"next(_:)\",\"abstract\":\"<p>Next element is produced.</p>\",\"parent_name\":\"InfallibleEvent\"},\"Enums/InfallibleEvent.html#/s:7RxSwift15InfallibleEventO9completedyACyxGAEmlF\":{\"name\":\"completed\",\"abstract\":\"<p>Sequence completed successfully.</p>\",\"parent_name\":\"InfallibleEvent\"},\"Enums/InfallibleEvent.html#/s:7RxSwift16EventConvertibleP5eventAA0C0Oy7ElementQzGvp\":{\"name\":\"event\",\"parent_name\":\"InfallibleEvent\"},\"Enums/VirtualTimeComparison.html#/s:7RxSwift21VirtualTimeComparisonO8lessThanyA2CmF\":{\"name\":\"lessThan\",\"abstract\":\"<p>lhs &lt; rhs.</p>\",\"parent_name\":\"VirtualTimeComparison\"},\"Enums/VirtualTimeComparison.html#/s:7RxSwift21VirtualTimeComparisonO5equalyA2CmF\":{\"name\":\"equal\",\"abstract\":\"<p>lhs == rhs.</p>\",\"parent_name\":\"VirtualTimeComparison\"},\"Enums/VirtualTimeComparison.html#/s:7RxSwift21VirtualTimeComparisonO11greaterThanyA2CmF\":{\"name\":\"greaterThan\",\"abstract\":\"<p>lhs &gt; rhs.</p>\",\"parent_name\":\"VirtualTimeComparison\"},\"Enums/TakeBehavior.html#/s:7RxSwift12TakeBehaviorO9inclusiveyA2CmF\":{\"name\":\"inclusive\",\"abstract\":\"<p>Include the last element matching the predicate.</p>\",\"parent_name\":\"TakeBehavior\"},\"Enums/TakeBehavior.html#/s:7RxSwift12TakeBehaviorO9exclusiveyA2CmF\":{\"name\":\"exclusive\",\"abstract\":\"<p>Exclude the last element matching the predicate.</p>\",\"parent_name\":\"TakeBehavior\"},\"Enums/SubjectLifetimeScope.html#/s:7RxSwift20SubjectLifetimeScopeO14whileConnectedyA2CmF\":{\"name\":\"whileConnected\",\"abstract\":\"<p><strong>Each connection will have it&rsquo;s own subject instance to store replay events.</strong>\",\"parent_name\":\"SubjectLifetimeScope\"},\"Enums/SubjectLifetimeScope.html#/s:7RxSwift20SubjectLifetimeScopeO7foreveryA2CmF\":{\"name\":\"forever\",\"abstract\":\"<p><strong>One subject will store replay events for all connections to source.</strong>\",\"parent_name\":\"SubjectLifetimeScope\"},\"Enums/Resources.html#/total\":{\"name\":\"total\",\"abstract\":\"<p>Counts internal Rx resource allocations (Observables, Observers, Disposables, etc.). This provides a simple way to detect leaks during development.</p>\",\"parent_name\":\"Resources\"},\"Enums/Resources.html#/incrementTotal()\":{\"name\":\"incrementTotal()\",\"abstract\":\"<p>Increments <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Resources.html#/total\\\">Resources.total</a></code> resource count.</p>\",\"parent_name\":\"Resources\"},\"Enums/Resources.html#/decrementTotal()\":{\"name\":\"decrementTotal()\",\"abstract\":\"<p>Decrements <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Resources.html#/total\\\">Resources.total</a></code> resource count</p>\",\"parent_name\":\"Resources\"},\"Enums/Resources.html#/numberOfSerialDispatchQueueObservables\":{\"name\":\"numberOfSerialDispatchQueueObservables\",\"abstract\":\"<p>Counts number of <code>SerialDispatchQueueObservables</code>.</p>\",\"parent_name\":\"Resources\"},\"Enums/Hooks.html#/s:7RxSwift5HooksO22recordCallStackOnErrorSbvpZ\":{\"name\":\"recordCallStackOnError\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"Hooks\"},\"Enums/Hooks.html#/s:7RxSwift5HooksO19DefaultErrorHandlera\":{\"name\":\"DefaultErrorHandler\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"Hooks\"},\"Enums/Hooks.html#/s:7RxSwift5HooksO34CustomCaptureSubscriptionCallstacka\":{\"name\":\"CustomCaptureSubscriptionCallstack\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"Hooks\"},\"Enums/Hooks.html#/s:7RxSwift5HooksO19defaultErrorHandleryySaySSG_s0E0_ptcvpZ\":{\"name\":\"defaultErrorHandler\",\"abstract\":\"<p>Error handler called in case onError handler wasn&rsquo;t provided.</p>\",\"parent_name\":\"Hooks\"},\"Enums/Hooks.html#/s:7RxSwift5HooksO34customCaptureSubscriptionCallstackSaySSGycvpZ\":{\"name\":\"customCaptureSubscriptionCallstack\",\"abstract\":\"<p>Subscription callstack block to fetch custom callstack information.</p>\",\"parent_name\":\"Hooks\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO7unknownyA2CmF\":{\"name\":\"unknown\",\"abstract\":\"<p>Unknown error occurred.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO8disposedyACyXl_tcACmF\":{\"name\":\"disposed(object:)\",\"abstract\":\"<p>Performing an action on disposed object.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO8overflowyA2CmF\":{\"name\":\"overflow\",\"abstract\":\"<p>Arithmetic overflow error.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO18argumentOutOfRangeyA2CmF\":{\"name\":\"argumentOutOfRange\",\"abstract\":\"<p>Argument out of range error.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\":{\"name\":\"noElements\",\"abstract\":\"<p>Sequence doesn&rsquo;t contain any elements.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\":{\"name\":\"moreThanOneElement\",\"abstract\":\"<p>Sequence contains more than one element.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO7timeoutyA2CmF\":{\"name\":\"timeout\",\"abstract\":\"<p>Timeout error.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html#/s:7RxSwift0A5ErrorO16debugDescriptionSSvp\":{\"name\":\"debugDescription\",\"abstract\":\"<p>A textual representation of <code>self</code>, suitable for debugging.</p>\",\"parent_name\":\"RxError\"},\"Enums/RxError.html\":{\"name\":\"RxError\",\"abstract\":\"<p>Generic Rx error codes.</p>\"},\"Enums/Hooks.html\":{\"name\":\"Hooks\",\"abstract\":\"<p>RxSwift global hooks</p>\"},\"Enums/Resources.html\":{\"name\":\"Resources\",\"abstract\":\"<p>Resource utilization information</p>\"},\"Enums/SubjectLifetimeScope.html\":{\"name\":\"SubjectLifetimeScope\",\"abstract\":\"<p>Subject lifetime scope</p>\"},\"Enums/TakeBehavior.html\":{\"name\":\"TakeBehavior\",\"abstract\":\"<p>Behaviors for the take operator family.</p>\"},\"Enums/VirtualTimeComparison.html\":{\"name\":\"VirtualTimeComparison\",\"abstract\":\"<p>Virtual time comparison result.</p>\"},\"Enums/InfallibleEvent.html\":{\"name\":\"InfallibleEvent\",\"abstract\":\"<p>Undocumented</p>\"},\"Other%20Enums.html#/s:7RxSwift16CompletableTraitO\":{\"name\":\"CompletableTrait\",\"abstract\":\"<p>Sequence containing 0 elements</p>\"},\"Enums/CompletableEvent.html\":{\"name\":\"CompletableEvent\",\"abstract\":\"<p>Undocumented</p>\"},\"Other%20Enums.html#/s:7RxSwift10MaybeTraitO\":{\"name\":\"MaybeTrait\",\"abstract\":\"<p>Sequence containing 0 or 1 elements</p>\"},\"Enums/MaybeEvent.html\":{\"name\":\"MaybeEvent\",\"abstract\":\"<p>Undocumented</p>\"},\"Other%20Enums.html#/s:7RxSwift11SingleTraitO\":{\"name\":\"SingleTrait\",\"abstract\":\"<p>Sequence containing exactly 1 element</p>\"},\"Other%20Global%20Variables.html#/s:7RxSwift29maxTailRecursiveSinkStackSizeSivp\":{\"name\":\"maxTailRecursiveSinkStackSize\",\"abstract\":\"<p>Undocumented</p>\"},\"Classes/ConnectableObservable.html#/s:7RxSwift21ConnectableObservableC7connectAA10Disposable_pyF\":{\"name\":\"connect()\",\"abstract\":\"<p>Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.</p>\",\"parent_name\":\"ConnectableObservable\"},\"Classes/ConnectableObservable.html\":{\"name\":\"ConnectableObservable\",\"abstract\":\"<p>Represents an observable wrapper that can be connected and disconnected from its underlying observable sequence.</p>\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV09primitiveD0ACyxq_Gvp\":{\"name\":\"primitiveSequence\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV12asObservableAA0F0Cyq_GyF\":{\"name\":\"asObservable()\",\"abstract\":\"<p>Converts <code>self</code> to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code> sequence.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV8deferredyACyxq_GAEyKcFZ\":{\"name\":\"deferred(_:)\",\"abstract\":\"<p>Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5delay_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\":{\"name\":\"delay(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV17delaySubscription_9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AA13SchedulerType_ptF\":{\"name\":\"delaySubscription(_:scheduler:)\",\"abstract\":\"<p>Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV7observe2onACyxq_GAA22ImmediateSchedulerType_p_tF\":{\"name\":\"observe(on:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV9observeOnyACyxq_GAA22ImmediateSchedulerType_pF\":{\"name\":\"observeOn(_:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV9subscribe2onACyxq_GAA22ImmediateSchedulerType_p_tF\":{\"name\":\"subscribe(on:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV11subscribeOnyACyxq_GAA22ImmediateSchedulerType_pF\":{\"name\":\"subscribeOn(_:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV10catchErroryACyxq_GAEs0F0_pKcF\":{\"name\":\"catchError(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5catchyACyxq_GAEs5Error_pKcF\":{\"name\":\"catch(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5retryyACyxq_GSiF\":{\"name\":\"retry(_:)\",\"abstract\":\"<p>If the initial subscription to the observable sequence emits an error event, try repeating it up to the specified number of attempts (inclusive of the initial attempt) or until is succeeds. For example, if you want to retry a sequence once upon failure, you should use retry(2) (once for the initial attempt, and once for the retry).</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd_0_AA10ObservableCyqd__Gc_ts5ErrorRd__AA0G4TypeRd_0_r0_lF\":{\"name\":\"retry(when:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd_0_AA10ObservableCyqd__Gcs5ErrorRd__AA0G4TypeRd_0_r0_lF\":{\"name\":\"retryWhen(_:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5retry4whenACyxq_Gqd__AA10ObservableCys5Error_pGc_tAA0G4TypeRd__lF\":{\"name\":\"retry(when:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV9retryWhenyACyxq_Gqd__AA10ObservableCys5Error_pGcAA0G4TypeRd__lF\":{\"name\":\"retryWhen(_:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5debug_10trimOutput4file4line8functionACyxq_GSSSg_SbSSSuSStF\":{\"name\":\"debug(_:trimOutput:file:line:function:)\",\"abstract\":\"<p>Prints received events for all observers on standard output.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV5using_09primitiveD7FactoryACyxq_Gqd__yKc_AFqd__KctAA10DisposableRd__lFZ\":{\"name\":\"using(_:primitiveSequenceFactory:)\",\"abstract\":\"<p>Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence&rsquo;s lifetime.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV7timeout_9schedulerACyxq_G8Dispatch0G12TimeIntervalO_AA13SchedulerType_ptF\":{\"name\":\"timeout(_:scheduler:)\",\"abstract\":\"<p>Applies a timeout policy for each element in the observable sequence. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"Structs/PrimitiveSequence.html#/s:7RxSwift17PrimitiveSequenceV7timeout_5other9schedulerACyxq_G8Dispatch0H12TimeIntervalO_AgA13SchedulerType_ptF\":{\"name\":\"timeout(_:other:scheduler:)\",\"abstract\":\"<p>Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.</p>\",\"parent_name\":\"PrimitiveSequence\"},\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift11Completablea\":{\"name\":\"Completable\",\"abstract\":\"<p>Represents a push style sequence containing 0 elements.</p>\"},\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift5Maybea\":{\"name\":\"Maybe\",\"abstract\":\"<p>Represents a push style sequence containing 0 or 1 element.</p>\"},\"Structs/PrimitiveSequence.html\":{\"name\":\"PrimitiveSequence\",\"abstract\":\"<p>Observable sequences containing 0 or 1 element.</p>\"},\"RxSwift%2FTraits%2FPrimitiveSequence.html#/s:7RxSwift6Singlea\":{\"name\":\"Single\",\"abstract\":\"<p>Represents a push style sequence containing 1 element.</p>\"},\"Structs/Infallible.html#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\":{\"name\":\"asObservable()\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest__14resultSelectorACyxGqd___qd_0_x7ElementQyd___AGQyd_0_tKctAA0C4TypeRd__AaJRd_0_r0_lFZ\":{\"name\":\"combineLatest(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest___14resultSelectorACyxGqd___qd_0_qd_1_x7ElementQyd___AGQyd_0_AGQyd_1_tKctAA0C4TypeRd__AaKRd_0_AaKRd_1_r1_lFZ\":{\"name\":\"combineLatest(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_tKctAA0C4TypeRd__AaLRd_0_AaLRd_1_AaLRd_2_r2_lFZ\":{\"name\":\"combineLatest(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest_____14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_tKctAA0C4TypeRd__AaMRd_0_AaMRd_1_AaMRd_2_AaMRd_3_r3_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_tKctAA0C4TypeRd__AaNRd_0_AaNRd_1_AaNRd_2_AaNRd_3_AaNRd_4_r4_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest_______14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_tKctAA0C4TypeRd__AaORd_0_AaORd_1_AaORd_2_AaORd_3_AaORd_4_AaORd_5_r5_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV13combineLatest________14resultSelectorACyxGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_x7ElementQyd___AGQyd_0_AGQyd_1_AGQyd_2_AGQyd_3_AGQyd_4_AGQyd_5_AGQyd_6_tKctAA0C4TypeRd__AaPRd_0_AaPRd_1_AaPRd_2_AaPRd_3_AaPRd_4_AaPRd_5_AaPRd_6_r6_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV0C8Observera\":{\"name\":\"InfallibleObserver\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV6create9subscribeACyxGAA10Disposable_pyAA0C5EventOyxGcc_tFZ\":{\"name\":\"create(subscribe:)\",\"abstract\":\"<p>Creates an observable sequence from a specified subscribe method implementation.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV2of_9schedulerACyxGxd_AA22ImmediateSchedulerType_ptFZ\":{\"name\":\"of(_:scheduler:)\",\"abstract\":\"<p>This method creates a new Infallible instance with a variable number of elements.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV4from_9schedulerACyxGSayxG_AA22ImmediateSchedulerType_ptFZ\":{\"name\":\"from(_:scheduler:)\",\"abstract\":\"<p>Converts an array to an Infallible sequence.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV4from_9schedulerACyxGqd___AA22ImmediateSchedulerType_pt7ElementQyd__RszSTRd__lFZ\":{\"name\":\"from(_:scheduler:)\",\"abstract\":\"<p>Converts a sequence to an Infallible sequence.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html#/s:7RxSwift10InfallibleV2do6onNext05afterF00E9Completed0gH00E9Subscribe0E10Subscribed0E7DisposeACyxGyxKcSg_AMyyKcSgANyycSgA2OtF\":{\"name\":\"do(onNext:afterNext:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\",\"abstract\":\"<p>Invokes an action for each event in the infallible sequence, and propagates all observer messages through the result sequence.</p>\",\"parent_name\":\"Infallible\"},\"Structs/Infallible.html\":{\"name\":\"Infallible\",\"abstract\":\"<p><code>Infallible</code> is an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code>-like push-style interface\"},\"Protocols/SubjectType.html#/s:7RxSwift11SubjectTypeP8ObserverQa\":{\"name\":\"Observer\",\"abstract\":\"<p>The type of the observer that represents this subject.</p>\",\"parent_name\":\"SubjectType\"},\"Protocols/SubjectType.html#/s:7RxSwift11SubjectTypeP10asObserver0F0QzyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Returns observer interface for subject.</p>\",\"parent_name\":\"SubjectType\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC0D12ObserverTypea\":{\"name\":\"SubjectObserverType\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC12hasObserversSbvp\":{\"name\":\"hasObservers\",\"abstract\":\"<p>Indicates whether the subject has any observers</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Notifies all subscribed observers about next event.</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC10asObserverACyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Returns observer interface for subject.</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Unsubscribe all observers and release resources.</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC6create10bufferSizeACyxGSi_tFZ\":{\"name\":\"create(bufferSize:)\",\"abstract\":\"<p>Creates new instance of <code>ReplaySubject</code> that replays at most <code>bufferSize</code> last elements of sequence.</p>\",\"parent_name\":\"ReplaySubject\"},\"Classes/ReplaySubject.html#/s:7RxSwift13ReplaySubjectC15createUnboundedACyxGyFZ\":{\"name\":\"createUnbounded()\",\"abstract\":\"<p>Creates a new instance of <code>ReplaySubject</code> that buffers all the elements of a sequence.\",\"parent_name\":\"ReplaySubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC0D12ObserverTypea\":{\"name\":\"SubjectObserverType\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC12hasObserversSbvp\":{\"name\":\"hasObservers\",\"abstract\":\"<p>Indicates whether the subject has any observers</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"abstract\":\"<p>Indicates whether the subject has been isDisposed.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectCACyxGycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Creates a subject.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Notifies all subscribed observers about next event.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an observer to the subject.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC10asObserverACyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Returns observer interface for subject.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/PublishSubject.html#/s:7RxSwift14PublishSubjectC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Unsubscribe all observers and release resources.</p>\",\"parent_name\":\"PublishSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC0D12ObserverTypea\":{\"name\":\"SubjectObserverType\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC12hasObserversSbvp\":{\"name\":\"hasObservers\",\"abstract\":\"<p>Indicates whether the subject has any observers</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"abstract\":\"<p>Indicates whether the subject has been disposed.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC5valueACyxGx_tcfc\":{\"name\":\"init(value:)\",\"abstract\":\"<p>Initializes a new instance of the subject that caches its last value and starts with the specified value.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC5valuexyKF\":{\"name\":\"value()\",\"abstract\":\"<p>Gets the current value or throws an error.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Notifies all subscribed observers about next event.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an observer to the subject.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC10asObserverACyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Returns observer interface for subject.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/BehaviorSubject.html#/s:7RxSwift15BehaviorSubjectC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Unsubscribe all observers and release resources.</p>\",\"parent_name\":\"BehaviorSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectC0D12ObserverTypea\":{\"name\":\"SubjectObserverType\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectC12hasObserversSbvp\":{\"name\":\"hasObservers\",\"abstract\":\"<p>Indicates whether the subject has any observers</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectCACyxGycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Creates a subject.</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectC2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Notifies all subscribed observers about next event.</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectC9subscribeyAA10Disposable_pqd__7ElementQyd__RszAA12ObserverTypeRd__lF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an observer to the subject.</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html#/s:7RxSwift12AsyncSubjectC10asObserverACyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Returns observer interface for subject.</p>\",\"parent_name\":\"AsyncSubject\"},\"Classes/AsyncSubject.html\":{\"name\":\"AsyncSubject\",\"abstract\":\"<p>An AsyncSubject emits the last value (and only the last value) emitted by the source Observable,\"},\"Classes/BehaviorSubject.html\":{\"name\":\"BehaviorSubject\",\"abstract\":\"<p>Represents a value that changes over time.</p>\"},\"Classes/PublishSubject.html\":{\"name\":\"PublishSubject\",\"abstract\":\"<p>Represents an object that is both an observable sequence as well as an observer.</p>\"},\"Classes/ReplaySubject.html\":{\"name\":\"ReplaySubject\",\"abstract\":\"<p>Represents an object that is both an observable sequence as well as an observer.</p>\"},\"Protocols/SubjectType.html\":{\"name\":\"SubjectType\",\"abstract\":\"<p>Represents an object that is both an observable sequence as well as an observer.</p>\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD0a\":{\"name\":\"VirtualTime\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC0cD8Intervala\":{\"name\":\"VirtualTimeInterval\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC3now10Foundation4DateVvp\":{\"name\":\"now\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC5clock0cD4UnitQzvp\":{\"name\":\"clock\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC12initialClock9converterACyxG0cD4UnitQz_xtcfc\":{\"name\":\"init(initialClock:converter:)\",\"abstract\":\"<p>Creates a new virtual time scheduler.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed immediately.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC16scheduleRelative_03dueD06actionAA10Disposable_pqd___8Dispatch0kD8IntervalOAaG_pqd__ctlF\":{\"name\":\"scheduleRelative(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC016scheduleRelativeC0_03dueD06actionAA10Disposable_pqd___0cD12IntervalUnitQzAaG_pqd__ctlF\":{\"name\":\"scheduleRelativeVirtual(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed after relative time has passed.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC016scheduleAbsoluteC0_4time6actionAA10Disposable_pqd___0cD4UnitQzAaG_pqd__ctlF\":{\"name\":\"scheduleAbsoluteVirtual(_:time:action:)\",\"abstract\":\"<p>Schedules an action to be executed at absolute virtual time.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC015adjustScheduledD0y0cD4UnitQzAFF\":{\"name\":\"adjustScheduledTime(_:)\",\"abstract\":\"<p>Adjusts time of scheduling before adding item to schedule queue.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC5startyyF\":{\"name\":\"start()\",\"abstract\":\"<p>Starts the virtual time scheduler.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC9advanceToyy0cD4UnitQzF\":{\"name\":\"advanceTo(_:)\",\"abstract\":\"<p>Advances the scheduler&rsquo;s clock to the specified time, running all work till that point.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC5sleepyy0cD12IntervalUnitQzF\":{\"name\":\"sleep(_:)\",\"abstract\":\"<p>Advances the scheduler&rsquo;s clock by the specified relative time.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC4stopyyF\":{\"name\":\"stop()\",\"abstract\":\"<p>Stops the virtual time scheduler.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Classes/VirtualTimeScheduler.html#/s:7RxSwift20VirtualTimeSchedulerC16debugDescriptionSSvp\":{\"name\":\"debugDescription\",\"abstract\":\"<p>A textual representation of <code>self</code>, suitable for debugging.</p>\",\"parent_name\":\"VirtualTimeScheduler\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD4UnitQa\":{\"name\":\"VirtualTimeUnit\",\"abstract\":\"<p>Virtual time unit used that represents ticks of virtual clock.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP0cD12IntervalUnitQa\":{\"name\":\"VirtualTimeIntervalUnit\",\"abstract\":\"<p>Virtual time unit used to represent differences of virtual times.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD0y10Foundation4DateV0cD4UnitQzF\":{\"name\":\"convertFromVirtualTime(_:)\",\"abstract\":\"<p>Converts virtual time to real time.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD0y0cD4UnitQz10Foundation4DateVF\":{\"name\":\"convertToVirtualTime(_:)\",\"abstract\":\"<p>Converts real time to virtual time.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP011convertFromcD8IntervalySd0cdI4UnitQzF\":{\"name\":\"convertFromVirtualTimeInterval(_:)\",\"abstract\":\"<p>Converts from virtual time interval to <code>TimeInterval</code>.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP09convertTocD8Intervaly0cdI4UnitQzSdF\":{\"name\":\"convertToVirtualTimeInterval(_:)\",\"abstract\":\"<p>Converts from <code>TimeInterval</code> to virtual time interval.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP06offsetcD0_0G00cD4UnitQzAG_0cd8IntervalH0QztF\":{\"name\":\"offsetVirtualTime(_:offset:)\",\"abstract\":\"<p>Offsets virtual time by virtual time interval.</p>\",\"parent_name\":\"VirtualTimeConverterType\"},\"Protocols/VirtualTimeConverterType.html#/s:7RxSwift24VirtualTimeConverterTypeP07comparecD0yAA0cD10ComparisonO0cD4UnitQz_AHtF\":{\"name\":\"compareVirtualTime(_:_:)\",\"abstract\":\"<p>This is additional abstraction because <code>Date</code> is unfortunately not comparable.\",\"parent_name\":\"VirtualTimeConverterType\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC12TimeIntervala\":{\"name\":\"TimeInterval\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC4Timea\":{\"name\":\"Time\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC3now10Foundation4DateVvp\":{\"name\":\"now\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC08internalcE4Name06serialE13Configuration6leewayACSS_ySo17OS_dispatch_queueCcSg0D00D12TimeIntervalOtcfc\":{\"name\":\"init(internalSerialQueueName:serialQueueConfiguration:leeway:)\",\"abstract\":\"<p>Constructs new <code>SerialDispatchQueueScheduler</code> with internal serial queue named <code>internalSerialQueueName</code>.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC5queue08internalcE4Name6leewayACSo012OS_dispatch_G0C_SS0D00D12TimeIntervalOtcfc\":{\"name\":\"init(queue:internalSerialQueueName:leeway:)\",\"abstract\":\"<p>Constructs new <code>SerialDispatchQueueScheduler</code> named <code>internalSerialQueueName</code> that wraps <code>queue</code>.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC3qos08internalcE4Name6leewayAC0D00D3QoSV_SSAG0D12TimeIntervalOtcfc\":{\"name\":\"init(qos:internalSerialQueueName:leeway:)\",\"abstract\":\"<p>Constructs new <code>SerialDispatchQueueScheduler</code> that wraps one of the global concurrent dispatch queues.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed immediately.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\":{\"name\":\"scheduleRelative(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/SerialDispatchQueueScheduler.html#/s:7RxSwift28SerialDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\":{\"name\":\"schedulePeriodic(_:startAfter:period:action:)\",\"abstract\":\"<p>Schedules a periodic piece of work.</p>\",\"parent_name\":\"SerialDispatchQueueScheduler\"},\"Classes/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC09operationD0So011NSOperationD0Cvp\":{\"name\":\"operationQueue\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"OperationQueueScheduler\"},\"Classes/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC13queuePrioritySo011NSOperationdG0Vvp\":{\"name\":\"queuePriority\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"OperationQueueScheduler\"},\"Classes/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC09operationD013queuePriorityACSo011NSOperationD0C_So0idH0Vtcfc\":{\"name\":\"init(operationQueue:queuePriority:)\",\"abstract\":\"<p>Constructs new instance of <code>OperationQueueScheduler</code> that performs work on <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC09operationD0So011NSOperationD0Cvp\\\">operationQueue</a></code>.</p>\",\"parent_name\":\"OperationQueueScheduler\"},\"Classes/OperationQueueScheduler.html#/s:7RxSwift23OperationQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed recursively.</p>\",\"parent_name\":\"OperationQueueScheduler\"},\"Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Initializes new instance of <code>MainScheduler</code>.</p>\",\"parent_name\":\"MainScheduler\"},\"Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerC8instanceACvpZ\":{\"name\":\"instance\",\"abstract\":\"<p>Singleton instance of <code>MainScheduler</code></p>\",\"parent_name\":\"MainScheduler\"},\"Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerC13asyncInstanceAA019SerialDispatchQueueD0CvpZ\":{\"name\":\"asyncInstance\",\"abstract\":\"<p>Singleton instance of <code>MainScheduler</code> that always schedules work asynchronously\",\"parent_name\":\"MainScheduler\"},\"Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerC017ensureExecutingOnD012errorMessageySSSg_tFZ\":{\"name\":\"ensureExecutingOnScheduler(errorMessage:)\",\"abstract\":\"<p>In case this method is called on a background thread it will throw an exception.</p>\",\"parent_name\":\"MainScheduler\"},\"Classes/MainScheduler.html#/s:7RxSwift13MainSchedulerC015ensureRunningOnC6Thread12errorMessageySSSg_tFZ\":{\"name\":\"ensureRunningOnMainThread(errorMessage:)\",\"abstract\":\"<p>In case this method is running on a background thread it will throw an exception.</p>\",\"parent_name\":\"MainScheduler\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE4Unita\":{\"name\":\"VirtualTimeUnit\",\"abstract\":\"<p>Virtual time unit used that represents ticks of virtual clock.</p>\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV07VirtualE12IntervalUnita\":{\"name\":\"VirtualTimeIntervalUnit\",\"abstract\":\"<p>Virtual time unit used to represent differences of virtual times.</p>\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE0y10Foundation4DateVAGF\":{\"name\":\"convertFromVirtualTime(_:)\",\"abstract\":\"<p>Returns identical value of argument passed because historical virtual time is equal to real time, just\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE0y10Foundation4DateVAGF\":{\"name\":\"convertToVirtualTime(_:)\",\"abstract\":\"<p>Returns identical value of argument passed because historical virtual time is equal to real time, just\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV018convertFromVirtualE8IntervalyS2dF\":{\"name\":\"convertFromVirtualTimeInterval(_:)\",\"abstract\":\"<p>Returns identical value of argument passed because historical virtual time is equal to real time, just\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV016convertToVirtualE8IntervalyS2dF\":{\"name\":\"convertToVirtualTimeInterval(_:)\",\"abstract\":\"<p>Returns identical value of argument passed because historical virtual time is equal to real time, just\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV013offsetVirtualE0_0G010Foundation4DateVAH_SdtF\":{\"name\":\"offsetVirtualTime(_:offset:)\",\"abstract\":\"<p>Offsets <code>Date</code> by time interval.</p>\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Structs/HistoricalSchedulerTimeConverter.html#/s:7RxSwift32HistoricalSchedulerTimeConverterV014compareVirtualE0yAA0hE10ComparisonO10Foundation4DateV_AItF\":{\"name\":\"compareVirtualTime(_:_:)\",\"abstract\":\"<p>Compares two <code>Date</code>s.</p>\",\"parent_name\":\"HistoricalSchedulerTimeConverter\"},\"Classes/HistoricalScheduler.html#/s:7RxSwift19HistoricalSchedulerC12initialClockAC10Foundation4DateV_tcfc\":{\"name\":\"init(initialClock:)\",\"abstract\":\"<p>Creates a new historical scheduler with initial clock value.</p>\",\"parent_name\":\"HistoricalScheduler\"},\"Classes/CurrentThreadScheduler.html#/s:7RxSwift22CurrentThreadSchedulerC8instanceACvpZ\":{\"name\":\"instance\",\"abstract\":\"<p>The singleton instance of the current thread scheduler.</p>\",\"parent_name\":\"CurrentThreadScheduler\"},\"Classes/CurrentThreadScheduler.html#/s:7RxSwift22CurrentThreadSchedulerC18isScheduleRequiredSbvpZ\":{\"name\":\"isScheduleRequired\",\"abstract\":\"<p>Gets a value that indicates whether the caller must call a <code>schedule</code> method.</p>\",\"parent_name\":\"CurrentThreadScheduler\"},\"Classes/CurrentThreadScheduler.html#/s:7RxSwift22CurrentThreadSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed as soon as possible on current thread.</p>\",\"parent_name\":\"CurrentThreadScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC12TimeIntervala\":{\"name\":\"TimeInterval\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC4Timea\":{\"name\":\"Time\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC3now10Foundation4DateVvp\":{\"name\":\"now\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC8instanceACvpZ\":{\"name\":\"instance\",\"abstract\":\"<p>Singleton instance of <code>ConcurrentMainScheduler</code></p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed immediately.</p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_8Dispatch0lI8IntervalOAaG_pxctlF\":{\"name\":\"scheduleRelative(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed.</p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentMainScheduler.html#/s:7RxSwift23ConcurrentMainSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_8Dispatch0M12TimeIntervalOAKxxctlF\":{\"name\":\"schedulePeriodic(_:startAfter:period:action:)\",\"abstract\":\"<p>Schedules a periodic piece of work.</p>\",\"parent_name\":\"ConcurrentMainScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC12TimeIntervala\":{\"name\":\"TimeInterval\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC4Timea\":{\"name\":\"Time\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\":{\"name\":\"now\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC5queue6leewayACSo012OS_dispatch_G0C_0D00D12TimeIntervalOtcfc\":{\"name\":\"init(queue:leeway:)\",\"abstract\":\"<p>Constructs new <code>ConcurrentDispatchQueueScheduler</code> that wraps <code>queue</code>.</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC3qos6leewayAC0D00D3QoSV_AF0D12TimeIntervalOtcfc\":{\"name\":\"init(qos:leeway:)\",\"abstract\":\"<p>Convenience init for scheduler that wraps one of the global concurrent dispatch queues.</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC8schedule_6actionAA10Disposable_px_AaF_pxctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed immediately.</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16scheduleRelative_7dueTime6actionAA10Disposable_px_0D00dJ8IntervalOAaG_pxctlF\":{\"name\":\"scheduleRelative(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed.</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html#/s:7RxSwift32ConcurrentDispatchQueueSchedulerC16schedulePeriodic_10startAfter6period6actionAA10Disposable_px_0D00D12TimeIntervalOAKxxctlF\":{\"name\":\"schedulePeriodic(_:startAfter:period:action:)\",\"abstract\":\"<p>Schedules a periodic piece of work.</p>\",\"parent_name\":\"ConcurrentDispatchQueueScheduler\"},\"Classes/ConcurrentDispatchQueueScheduler.html\":{\"name\":\"ConcurrentDispatchQueueScheduler\",\"abstract\":\"<p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. You can also pass a serial dispatch queue, it shouldn&rsquo;t cause any problems.</p>\"},\"Classes/ConcurrentMainScheduler.html\":{\"name\":\"ConcurrentMainScheduler\",\"abstract\":\"<p>Abstracts work that needs to be performed on <code>MainThread</code>. In case <code>schedule</code> methods are called from main thread, it will perform action immediately without scheduling.</p>\"},\"Classes/CurrentThreadScheduler.html\":{\"name\":\"CurrentThreadScheduler\",\"abstract\":\"<p>Represents an object that schedules units of work on the current thread.</p>\"},\"Classes/HistoricalScheduler.html\":{\"name\":\"HistoricalScheduler\",\"abstract\":\"<p>Provides a virtual time scheduler that uses <code>Date</code> for absolute time and <code>TimeInterval</code> for relative time.</p>\"},\"Structs/HistoricalSchedulerTimeConverter.html\":{\"name\":\"HistoricalSchedulerTimeConverter\",\"abstract\":\"<p>Converts historical virtual time into real time.</p>\"},\"Classes/MainScheduler.html\":{\"name\":\"MainScheduler\",\"abstract\":\"<p>Abstracts work that needs to be performed on <code>DispatchQueue.main</code>. In case <code>schedule</code> methods are called from <code>DispatchQueue.main</code>, it will perform action immediately without scheduling.</p>\"},\"Classes/OperationQueueScheduler.html\":{\"name\":\"OperationQueueScheduler\",\"abstract\":\"<p>Abstracts the work that needs to be performed on a specific <code>NSOperationQueue</code>.</p>\"},\"Classes/SerialDispatchQueueScheduler.html\":{\"name\":\"SerialDispatchQueueScheduler\",\"abstract\":\"<p>Abstracts the work that needs to be performed on a specific <code>dispatch_queue_t</code>. It will make sure\"},\"Protocols/VirtualTimeConverterType.html\":{\"name\":\"VirtualTimeConverterType\",\"abstract\":\"<p>Parametrization for virtual time used by <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/VirtualTimeScheduler.html\\\">VirtualTimeScheduler</a></code>s.</p>\"},\"Classes/VirtualTimeScheduler.html\":{\"name\":\"VirtualTimeScheduler\",\"abstract\":\"<p>Base class for virtual time schedulers using a priority queue for scheduled items.</p>\"},\"Classes/SingleAssignmentDisposable.html#/s:7RxSwift26SingleAssignmentDisposableC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"SingleAssignmentDisposable\"},\"Classes/SingleAssignmentDisposable.html#/s:7RxSwift26SingleAssignmentDisposableCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Initializes a new instance of the <code>SingleAssignmentDisposable</code>.</p>\",\"parent_name\":\"SingleAssignmentDisposable\"},\"Classes/SingleAssignmentDisposable.html#/s:7RxSwift26SingleAssignmentDisposableC03setE0yyAA0E0_pF\":{\"name\":\"setDisposable(_:)\",\"abstract\":\"<p>Gets or sets the underlying disposable. After disposal, the result of getting this property is undefined.</p>\",\"parent_name\":\"SingleAssignmentDisposable\"},\"Classes/SingleAssignmentDisposable.html#/s:7RxSwift26SingleAssignmentDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Disposes the underlying disposable.</p>\",\"parent_name\":\"SingleAssignmentDisposable\"},\"Classes/SerialDisposable.html#/s:7RxSwift16SerialDisposableC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"SerialDisposable\"},\"Classes/SerialDisposable.html#/s:7RxSwift16SerialDisposableCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Initializes a new instance of the <code>SerialDisposable</code>.</p>\",\"parent_name\":\"SerialDisposable\"},\"Classes/SerialDisposable.html#/s:7RxSwift16SerialDisposableC10disposableAA0D0_pvp\":{\"name\":\"disposable\",\"abstract\":\"<p>Gets or sets the underlying disposable.</p>\",\"parent_name\":\"SerialDisposable\"},\"Classes/SerialDisposable.html#/s:7RxSwift16SerialDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Disposes the underlying disposable as well as all future replacements.</p>\",\"parent_name\":\"SerialDisposable\"},\"Classes/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC9schedulerAA22ImmediateSchedulerType_pvp\":{\"name\":\"scheduler\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ScheduledDisposable\"},\"Classes/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"ScheduledDisposable\"},\"Classes/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC9scheduler10disposableAcA22ImmediateSchedulerType_p_AA0D0_ptcfc\":{\"name\":\"init(scheduler:disposable:)\",\"abstract\":\"<p>Initializes a new instance of the <code>ScheduledDisposable</code> that uses a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC9schedulerAA22ImmediateSchedulerType_pvp\\\">scheduler</a></code> on which to dispose the <code>disposable</code>.</p>\",\"parent_name\":\"ScheduledDisposable\"},\"Classes/ScheduledDisposable.html#/s:7RxSwift19ScheduledDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Disposes the wrapped disposable on the provided scheduler.</p>\",\"parent_name\":\"ScheduledDisposable\"},\"Classes/RefCountDisposable.html#/s:7RxSwift18RefCountDisposableC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"RefCountDisposable\"},\"Classes/RefCountDisposable.html#/s:7RxSwift18RefCountDisposableC10disposableAcA0E0_p_tcfc\":{\"name\":\"init(disposable:)\",\"abstract\":\"<p>Initializes a new instance of the <code>RefCountDisposable</code>.</p>\",\"parent_name\":\"RefCountDisposable\"},\"Classes/RefCountDisposable.html#/s:7RxSwift18RefCountDisposableC6retainAA0E0_pyF\":{\"name\":\"retain()\",\"abstract\":\"<p>Holds a dependent disposable that when disposed decreases the refcount on the underlying disposable.</p>\",\"parent_name\":\"RefCountDisposable\"},\"Classes/RefCountDisposable.html#/s:7RxSwift18RefCountDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Disposes the underlying disposable only when all dependent disposables have been disposed.</p>\",\"parent_name\":\"RefCountDisposable\"},\"Classes/DisposeBag/DisposableBuilder.html#/s:7RxSwift10DisposeBagC17DisposableBuilderV10buildBlockySayAA0E0_pGAaG_pd_tFZ\":{\"name\":\"buildBlock(_:)\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"DisposableBuilder\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Constructs new empty dispose bag.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pF\":{\"name\":\"insert(_:)\",\"abstract\":\"<p>Adds <code>disposable</code> to be disposed when dispose bag is being deinited.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC9disposingAcA10Disposable_pd_tcfc\":{\"name\":\"init(disposing:)\",\"abstract\":\"<p>Convenience init allows a list of disposables to be gathered for disposal.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC7builderACSayAA10Disposable_pGyXE_tcfc\":{\"name\":\"init(builder:)\",\"abstract\":\"<p>Convenience init which utilizes a function builder to let you pass in a list of\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC9disposingACSayAA10Disposable_pG_tcfc\":{\"name\":\"init(disposing:)\",\"abstract\":\"<p>Convenience init allows an array of disposables to be gathered for disposal.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC6insertyyAA10Disposable_pd_tF\":{\"name\":\"insert(_:)\",\"abstract\":\"<p>Convenience function allows a list of disposables to be gathered for disposal.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC6insert7builderySayAA10Disposable_pGyXE_tF\":{\"name\":\"insert(builder:)\",\"abstract\":\"<p>Convenience function allows a list of disposables to be gathered for disposal.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag.html#/s:7RxSwift10DisposeBagC6insertyySayAA10Disposable_pGF\":{\"name\":\"insert(_:)\",\"abstract\":\"<p>Convenience function allows an array of disposables to be gathered for disposal.</p>\",\"parent_name\":\"DisposeBag\"},\"Classes/DisposeBag/DisposableBuilder.html\":{\"name\":\"DisposableBuilder\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"DisposeBag\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6create4withAA10Cancelable_pyyc_tFZ\":{\"name\":\"create(with:)\",\"abstract\":\"<p>Constructs a new disposable with the given action used for disposal.</p>\",\"parent_name\":\"Disposables\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_ptFZ\":{\"name\":\"create(_:_:)\",\"abstract\":\"<p>Creates a disposable with the given disposables.</p>\",\"parent_name\":\"Disposables\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_ptFZ\":{\"name\":\"create(_:_:_:)\",\"abstract\":\"<p>Creates a disposable with the given disposables.</p>\",\"parent_name\":\"Disposables\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pAA10Disposable_p_AaF_pAaF_pAaF_pdtFZ\":{\"name\":\"create(_:_:_:_:)\",\"abstract\":\"<p>Creates a disposable with the given disposables.</p>\",\"parent_name\":\"Disposables\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6createyAA10Cancelable_pSayAA10Disposable_pGFZ\":{\"name\":\"create(_:)\",\"abstract\":\"<p>Creates a disposable with the given disposables.</p>\",\"parent_name\":\"Disposables\"},\"Structs/Disposables.html#/s:7RxSwift11DisposablesV6createAA10Disposable_pyFZ\":{\"name\":\"create()\",\"abstract\":\"<p>Creates a disposable that does nothing on disposal.</p>\",\"parent_name\":\"Disposables\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC10DisposeKeyV\":{\"name\":\"DisposeKey\",\"abstract\":\"<p>Key used to remove disposable from composite disposable</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift10CancelableP10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_ptcfc\":{\"name\":\"init(_:_:)\",\"abstract\":\"<p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_ptcfc\":{\"name\":\"init(_:_:_:)\",\"abstract\":\"<p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableCyAcA0D0_p_AaD_pAaD_pAaD_pAaD_pdtcfc\":{\"name\":\"init(_:_:_:_:_:)\",\"abstract\":\"<p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC11disposablesACSayAA0D0_pG_tcfc\":{\"name\":\"init(disposables:)\",\"abstract\":\"<p>Initializes a new instance of composite disposable with the specified number of disposables.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC6insertyAC10DisposeKeyVSgAA0D0_pF\":{\"name\":\"insert(_:)\",\"abstract\":\"<p>Adds a disposable to the CompositeDisposable or disposes the disposable if the CompositeDisposable is disposed.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC5countSivp\":{\"name\":\"count\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC6remove3foryAC10DisposeKeyV_tF\":{\"name\":\"remove(for:)\",\"abstract\":\"<p>Removes and disposes the disposable identified by <code>disposeKey</code> from the CompositeDisposable.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/CompositeDisposable.html#/s:7RxSwift19CompositeDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Disposes all disposables in the group and removes them from the group.</p>\",\"parent_name\":\"CompositeDisposable\"},\"Classes/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableCACycfc\":{\"name\":\"init()\",\"abstract\":\"<p>Initializes a new instance of the <code>BooleanDisposable</code> class</p>\",\"parent_name\":\"BooleanDisposable\"},\"Classes/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableC10isDisposedACSb_tcfc\":{\"name\":\"init(isDisposed:)\",\"abstract\":\"<p>Initializes a new instance of the <code>BooleanDisposable</code> class with given value</p>\",\"parent_name\":\"BooleanDisposable\"},\"Classes/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableC10isDisposedSbvp\":{\"name\":\"isDisposed\",\"parent_name\":\"BooleanDisposable\"},\"Classes/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableC7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Sets the status to disposed, which can be observer through the <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/BooleanDisposable.html#/s:7RxSwift17BooleanDisposableC10isDisposedSbvp\\\">isDisposed</a></code> property.</p>\",\"parent_name\":\"BooleanDisposable\"},\"Classes/BooleanDisposable.html\":{\"name\":\"BooleanDisposable\",\"abstract\":\"<p>Represents a disposable resource that can be checked for disposal status.</p>\"},\"Classes/CompositeDisposable.html\":{\"name\":\"CompositeDisposable\",\"abstract\":\"<p>Represents a group of disposable resources that are disposed together.</p>\"},\"Structs/Disposables.html\":{\"name\":\"Disposables\",\"abstract\":\"<p>A collection of utility methods for common disposable operations.</p>\"},\"Classes/DisposeBag.html\":{\"name\":\"DisposeBag\",\"abstract\":\"<p>Thread safe bag that disposes added disposables on <code>deinit</code>.</p>\"},\"RxSwift%2FDisposables.html#/s:7RxSwift11DisposeBaseC\":{\"name\":\"DisposeBase\",\"abstract\":\"<p>Base class for all disposables.</p>\"},\"Classes/RefCountDisposable.html\":{\"name\":\"RefCountDisposable\",\"abstract\":\"<p>Represents a disposable resource that only disposes its underlying disposable resource when all dependent disposable objects have been disposed.</p>\"},\"Classes/ScheduledDisposable.html\":{\"name\":\"ScheduledDisposable\",\"abstract\":\"<p>Represents a disposable resource whose disposal invocation will be scheduled on the specified scheduler.</p>\"},\"Classes/SerialDisposable.html\":{\"name\":\"SerialDisposable\",\"abstract\":\"<p>Represents a disposable resource whose underlying disposable resource can be replaced by another disposable resource, causing automatic disposal of the previous underlying disposable resource.</p>\"},\"Classes/SingleAssignmentDisposable.html\":{\"name\":\"SingleAssignmentDisposable\",\"abstract\":\"<p>Represents a disposable resource which only allows a single assignment of its underlying disposable resource.</p>\"},\"Protocols/SchedulerType.html#/s:7RxSwift13SchedulerTypeP3now10Foundation4DateVvp\":{\"name\":\"now\",\"parent_name\":\"SchedulerType\"},\"Protocols/SchedulerType.html#/s:7RxSwift13SchedulerTypeP16scheduleRelative_7dueTime6actionAA10Disposable_pqd___8Dispatch0kH8IntervalOAaG_pqd__ctlF\":{\"name\":\"scheduleRelative(_:dueTime:action:)\",\"abstract\":\"<p>Schedules an action to be executed.</p>\",\"parent_name\":\"SchedulerType\"},\"Protocols/SchedulerType.html#/s:7RxSwift13SchedulerTypeP16schedulePeriodic_10startAfter6period6actionAA10Disposable_pqd___8Dispatch0L12TimeIntervalOAKqd__qd__ctlF\":{\"name\":\"schedulePeriodic(_:startAfter:period:action:)\",\"abstract\":\"<p>Schedules a periodic piece of work.</p>\",\"parent_name\":\"SchedulerType\"},\"Structs/Reactive.html#/s:7RxSwift8ReactiveV4basexvp\":{\"name\":\"base\",\"abstract\":\"<p>Base object to extend.</p>\",\"parent_name\":\"Reactive\"},\"Structs/Reactive.html#/s:7RxSwift8ReactiveVyACyxGxcfc\":{\"name\":\"init(_:)\",\"abstract\":\"<p>Creates extensions with base object.</p>\",\"parent_name\":\"Reactive\"},\"Structs/Reactive.html#/s:7RxSwift8ReactiveV13dynamicMemberAA6BinderVyqd__Gs24ReferenceWritableKeyPathCyxqd__G_tcRlzCluip\":{\"name\":\"subscript(dynamicMember:)\",\"abstract\":\"<p>Automatically synthesized binder for a key path between the reactive\",\"parent_name\":\"Reactive\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP7ElementQa\":{\"name\":\"Element\",\"abstract\":\"<p>The type of elements in sequence that observer can observe.</p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypeP2onyyAA5EventOy7ElementQzGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Notify observer about sequence event.</p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypePAAE02asC0AA03AnyC0Vy7ElementQzGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Erases type of observer and returns canonical observer.</p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypePAAE03mapC0yAA03AnyC0Vyqd__G7ElementQzqd__KclF\":{\"name\":\"mapObserver(_:)\",\"abstract\":\"<p>Transforms observer of type R to type E using custom transform method.\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypePAAE6onNextyy7ElementQzF\":{\"name\":\"onNext(_:)\",\"abstract\":\"<p>Convenience method equivalent to <code>on(.next(element: Element))</code></p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypePAAE11onCompletedyyF\":{\"name\":\"onCompleted()\",\"abstract\":\"<p>Convenience method equivalent to <code>on(.completed)</code></p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObserverType.html#/s:7RxSwift12ObserverTypePAAE7onErroryys0F0_pF\":{\"name\":\"onError(_:)\",\"abstract\":\"<p>Convenience method equivalent to <code>on(.error(Swift.Error))</code></p>\",\"parent_name\":\"ObserverType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes <code>observer</code> to receive events for this sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9subscribeyAA10Disposable_pyAA5EventOy7ElementQzGcF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an event handler to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9subscribe4with6onNext0G5Error0G9Completed0G8DisposedAA10Disposable_pqd___yqd___7ElementQztcSgyqd___s0I0_ptcSgyqd__cSgAPtRld__ClF\":{\"name\":\"subscribe(with:onNext:onError:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9subscribe6onNext0F5Error0F9Completed0F8DisposedAA10Disposable_py7ElementQzcSg_ys0H0_pcSgyycSgAOtF\":{\"name\":\"subscribe(onNext:onError:onCompleted:onDisposed:)\",\"abstract\":\"<p>Subscribes an element handler, an error handler, a completion handler and disposed handler to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE02asC0AA0C0Cy7ElementQzGyF\":{\"name\":\"asObservable()\",\"abstract\":\"<p>Default implementation of converting <code>ObservableType</code> to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code>.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\":{\"name\":\"amb(_:)\",\"abstract\":\"<p>Propagates the observable sequence that reacts first.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3ambyAA0C0Cy7ElementQzGqd__AaBRd__AGQyd__AHRSlF\":{\"name\":\"amb(_:)\",\"abstract\":\"<p>Propagates the observable sequence that reacts first.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6buffer8timeSpan5count9schedulerAA0C0CySay7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\":{\"name\":\"buffer(timeSpan:count:scheduler:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a buffer that&rsquo;s sent out when either it&rsquo;s full or a given amount of time has elapsed, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5catchyAA0C0Cy7ElementQzGAIs5Error_pKcF\":{\"name\":\"catch(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGAIs0F0_pKcF\":{\"name\":\"catchError(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the observable sequence produced by the handler.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14catchAndReturnyAA0C0Cy7ElementQzGAHF\":{\"name\":\"catchAndReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE20catchErrorJustReturnyAA0C0Cy7ElementQzGAHF\":{\"name\":\"catchErrorJustReturn(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with a single element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE10catchErroryAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\":{\"name\":\"catchError(_:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the next observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5catch8sequenceAA0C0Cy7ElementQzGqd___tSTRd__AjHRtd__lFZ\":{\"name\":\"catch(sequence:)\",\"abstract\":\"<p>Continues an observable sequence that is terminated by an error with the next observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5retryAA0C0Cy7ElementQzGyF\":{\"name\":\"retry()\",\"abstract\":\"<p>Repeats the source observable sequence until it successfully terminates.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5retryyAA0C0Cy7ElementQzGSiF\":{\"name\":\"retry(_:)\",\"abstract\":\"<p>Repeats the source observable sequence the specified number of times in case of an error or until it successfully terminates.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\":{\"name\":\"combineLatest(_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatestyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\":{\"name\":\"combineLatest(_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\":{\"name\":\"combineLatest(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\":{\"name\":\"combineLatest(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\":{\"name\":\"combineLatest(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13combineLatest________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE10compactMapyAA0C0Cyqd__Gqd__Sg7ElementQzKclF\":{\"name\":\"compactMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into an optional form and filters all optional results.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__AA0c11ConvertibleD0Rd__AGQyd__AHRSlF\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates the second observable sequence to <code>self</code> upon successful termination of <code>self</code>.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__STRd__AiGRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given sequence, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6concatyAA0C0Cy7ElementQzGAId_tFZ\":{\"name\":\"concat(_:)\",\"abstract\":\"<p>Concatenates all observable sequences in the given collection, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6createyAA0C0Cy7ElementQzGAA10Disposable_pAA11AnyObserverVyAHGcFZ\":{\"name\":\"create(_:)\",\"abstract\":\"<p>Creates an observable sequence from a specified subscribe method implementation.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8debounce_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"debounce(_:scheduler:)\",\"abstract\":\"<p>Ignores elements from an observable sequence which are followed by another element within a specified relative time duration, using the specified scheduler to run throttling timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5debug_10trimOutput4file4line8functionAA0C0Cy7ElementQzGSSSg_SbSSSuSStF\":{\"name\":\"debug(_:trimOutput:file:line:function:)\",\"abstract\":\"<p>Prints received events for all observers on standard output.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7ifEmpty7defaultAA0C0Cy7ElementQzGAI_tF\":{\"name\":\"ifEmpty(default:)\",\"abstract\":\"<p>Emits elements from the source observable sequence, or a default element if the source observable sequence is empty.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8deferredyAA0C0Cy7ElementQzGAIyKcFZ\":{\"name\":\"deferred(_:)\",\"abstract\":\"<p>Returns an observable sequence that invokes the specified factory function whenever a new observer subscribes.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5delay_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"delay(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence by the source observable sequence shifted forward in time by a specified delay. Error events from the source observable sequence are not delayed.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE17delaySubscription_9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"delaySubscription(_:scheduler:)\",\"abstract\":\"<p>Time shifts the observable sequence by delaying the subscription with the specified relative time duration, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGqd__AHKcSQRd__lF\":{\"name\":\"distinctUntilChanged(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>keySelector</code>.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE20distinctUntilChangedyAA0C0Cy7ElementQzGSbAH_AHtKcF\":{\"name\":\"distinctUntilChanged(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the <code>comparer</code>.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged_8comparerAA0C0Cy7ElementQzGqd__AIKc_Sbqd___qd__tKctlF\":{\"name\":\"distinctUntilChanged(_:comparer:)\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE20distinctUntilChanged2atAA0C0Cy7ElementQzGs7KeyPathCyAIqd__G_tSQRd__lF\":{\"name\":\"distinctUntilChanged(at:)\",\"abstract\":\"<p>Returns an observable sequence that contains only contiguous elements with distinct values in the provided key path on each object.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE2do6onNext05afterG00F5Error0hI00F9Completed0hJ00F9Subscribe0F10Subscribed0F7DisposeAA0C0Cy7ElementQzGyAQKcSg_ASys0I0_pKcSgAUyyKcSgAVyycSgA2WtF\":{\"name\":\"do(onNext:afterNext:onError:afterError:onCompleted:afterCompleted:onSubscribe:onSubscribed:onDispose:)\",\"abstract\":\"<p>Invokes an action for each event in the observable sequence, and propagates all observer messages through the result sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9elementAtyAA0C0Cy7ElementQzGSiF\":{\"name\":\"elementAt(_:)\",\"abstract\":\"<p>Returns a sequence emitting only element <em>n</em> emitted by an Observable</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7element2atAA0C0Cy7ElementQzGSi_tF\":{\"name\":\"element(at:)\",\"abstract\":\"<p>Returns a sequence emitting only element <em>n</em> emitted by an Observable</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5emptyAA0C0Cy7ElementQzGyFZ\":{\"name\":\"empty()\",\"abstract\":\"<p>Returns an empty observable sequence, using the specified scheduler to send out the single <code>Completed</code> message.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE10enumeratedAA0C0CySi5index_7ElementQz7elementtGyF\":{\"name\":\"enumerated()\",\"abstract\":\"<p>Enumerates the elements of an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5erroryAA0C0Cy7ElementQzGs5Error_pFZ\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Returns an observable sequence that terminates with an <code>error</code>.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6filteryAA0C0Cy7ElementQzGSbAHKcF\":{\"name\":\"filter(_:)\",\"abstract\":\"<p>Filters the elements of an observable sequence based on a predicate.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14ignoreElementsAA0C0Cys5NeverOGyF\":{\"name\":\"ignoreElements()\",\"abstract\":\"<p>Skips elements and completes (or errors) when the observable sequence completes (or errors). Equivalent to filter that always returns false.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8generate12initialState9condition9scheduler7iterateAA0C0Cy7ElementQzGAL_SbALKcAA018ImmediateSchedulerD0_pA2LKctFZ\":{\"name\":\"generate(initialState:condition:scheduler:iterate:)\",\"abstract\":\"<p>Generates an observable sequence by running a state-driven loop producing the sequence&rsquo;s elements, using the specified scheduler\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7groupBy11keySelectorAA0C0CyAA07GroupedC0Vyqd__7ElementQzGGqd__AKKc_tSHRd__lF\":{\"name\":\"groupBy(keySelector:)\",\"abstract\":\"<p>Undocumented</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4justyAA0C0Cy7ElementQzGAHFZ\":{\"name\":\"just(_:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4just_9schedulerAA0C0Cy7ElementQzGAI_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"just(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that contains a single element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3mapyAA0C0Cyqd__Gqd__7ElementQzKclF\":{\"name\":\"map(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new form.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE11materializeAA0C0CyAA5EventOy7ElementQzGGyF\":{\"name\":\"materialize()\",\"abstract\":\"<p>Convert any Observable into an Observable of its events.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7flatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\":{\"name\":\"flatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE12flatMapFirstyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\":{\"name\":\"flatMapFirst(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and merges the resulting observable sequences into one observable sequence.\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGqd__SlRd__AiGRtd__lFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all observable sequences from collection into a single observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGSayAIGFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all observable sequences from array into a single observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5mergeyAA0C0Cy7ElementQzGAId_tFZ\":{\"name\":\"merge(_:)\",\"abstract\":\"<p>Merges elements from all observable sequences into a single observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9concatMapyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\":{\"name\":\"concatMap(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence to an observable sequence and concatenates the resulting observable sequences into one observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9multicast_8selectorAA0C0Cyqd_0_Gqd__yKc_AhGy7ElementQyd__GKctAA07SubjectD0Rd__8Observer_AIQYd__AIRtzr0_lF\":{\"name\":\"multicast(_:selector:)\",\"abstract\":\"<p>Multicasts the source sequence notifications through an instantiated subject into all uses of the sequence within a selector function.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7publishAA011ConnectableC0Cy7ElementQzGyF\":{\"name\":\"publish()\",\"abstract\":\"<p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6replayyAA011ConnectableC0Cy7ElementQzGSiF\":{\"name\":\"replay(_:)\",\"abstract\":\"<p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying bufferSize elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9replayAllAA011ConnectableC0Cy7ElementQzGyF\":{\"name\":\"replayAll()\",\"abstract\":\"<p>Returns a connectable observable sequence that shares a single subscription to the underlying sequence replaying all elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9multicastyAA011ConnectableC0Cy7ElementQyd__Gqd__AA07SubjectD0Rd__8Observer_AGQYd__AGRtzlF\":{\"name\":\"multicast(_:)\",\"abstract\":\"<p>Multicasts the source sequence notifications through the specified subject to the resulting connectable observable.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9multicast11makeSubjectAA011ConnectableC0Cy7ElementQyd__Gqd__yc_tAA0gD0Rd__8Observer_AHQYd__AHRtzlF\":{\"name\":\"multicast(makeSubject:)\",\"abstract\":\"<p>Multicasts the source sequence notifications through an instantiated subject to the resulting connectable observable.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5neverAA0C0Cy7ElementQzGyFZ\":{\"name\":\"never()\",\"abstract\":\"<p>Returns a non-terminating observable sequence, which can be used to denote an infinite duration.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7observe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\":{\"name\":\"observe(on:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9observeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\":{\"name\":\"observeOn(_:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its observer callbacks on the specified scheduler.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4from8optionalAA0C0Cy7ElementQzGAISg_tFZ\":{\"name\":\"from(optional:)\",\"abstract\":\"<p>Converts a optional to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4from8optional9schedulerAA0C0Cy7ElementQzGAJSg_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"from(optional:scheduler:)\",\"abstract\":\"<p>Converts a optional to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6reduce_11accumulator9mapResultAA0C0Cyqd_0_Gqd___qd__qd___7ElementQztKcqd_0_qd__Kctr0_lF\":{\"name\":\"reduce(_:accumulator:mapResult:)\",\"abstract\":\"<p>Applies an <code>accumulator</code> function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified <code>seed</code> value is used as the initial accumulator value.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6reduce_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\":{\"name\":\"reduce(_:accumulator:)\",\"abstract\":\"<p>Applies an <code>accumulator</code> function over an observable sequence, returning the result of the aggregation as a single element in the result sequence. The specified <code>seed</code> value is used as the initial accumulator value.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13repeatElement_9schedulerAA0C0Cy0F0QzGAI_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"repeatElement(_:scheduler:)\",\"abstract\":\"<p>Generates an observable sequence that repeats the given element infinitely, using the specified scheduler to send out observer messages.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd_0_AGyqd__Gc_ts5ErrorRd__AaBRd_0_r0_lF\":{\"name\":\"retry(when:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd_0_AFyqd__Gcs5ErrorRd__AaBRd_0_r0_lF\":{\"name\":\"retryWhen(_:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5retry4whenAA0C0Cy7ElementQzGqd__AGys5Error_pGc_tAaBRd__lF\":{\"name\":\"retry(when:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9retryWhenyAA0C0Cy7ElementQzGqd__AFys5Error_pGcAaBRd__lF\":{\"name\":\"retryWhen(_:)\",\"abstract\":\"<p>Repeats the source observable sequence on error when the notifier emits a next value.\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6sample_12defaultValueAA0C0Cy7ElementQzGqd___AISgtAaBRd__lF\":{\"name\":\"sample(_:defaultValue:)\",\"abstract\":\"<p>Samples the source observable sequence using a sampler observable sequence producing sampling ticks.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4scan4into11accumulatorAA0C0Cyqd__Gqd___yqd__z_7ElementQztKctlF\":{\"name\":\"scan(into:accumulator:)\",\"abstract\":\"<p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4scan_11accumulatorAA0C0Cyqd__Gqd___qd__qd___7ElementQztKctlF\":{\"name\":\"scan(_:accumulator:)\",\"abstract\":\"<p>Applies an accumulator function over an observable sequence and returns each intermediate result. The specified seed value is used as the initial accumulator value.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE2of_9schedulerAA0C0Cy7ElementQzGAId_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"of(_:scheduler:)\",\"abstract\":\"<p>This method creates a new Observable instance with a variable number of elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGSayAIG_AA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"from(_:scheduler:)\",\"abstract\":\"<p>Converts an array to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4from_9schedulerAA0C0Cy7ElementQzGqd___AA018ImmediateSchedulerD0_ptSTRd__AHQyd__AIRSlFZ\":{\"name\":\"from(_:scheduler:)\",\"abstract\":\"<p>Converts a sequence to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5share6replay5scopeAA0C0Cy7ElementQzGSi_AA20SubjectLifetimeScopeOtF\":{\"name\":\"share(replay:scope:)\",\"abstract\":\"<p>Returns an observable sequence that <strong>shares a single subscription to the underlying sequence</strong>, and immediately upon subscription replays  elements in buffer.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6singleAA0C0Cy7ElementQzGyF\":{\"name\":\"single()\",\"abstract\":\"<p>The single operator is similar to first, but throws a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/RxError.html#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\\\">RxError.noElements</a></code> or <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\\\">RxError.moreThanOneElement</a></code>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6singleyAA0C0Cy7ElementQzGSbAHKcF\":{\"name\":\"single(_:)\",\"abstract\":\"<p>The single operator is similar to first, but throws a <code>RxError.NoElements</code> or <code>RxError.MoreThanOneElement</code>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4skipyAA0C0Cy7ElementQzGSiF\":{\"name\":\"skip(_:)\",\"abstract\":\"<p>Bypasses a specified number of elements in an observable sequence and then returns the remaining elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4skip_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"skip(_:scheduler:)\",\"abstract\":\"<p>Skips elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4skip5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\":{\"name\":\"skip(until:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9skipUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\":{\"name\":\"skipUntil(_:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence that are emitted after the other observable sequence produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4skip5whileAA0C0Cy7ElementQzGSbAIKc_tF\":{\"name\":\"skip(while:)\",\"abstract\":\"<p>Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9skipWhileyAA0C0Cy7ElementQzGSbAHKcF\":{\"name\":\"skipWhile(_:)\",\"abstract\":\"<p>Bypasses elements in an observable sequence as long as a specified condition is true and then returns the remaining elements.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9startWithyAA0C0Cy7ElementQzGAHd_tF\":{\"name\":\"startWith(_:)\",\"abstract\":\"<p>Prepends a sequence of values to an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9subscribe2onAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_p_tF\":{\"name\":\"subscribe(on:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE11subscribeOnyAA0C0Cy7ElementQzGAA018ImmediateSchedulerD0_pF\":{\"name\":\"subscribeOn(_:)\",\"abstract\":\"<p>Wraps the source sequence in order to run its subscription and unsubscription logic on the specified\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA0C0Cy7ElementQyd__Gqd__AGQzKcAA0c11ConvertibleD0Rd__lF\":{\"name\":\"flatMapLatest(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new sequence of observable sequences and then\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE13flatMapLatestyAA10InfallibleVy7ElementQyd__Gqd__AGQzKcAA0hD0Rd__lF\":{\"name\":\"flatMapLatest(_:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a new sequence of observable sequences and then\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7ifEmpty8switchToAA0C0Cy7ElementQzGAJ_tF\":{\"name\":\"ifEmpty(switchTo:)\",\"abstract\":\"<p>Returns the elements of the specified sequence or <code>switchTo</code> sequence if the sequence is empty.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4takeyAA0C0Cy7ElementQzGSiF\":{\"name\":\"take(_:)\",\"abstract\":\"<p>Returns a specified number of contiguous elements from the start of an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4take3for9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"take(for:scheduler:)\",\"abstract\":\"<p>Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4take_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"take(_:scheduler:)\",\"abstract\":\"<p>Takes elements for the specified duration from the start of the observable source sequence, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8takeLastyAA0C0Cy7ElementQzGSiF\":{\"name\":\"takeLast(_:)\",\"abstract\":\"<p>Returns a specified number of contiguous elements from the end of an observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4take5untilAA0C0Cy7ElementQzGqd___tAaBRd__lF\":{\"name\":\"take(until:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4take5until8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\":{\"name\":\"take(until:behavior:)\",\"abstract\":\"<p>Returns elements from an observable sequence until the specified condition is true.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE4take5while8behaviorAA0C0Cy7ElementQzGSbAJKc_AA12TakeBehaviorOtF\":{\"name\":\"take(while:behavior:)\",\"abstract\":\"<p>Returns elements from an observable sequence as long as a specified condition is true.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9takeUntilyAA0C0Cy7ElementQzGqd__AaBRd__lF\":{\"name\":\"takeUntil(_:)\",\"abstract\":\"<p>Returns the elements from the source observable sequence until the other observable sequence produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9takeUntil_9predicateAA0C0Cy7ElementQzGAA12TakeBehaviorO_SbAIKctF\":{\"name\":\"takeUntil(_:predicate:)\",\"abstract\":\"<p>Returns elements from an observable sequence until the specified condition is true.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE9takeWhileyAA0C0Cy7ElementQzGSbAHKcF\":{\"name\":\"takeWhile(_:)\",\"abstract\":\"<p>Returns elements from an observable sequence as long as a specified condition is true.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8throttle_6latest9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_SbAA09SchedulerD0_ptF\":{\"name\":\"throttle(_:latest:scheduler:)\",\"abstract\":\"<p>Returns an Observable that emits the first and the latest item emitted by the source Observable during sequential time windows of a specified duration.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7timeout_9schedulerAA0C0Cy7ElementQzG8Dispatch0H12TimeIntervalO_AA09SchedulerD0_ptF\":{\"name\":\"timeout(_:scheduler:)\",\"abstract\":\"<p>Applies a timeout policy for each element in the observable sequence. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, a TimeoutError is propagated to the observer.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7timeout_5other9schedulerAA0C0Cy7ElementQzG8Dispatch0I12TimeIntervalO_qd__AA09SchedulerD0_ptAA0c11ConvertibleD0Rd__AIQyd__AJRSlF\":{\"name\":\"timeout(_:other:scheduler:)\",\"abstract\":\"<p>Applies a timeout policy for each element in the observable sequence, using the specified scheduler to run timeout timers. If the next element isn&rsquo;t received within the specified timeout duration starting from its predecessor, the other observable sequence is used to produce future messages from that point on.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7toArrayAA17PrimitiveSequenceVyAA11SingleTraitOSay7ElementQzGGyF\":{\"name\":\"toArray()\",\"abstract\":\"<p>Converts an Observable into a Single that emits the whole sequence as a single array and then terminates.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5using_17observableFactoryAA0C0Cy7ElementQzGqd__yKc_AJqd__KctAA10DisposableRd__lFZ\":{\"name\":\"using(_:observableFactory:)\",\"abstract\":\"<p>Constructs an observable sequence that depends on a resource object, whose lifetime is tied to the resulting observable sequence&rsquo;s lifetime.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE6window8timeSpan5count9schedulerAA0C0CyAIy7ElementQzGG8Dispatch0K12TimeIntervalO_SiAA09SchedulerD0_ptF\":{\"name\":\"window(timeSpan:count:scheduler:)\",\"abstract\":\"<p>Projects each element of an observable sequence into a window that is completed when either it’s full or a given amount of time has elapsed.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14withLatestFrom_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_7ElementQz_AIQyd__tKctAA0c11ConvertibleD0Rd__r0_lF\":{\"name\":\"withLatestFrom(_:resultSelector:)\",\"abstract\":\"<p>Merges two observable sequences into one observable sequence by combining each element from self with the latest element from the second source, if any.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14withLatestFromyAA0C0Cy7ElementQyd__Gqd__AA0c11ConvertibleD0Rd__lF\":{\"name\":\"withLatestFrom(_:)\",\"abstract\":\"<p>Merges two observable sequences into one observable sequence by using latest element from the second sequence every time when <code>self</code> emits an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14withUnretained_14resultSelectorAA0C0Cyqd_0_Gqd___qd_0_qd___7ElementQztctRld__Cr0_lF\":{\"name\":\"withUnretained(_:resultSelector:)\",\"abstract\":\"<p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE14withUnretainedyAA0C0Cyqd___7ElementQztGqd__Rld__ClF\":{\"name\":\"withUnretained(_:)\",\"abstract\":\"<p>Provides an unretained, safe to use (i.e. not implicitly unwrapped), reference to an object along with the events emitted by the sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip_14resultSelectorAA0C0Cy7ElementQzGqd___AISayAH_AHQYd__GKctSlRd__AabHRpd__lFZ\":{\"name\":\"zip(_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zipyAA0C0CySay7ElementQzGGqd__SlRd__AG_AGQYd__AHRSAabGRpd__lFZ\":{\"name\":\"zip(_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip__14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_AiHQyd___AHQyd_0_tKctAaBRd__AaBRd_0_r0_lFZ\":{\"name\":\"zip(_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip___14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_AiHQyd___AHQyd_0_AHQyd_1_tKctAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\":{\"name\":\"zip(_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\":{\"name\":\"zip(_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip_____14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\":{\"name\":\"zip(_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip_______14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE3zip________14resultSelectorAA0C0Cy7ElementQzGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_AiHQyd___AHQyd_0_AHQyd_1_AHQyd_2_AHQyd_3_AHQyd_4_AHQyd_5_AHQyd_6_tKctAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:resultSelector:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence by using the selector function whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE8asSingleAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\":{\"name\":\"asSingle()\",\"abstract\":\"<p>The <code>asSingle</code> operator throws a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/RxError.html#/s:7RxSwift0A5ErrorO10noElementsyA2CmF\\\">RxError.noElements</a></code> or <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\\\">RxError.moreThanOneElement</a></code>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE5firstAA17PrimitiveSequenceVyAA11SingleTraitO7ElementQzSgGyF\":{\"name\":\"first()\",\"abstract\":\"<p>The <code>first</code> operator emits only the very first item emitted by this Observable,\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAE7asMaybeAA17PrimitiveSequenceVyAA0F5TraitO7ElementQzGyF\":{\"name\":\"asMaybe()\",\"abstract\":\"<p>The <code>asMaybe</code> operator throws a <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/RxError.html#/s:7RxSwift0A5ErrorO18moreThanOneElementyA2CmF\\\">RxError.moreThanOneElement</a></code>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\":{\"name\":\"combineLatest(_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\":{\"name\":\"combineLatest(_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\":{\"name\":\"combineLatest(_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE13combineLatestyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\":{\"name\":\"combineLatest(_:_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever any of the observable sequences produces an element.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAA10Foundation4DataV7ElementRtzrlE6decode4type7decoderAA0C0Cyqd__Gqd__m_qd_0_tSeRd__AA0F7DecoderRd_0_r0_lF\":{\"name\":\"decode(type:decoder:)\",\"abstract\":\"<p>Attempt to decode the emitted <code>Data</code> using a provided decoder.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePA2A16EventConvertible7ElementRpzrlE13dematerializeAA0C0CyAE_AEQZGyF\":{\"name\":\"dematerialize()\",\"abstract\":\"<p>Convert any previously materialized Observable into it&rsquo;s original form.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAASQ7ElementRpzrlE20distinctUntilChangedAA0C0CyAEGyF\":{\"name\":\"distinctUntilChanged()\",\"abstract\":\"<p>Returns an observable sequence that contains only distinct contiguous elements according to equality operator.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5mergeAA0C0CyAE_AEQZGyF\":{\"name\":\"merge()\",\"abstract\":\"<p>Merges elements from all observable sequences in the given enumerable sequence into a single observable sequence.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE5merge13maxConcurrentAA0C0CyAE_AEQZGSi_tF\":{\"name\":\"merge(maxConcurrent:)\",\"abstract\":\"<p>Merges elements from all inner observable sequences into a single observable sequence, limiting the number of concurrent subscriptions to inner sequences.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE6concatAA0C0CyAE_AEQZGyF\":{\"name\":\"concat()\",\"abstract\":\"<p>Concatenates all inner observable sequences, as long as the previous observable sequence terminated successfully.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5range5start5count9schedulerAA0C0CyAFGAF_AfA018ImmediateSchedulerD0_ptFZ\":{\"name\":\"range(start:count:scheduler:)\",\"abstract\":\"<p>Generates an observable sequence of integral numbers within a specified range, using the specified scheduler to generate and send out observer messages.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePA2A0c11ConvertibleD07ElementRpzrlE12switchLatestAA0C0CyAE_AEQZGyF\":{\"name\":\"switchLatest()\",\"abstract\":\"<p>Transforms an observable sequence of observable sequences into an observable sequence\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE8interval_9schedulerAA0C0CyAFG8Dispatch0K12TimeIntervalO_AA09SchedulerD0_ptFZ\":{\"name\":\"interval(_:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that produces a value after each period, using the specified scheduler to run timers and to send out observer messages.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAs17FixedWidthInteger7ElementRpzrlE5timer_6period9schedulerAA0C0CyAFG8Dispatch0L12TimeIntervalO_AOSgAA09SchedulerD0_ptFZ\":{\"name\":\"timer(_:period:scheduler:)\",\"abstract\":\"<p>Returns an observable sequence that periodically produces a value after the specified initial relative due time has elapsed, using the specified scheduler to run timers.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_tGqd___qd_0_tAaBRd__AaBRd_0_r0_lFZ\":{\"name\":\"zip(_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_tGqd___qd_0_qd_1_tAaBRd__AaBRd_0_AaBRd_1_r1_lFZ\":{\"name\":\"zip(_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_tGqd___qd_0_qd_1_qd_2_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_r2_lFZ\":{\"name\":\"zip(_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_tGqd___qd_0_qd_1_qd_2_qd_3_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_r3_lFZ\":{\"name\":\"zip(_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_r4_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_r5_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAyp7ElementRtzrlE3zipyAA0C0CyADQyd___ADQyd_0_ADQyd_1_ADQyd_2_ADQyd_3_ADQyd_4_ADQyd_5_ADQyd_6_tGqd___qd_0_qd_1_qd_2_qd_3_qd_4_qd_5_qd_6_tAaBRd__AaBRd_0_AaBRd_1_AaBRd_2_AaBRd_3_AaBRd_4_AaBRd_5_AaBRd_6_r6_lFZ\":{\"name\":\"zip(_:_:_:_:_:_:_:_:)\",\"abstract\":\"<p>Merges the specified observable sequences into one observable sequence of tuples whenever all of the observable sequences have produced an element at a corresponding index.</p>\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableType.html#/s:7RxSwift14ObservableTypePAAs5NeverO7ElementRtzrlE13asCompletableAA17PrimitiveSequenceVyAA0H5TraitOAEGyF\":{\"name\":\"asCompletable()\",\"parent_name\":\"ObservableType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP7ElementQa\":{\"name\":\"Element\",\"abstract\":\"<p>Type of elements in sequence.</p>\",\"parent_name\":\"ObservableConvertibleType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\":{\"name\":\"asObservable()\",\"abstract\":\"<p>Converts <code>self</code> to <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code> sequence.</p>\",\"parent_name\":\"ObservableConvertibleType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypePAAE6valuesScsy7ElementQzs5Error_pGvp\":{\"name\":\"values\",\"abstract\":\"<p>Allows iterating over the values of an Observable\",\"parent_name\":\"ObservableConvertibleType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorJustReturnAA0G0Vy7ElementQzGAI_tF\":{\"name\":\"asInfallible(onErrorJustReturn:)\",\"abstract\":\"<p>Convert to an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Infallible.html\\\">Infallible</a></code></p>\",\"parent_name\":\"ObservableConvertibleType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible17onErrorFallbackToAA0G0Vy7ElementQzGAJ_tF\":{\"name\":\"asInfallible(onErrorFallbackTo:)\",\"abstract\":\"<p>Convert to an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Infallible.html\\\">Infallible</a></code></p>\",\"parent_name\":\"ObservableConvertibleType\"},\"Protocols/ObservableConvertibleType.html#/s:7RxSwift25ObservableConvertibleTypePAAE12asInfallible14onErrorRecoverAA0G0Vy7ElementQzGAJs0I0_pc_tF\":{\"name\":\"asInfallible(onErrorRecover:)\",\"abstract\":\"<p>Convert to an <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbStructs/Infallible.html\\\">Infallible</a></code></p>\",\"parent_name\":\"ObservableConvertibleType\"},\"Classes/Observable.html#/s:7RxSwift14ObservableTypeP9subscribeyAA10Disposable_pqd__AA08ObserverD0Rd__7ElementQyd__AGRtzlF\":{\"name\":\"subscribe(_:)\",\"parent_name\":\"Observable\"},\"Classes/Observable.html#/s:7RxSwift25ObservableConvertibleTypeP02asC0AA0C0Cy7ElementQzGyF\":{\"name\":\"asObservable()\",\"parent_name\":\"Observable\"},\"Protocols/ImmediateSchedulerType.html#/s:7RxSwift22ImmediateSchedulerTypeP8schedule_6actionAA10Disposable_pqd___AaF_pqd__ctlF\":{\"name\":\"schedule(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed immediately.</p>\",\"parent_name\":\"ImmediateSchedulerType\"},\"Protocols/ImmediateSchedulerType.html#/s:7RxSwift22ImmediateSchedulerTypePAAE17scheduleRecursive_6actionAA10Disposable_pqd___yqd___yqd__XEtctlF\":{\"name\":\"scheduleRecursive(_:action:)\",\"abstract\":\"<p>Schedules an action to be executed recursively.</p>\",\"parent_name\":\"ImmediateSchedulerType\"},\"Structs/GroupedObservable.html#/s:7RxSwift17GroupedObservableV3keyxvp\":{\"name\":\"key\",\"abstract\":\"<p>The key associated with this grouped observable sequence.\",\"parent_name\":\"GroupedObservable\"},\"Structs/GroupedObservable.html#/s:7RxSwift17GroupedObservableV3key6sourceACyxq_Gx_AA0D0Cyq_Gtcfc\":{\"name\":\"init(key:source:)\",\"abstract\":\"<p>Initializes a grouped observable sequence with a key and a source observable sequence.</p>\",\"parent_name\":\"GroupedObservable\"},\"Structs/GroupedObservable.html#/s:7RxSwift17GroupedObservableV9subscribeyAA10Disposable_pqd__7ElementQyd__Rs_AA12ObserverTypeRd__lF\":{\"name\":\"subscribe(_:)\",\"abstract\":\"<p>Subscribes an observer to receive events emitted by the source observable sequence.</p>\",\"parent_name\":\"GroupedObservable\"},\"Structs/GroupedObservable.html#/s:7RxSwift17GroupedObservableV02asD0AA0D0Cyq_GyF\":{\"name\":\"asObservable()\",\"abstract\":\"<p>Converts this <code>GroupedObservable</code> into a regular <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable</a></code> sequence.\",\"parent_name\":\"GroupedObservable\"},\"Enums/Event.html#/s:7RxSwift5EventO4nextyACyxGxcAEmlF\":{\"name\":\"next(_:)\",\"abstract\":\"<p>Next element is produced.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO5erroryACyxGs5Error_pcAEmlF\":{\"name\":\"error(_:)\",\"abstract\":\"<p>Sequence terminated with an error.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO9completedyACyxGAEmlF\":{\"name\":\"completed\",\"abstract\":\"<p>Sequence completed successfully.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO16debugDescriptionSSvp\":{\"name\":\"debugDescription\",\"abstract\":\"<p>Description of event.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO06isStopC0Sbvp\":{\"name\":\"isStopEvent\",\"abstract\":\"<p>Is <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Event.html#/s:7RxSwift5EventO9completedyACyxGAEmlF\\\">completed</a></code> or <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Event.html#/s:7RxSwift5EventO5errors5Error_pSgvp\\\">error</a></code> event.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO7elementxSgvp\":{\"name\":\"element\",\"abstract\":\"<p>If <code>next</code> event, returns element value.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO5errors5Error_pSgvp\":{\"name\":\"error\",\"abstract\":\"<p>If <code>error</code> event, returns error.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO11isCompletedSbvp\":{\"name\":\"isCompleted\",\"abstract\":\"<p>If <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Event.html#/s:7RxSwift5EventO9completedyACyxGAEmlF\\\">completed</a></code> event, returns <code>true</code>.</p>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO3mapyACyqd__Gqd__xKXElF\":{\"name\":\"map(_:)\",\"abstract\":\"<p>Maps sequence elements using transform. If error happens during the transform, <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbEnums/Event.html#/s:7RxSwift5EventO5errors5Error_pSgvp\\\">.error</a></code>\",\"parent_name\":\"Event\"},\"Enums/Event.html#/s:7RxSwift5EventO5eventACyxGvp\":{\"name\":\"event\",\"abstract\":\"<p>Event representation of this instance</p>\",\"parent_name\":\"Event\"},\"Protocols/Disposable.html#/s:7RxSwift10DisposableP7disposeyyF\":{\"name\":\"dispose()\",\"abstract\":\"<p>Dispose resource.</p>\",\"parent_name\":\"Disposable\"},\"Protocols/Disposable.html#/s:7RxSwift10DisposablePAAE8disposed2byyAA10DisposeBagC_tF\":{\"name\":\"disposed(by:)\",\"abstract\":\"<p>Adds <code>self</code> to <code>bag</code></p>\",\"parent_name\":\"Disposable\"},\"Protocols/ConnectableObservableType.html#/s:7RxSwift25ConnectableObservableTypeP7connectAA10Disposable_pyF\":{\"name\":\"connect()\",\"abstract\":\"<p>Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.</p>\",\"parent_name\":\"ConnectableObservableType\"},\"Protocols/ConnectableObservableType.html#/s:7RxSwift25ConnectableObservableTypePAAE8refCountAA0D0Cy7ElementQzGyF\":{\"name\":\"refCount()\",\"abstract\":\"<p>Returns an observable sequence that stays connected to the source as long as there is at least one subscription to the observable sequence.</p>\",\"parent_name\":\"ConnectableObservableType\"},\"Protocols/Cancelable.html#/s:7RxSwift10CancelableP10isDisposedSbvp\":{\"name\":\"isDisposed\",\"abstract\":\"<p>Was resource disposed.</p>\",\"parent_name\":\"Cancelable\"},\"Structs/Binder.html#/s:7RxSwift12ObserverTypeP7ElementQa\":{\"name\":\"Element\",\"parent_name\":\"Binder\"},\"Structs/Binder.html#/s:7RxSwift6BinderV_9scheduler7bindingACyxGqd___AA22ImmediateSchedulerType_pyqd___xtctcRld__Clufc\":{\"name\":\"init(_:scheduler:binding:)\",\"abstract\":\"<p>Initializes <code>Binder</code></p>\",\"parent_name\":\"Binder\"},\"Structs/Binder.html#/s:7RxSwift6BinderV2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Binds next element to owner view as described in <code>binding</code>.</p>\",\"parent_name\":\"Binder\"},\"Structs/Binder.html#/s:7RxSwift6BinderV10asObserverAA03AnyE0VyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Erases type of observer.</p>\",\"parent_name\":\"Binder\"},\"Structs/AnyObserver.html#/s:7RxSwift11AnyObserverV12EventHandlera\":{\"name\":\"EventHandler\",\"abstract\":\"<p>Anonymous event handler type.</p>\",\"parent_name\":\"AnyObserver\"},\"Structs/AnyObserver.html#/s:7RxSwift11AnyObserverV12eventHandlerACyxGyAA5EventOyxGc_tcfc\":{\"name\":\"init(eventHandler:)\",\"abstract\":\"<p>Construct an instance whose <code>on(event)</code> calls <code>eventHandler(event)</code></p>\",\"parent_name\":\"AnyObserver\"},\"Structs/AnyObserver.html#/s:7RxSwift11AnyObserverVyACyxGqd__c7ElementQyd__RszAA0D4TypeRd__lufc\":{\"name\":\"init(_:)\",\"abstract\":\"<p>Construct an instance whose <code>on(event)</code> calls <code>observer.on(event)</code></p>\",\"parent_name\":\"AnyObserver\"},\"Structs/AnyObserver.html#/s:7RxSwift11AnyObserverV2onyyAA5EventOyxGF\":{\"name\":\"on(_:)\",\"abstract\":\"<p>Send <code>event</code> to this observer.</p>\",\"parent_name\":\"AnyObserver\"},\"Structs/AnyObserver.html#/s:7RxSwift11AnyObserverV02asD0ACyxGyF\":{\"name\":\"asObserver()\",\"abstract\":\"<p>Erases type of observer and returns canonical observer.</p>\",\"parent_name\":\"AnyObserver\"},\"Structs/AnyObserver.html\":{\"name\":\"AnyObserver\",\"abstract\":\"<p>A type-erased <code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbProtocols/ObserverType.html\\\">ObserverType</a></code>.</p>\"},\"Structs/Binder.html\":{\"name\":\"Binder\",\"abstract\":\"<p>Observer that enforces interface binding rules:</p>\"},\"Protocols/Cancelable.html\":{\"name\":\"Cancelable\",\"abstract\":\"<p>Represents disposable resource with state tracking.</p>\"},\"Protocols/ConnectableObservableType.html\":{\"name\":\"ConnectableObservableType\",\"abstract\":\"<p>Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.</p>\"},\"Protocols/Disposable.html\":{\"name\":\"Disposable\",\"abstract\":\"<p>Represents a disposable resource.</p>\"},\"Enums/Event.html\":{\"name\":\"Event\",\"abstract\":\"<p>Represents a sequence event.</p>\"},\"Structs/GroupedObservable.html\":{\"name\":\"GroupedObservable\",\"abstract\":\"<p>Represents an observable sequence of elements that share a common key.\"},\"Protocols/ImmediateSchedulerType.html\":{\"name\":\"ImmediateSchedulerType\",\"abstract\":\"<p>Represents an object that immediately schedules units of work.</p>\"},\"Classes/Observable.html\":{\"name\":\"Observable\",\"abstract\":\"<p>Undocumented</p>\"},\"Protocols/ObservableConvertibleType.html\":{\"name\":\"ObservableConvertibleType\",\"abstract\":\"<p>Type that can be converted to observable sequence (<code><a href=\\\"36f8f5912051ae747ef441d6511ca4cbClasses/Observable.html\\\">Observable&lt;Element&gt;</a></code>).</p>\"},\"Protocols/ObservableType.html\":{\"name\":\"ObservableType\",\"abstract\":\"<p>Represents a push style sequence.</p>\"},\"Protocols/ObserverType.html\":{\"name\":\"ObserverType\",\"abstract\":\"<p>Supports push-style iteration over an observable sequence.</p>\"},\"Structs/Reactive.html\":{\"name\":\"Reactive\",\"abstract\":\"<p>Use <code>Reactive</code> proxy as customization point for constrained protocol extensions.</p>\"},\"Protocols/SchedulerType.html\":{\"name\":\"SchedulerType\",\"abstract\":\"<p>Represents an object that schedules units of work.</p>\"},\"RxSwift.html\":{\"name\":\"RxSwift\"},\"RxSwift%2FDisposables.html\":{\"name\":\"RxSwift/Disposables\"},\"RxSwift%2FSchedulers.html\":{\"name\":\"RxSwift/Schedulers\"},\"RxSwift%2FSubjects.html\":{\"name\":\"RxSwift/Subjects\"},\"RxSwift%2FTraits%2FInfallible.html\":{\"name\":\"RxSwift/Traits/Infallible\"},\"RxSwift%2FTraits%2FPrimitiveSequence.html\":{\"name\":\"RxSwift/Traits/PrimitiveSequence\"},\"Other%20Classes.html\":{\"name\":\"Other Classes\",\"abstract\":\"<p>The following classes are available globally.</p>\"},\"Other%20Global%20Variables.html\":{\"name\":\"Other Global Variables\",\"abstract\":\"<p>The following global variables are available globally.</p>\"},\"Other%20Enums.html\":{\"name\":\"Other Enumerations\",\"abstract\":\"<p>The following enumerations are available globally.</p>\"},\"Other%20Extensions.html\":{\"name\":\"Other Extensions\",\"abstract\":\"<p>The following extensions are available globally.</p>\"},\"Other%20Protocols.html\":{\"name\":\"Other Protocols\",\"abstract\":\"<p>The following protocols are available globally.</p>\"},\"Other%20Typealiases.html\":{\"name\":\"Other Type Aliases\",\"abstract\":\"<p>The following type aliases are available globally.</p>\"}}"
  },
  {
    "path": "docs/undocumented.json",
    "content": "{\n  \"warnings\": [\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Disposables/CompositeDisposable.swift\",\n      \"line\": 28,\n      \"symbol\": \"CompositeDisposable.init()\",\n      \"symbol_kind\": \"source.lang.swift.decl.function.method.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Disposables/DisposeBag.swift\",\n      \"line\": 127,\n      \"symbol\": \"DisposeBag.DisposableBuilder\",\n      \"symbol_kind\": \"source.lang.swift.decl.struct\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Disposables/DisposeBag.swift\",\n      \"line\": 128,\n      \"symbol\": \"DisposeBag.DisposableBuilder.buildBlock(_:)\",\n      \"symbol_kind\": \"source.lang.swift.decl.function.method.static\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Disposables/ScheduledDisposable.swift\",\n      \"line\": 16,\n      \"symbol\": \"ScheduledDisposable.scheduler\",\n      \"symbol_kind\": \"source.lang.swift.decl.var.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Observable.swift\",\n      \"line\": 15,\n      \"symbol\": \"Observable\",\n      \"symbol_kind\": \"source.lang.swift.decl.class\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/ObservableType+Extensions.swift\",\n      \"line\": 128,\n      \"symbol\": \"Hooks.DefaultErrorHandler\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/ObservableType+Extensions.swift\",\n      \"line\": 129,\n      \"symbol\": \"Hooks.CustomCaptureSubscriptionCallstack\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Observables/Decode.swift\",\n      \"line\": 31,\n      \"symbol\": \"DataDecoder.decode(_:from:)\",\n      \"symbol_kind\": \"source.lang.swift.decl.function.method.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Observables/GroupBy.swift\",\n      \"line\": 18,\n      \"symbol\": \"ObservableType.groupBy(keySelector:)\",\n      \"symbol_kind\": \"source.lang.swift.decl.function.method.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Observers/TailRecursiveSink.swift\",\n      \"line\": 15,\n      \"symbol\": \"maxTailRecursiveSinkStackSize\",\n      \"symbol_kind\": \"source.lang.swift.decl.var.global\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Rx.swift\",\n      \"line\": 140,\n      \"symbol\": \"Hooks.recordCallStackOnError\",\n      \"symbol_kind\": \"source.lang.swift.decl.var.static\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/SchedulerType.swift\",\n      \"line\": 13,\n      \"symbol\": \"RxTimeInterval\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift\",\n      \"line\": 16,\n      \"symbol\": \"ConcurrentDispatchQueueScheduler.TimeInterval\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/ConcurrentDispatchQueueScheduler.swift\",\n      \"line\": 17,\n      \"symbol\": \"ConcurrentDispatchQueueScheduler.Time\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift\",\n      \"line\": 19,\n      \"symbol\": \"ConcurrentMainScheduler.TimeInterval\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/ConcurrentMainScheduler.swift\",\n      \"line\": 20,\n      \"symbol\": \"ConcurrentMainScheduler.Time\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift\",\n      \"line\": 16,\n      \"symbol\": \"OperationQueueScheduler.operationQueue\",\n      \"symbol_kind\": \"source.lang.swift.decl.var.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/OperationQueueScheduler.swift\",\n      \"line\": 17,\n      \"symbol\": \"OperationQueueScheduler.queuePriority\",\n      \"symbol_kind\": \"source.lang.swift.decl.var.instance\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift\",\n      \"line\": 30,\n      \"symbol\": \"SerialDispatchQueueScheduler.TimeInterval\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/SerialDispatchQueueScheduler.swift\",\n      \"line\": 31,\n      \"symbol\": \"SerialDispatchQueueScheduler.Time\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift\",\n      \"line\": 15,\n      \"symbol\": \"VirtualTimeScheduler.VirtualTime\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Schedulers/VirtualTimeScheduler.swift\",\n      \"line\": 16,\n      \"symbol\": \"VirtualTimeScheduler.VirtualTimeInterval\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Subjects/AsyncSubject.swift\",\n      \"line\": 19,\n      \"symbol\": \"AsyncSubject.SubjectObserverType\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Subjects/BehaviorSubject.swift\",\n      \"line\": 19,\n      \"symbol\": \"BehaviorSubject.SubjectObserverType\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Subjects/PublishSubject.swift\",\n      \"line\": 19,\n      \"symbol\": \"PublishSubject.SubjectObserverType\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Subjects/ReplaySubject.swift\",\n      \"line\": 18,\n      \"symbol\": \"ReplaySubject.SubjectObserverType\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift\",\n      \"line\": 12,\n      \"symbol\": \"RxAbstractInteger\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/Infallible/Infallible+Create.swift\",\n      \"line\": 11,\n      \"symbol\": \"InfallibleEvent\",\n      \"symbol_kind\": \"source.lang.swift.decl.enum\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/Infallible/Infallible+Create.swift\",\n      \"line\": 20,\n      \"symbol\": \"Infallible.InfallibleObserver\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/Infallible/Infallible+Create.swift\",\n      \"line\": 46,\n      \"symbol\": \"InfallibleEvent\",\n      \"symbol_kind\": \"source.lang.swift.decl.extension\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Completable.swift\",\n      \"line\": 18,\n      \"symbol\": \"CompletableEvent\",\n      \"symbol_kind\": \"source.lang.swift.decl.enum\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Completable.swift\",\n      \"line\": 27,\n      \"symbol\": \"PrimitiveSequenceType.CompletableObserver\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Maybe.swift\",\n      \"line\": 18,\n      \"symbol\": \"MaybeEvent\",\n      \"symbol_kind\": \"source.lang.swift.decl.enum\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Maybe.swift\",\n      \"line\": 30,\n      \"symbol\": \"PrimitiveSequenceType.MaybeObserver\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Single.swift\",\n      \"line\": 17,\n      \"symbol\": \"SingleEvent\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    },\n    {\n      \"file\": \"/Users/freak4pc/Work/OSS/RxSwift/RxSwift/Traits/PrimitiveSequence/Single.swift\",\n      \"line\": 20,\n      \"symbol\": \"PrimitiveSequenceType.SingleObserver\",\n      \"symbol_kind\": \"source.lang.swift.decl.typealias\",\n      \"warning\": \"undocumented\"\n    }\n  ],\n  \"source_directory\": \"/Users/freak4pc/Work/OSS/RxSwift\"\n}"
  },
  {
    "path": "mise.toml",
    "content": "[tools]\nswiftformat = \"0.58.7\"\nxcbeautify = \"latest\"\n"
  },
  {
    "path": "scripts/all-tests.sh",
    "content": ". scripts/common.sh\n\nRELEASE_TEST=0\n\nVALIDATE_IOS_EXAMPLE=1\nVALIDATE_UNIX=1\nVALIDATE_IOS=1\nVALIDATE_TVOS=1\nVALIDATE_WATCHOS=1\nVALIDATE_MACCATALYST=0\nTEST_SPM=1\n\nUNIX_NAME=`uname`\nDARWIN=\"Darwin\"\nLINUX=\"Linux\"\n\nfunction unsuppported_os() {\n\tprintf \"${RED}Unsupported os: ${UNIX_NAME}${RESET}\\n\"\n\texit -1\n}\n\nfunction unsupported_target() {\n\tprintf \"${RED}Unsupported os: ${UNIX_NAME}${RESET}\\n\"\n\texit -1\n}\n\nif [ \"$1\" == \"r\" ]; then\n\tprintf \"${GREEN}Pre release tests on, hang on tight ...${RESET}\\n\"\n\tRELEASE_TEST=1\nelif [ \"$1\" == \"iOS-Example\" ]; then\n\tVALIDATE_IOS_EXAMPLE=1\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=0\nelif [ \"$1\" == \"Unix\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=1\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=0\nelif [ \"$1\" == \"iOS\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=1\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=0\nelif [ \"$1\" == \"tvOS\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=1\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=0\nelif [ \"$1\" == \"watchOS\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=1\n\tTEST_SPM=0\nelif [ \"$1\" == \"macCatalyst\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=0\n\tVALIDATE_MACCATALYST=1\nelif [ \"$1\" == \"SPM\" ]; then\n\tVALIDATE_IOS_EXAMPLE=0\n\tVALIDATE_UNIX=0\n\tVALIDATE_IOS=0\n\tVALIDATE_TVOS=0\n\tVALIDATE_WATCHOS=0\n\tTEST_SPM=1\nfi\n\nRUN_DEVICE_TESTS=${RUN_DEVICE_TESTS:-1}\n\nfunction ensureVersionEqual() {\n\tif [[ \"$1\" != \"$2\" ]]; then\n\t\techo \"Version $1 and $2 are not equal ($3)\"\n\t\texit -1\n\tfi \n}\n\nfunction ensureNoGitChanges() {\n\tif [ `(git add . && git diff HEAD && git reset) | wc -l` -gt 0 ]; then\n\t\techo $1\n\t\texit -1\n\tfi\n}\n\nfunction checkPlistVersions() {\n\tRXSWIFT_VERSION=`grep \"^RX_VERSION\" Version.xcconfig | cut -d '=' -f 2 | tr -d ' '`\n\techo \"RxSwift version: ${RXSWIFT_VERSION}\"\n\tPROJECTS=(RxSwift RxCocoa RxRelay RxBlocking RxTest)\n\tfor project in ${PROJECTS[@]}\n\tdo\n\t\techo \"Checking version for ${project}\"\n\t\tPLIST_VERSION=`defaults read  \"\\`pwd\\`/${project}/Info.plist\" CFBundleShortVersionString`\n\t\t# Check that Info.plist uses the RX_VERSION variable reference\n\t\tif [[ \"${PLIST_VERSION}\" != '$(RX_VERSION)' ]]; then\n\t\t\techo \"Invalid version for `pwd`/${project}/Info.plist: ${PLIST_VERSION} (expected \\$(RX_VERSION))\"\n          \texit -1\n\t\tfi\n\tdone\n}\n\nensureNoGitChanges \"Please make sure the working tree is clean. Use \\`git status\\` to check.\"\nif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\tcheckPlistVersions\n\n\t./scripts/update-jazzy-config.rb\n\n\tensureNoGitChanges \"Please run ./scripts/update-jazzy-config.rb\"\n\n\t./scripts/validate-headers.swift\n\t./scripts/package-spm.swift > /dev/null\n\n\tensureNoGitChanges \"Package for Swift package manager isn't updated, please run ./scripts/package-spm.swift and commit the changes\"\nfi\n\nCONFIGURATIONS=(Debug)\n\nif [ \"${RELEASE_TEST}\" -eq 1 ]; then\n\tCONFIGURATIONS=(Debug Release Release-Tests)\nfi\n\nif [ \"${VALIDATE_IOS_EXAMPLE}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\tfor scheme in \"RxExample-iOS\"\n\t\tdo\n\t\t\tfor configuration in \"Debug\"\n\t\t\tdo\n\t\t\t\trx ${scheme} ${configuration} \"${DEFAULT_IOS_SIMULATOR}\" build\n\t\t\tdone\n\t\tdone\n\telif [[ \"${UNIX_NAME}\" == \"${LINUX}\" ]]; then\n\t\tunsupported_target\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping iOS-Example tests ...${RESET}\\n\"\nfi\n\nif [ \"${VALIDATE_IOS}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\t#make sure all iOS tests pass\n\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\tdo\n\t\t\trx \"AllTests-iOS\" ${configuration} \"${DEFAULT_IOS_SIMULATOR}\" test\n\t\tdone\n\telif [[ \"${UNIX_NAME}\" == \"${LINUX}\" ]]; then\n\t\tunsupported_target\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping iOS tests ...${RESET}\\n\"\nfi\n\n\nif [ \"${VALIDATE_UNIX}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\tif [[ \"${CI}\" == \"\" ]]; then\n\t\t\t./scripts/test-linux.sh\n\t\tfi\n\n\t\t# compile and run playgrounds\n\t\t. scripts/validate-playgrounds.sh\n\n\t\t# make sure macOS builds\n\t\tfor scheme in \"RxExample-macOS\"\n\t\tdo\n\t\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\t\tdo\n\t\t\t\trx ${scheme} ${configuration} \"\" build\n\t\t\tdone\n\t\tdone\n\n\t\t#make sure all macOS tests pass\n\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\tdo\n\t\t\trx \"AllTests-macOS\" ${configuration} \"\" test\n\t\tdone\n\telif [[ \"${UNIX_NAME}\" == \"${LINUX}\" ]]; then\n\t\tCONFIGURATIONS=(debug release)\n\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\tdo\n\t\t\techo \"Linux Configuration ${configuration}\"\n\t\t\tgit checkout Package.swift\n\t\t\tif [[ $configuration == \"debug\" ]]; then\n\t\t\t\tcat Package.swift | sed \"s/let buildTests = false/let buildTests = true/\" > Package.tests.swift\n\t\t\t\tmv Package.tests.swift Package.swift\n\t\t\tfi\n\t\t\tswift build -c ${configuration}\n\t\t\tif [[ $configuration == \"debug\" ]]; then\n\t\t\t\t./.build/debug/AllTestz\n\t\t\tfi\n\t\tdone\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping Unix (macOS, Linux) tests ...${RESET}\\n\"\nfi\n\nif [ \"${VALIDATE_TVOS}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\tdo\n\t\t\trx \"AllTests-tvOS\" ${configuration} \"${DEFAULT_TVOS_SIMULATOR}\" test\n\t\tdone\n\telif [[ \"${UNIX_NAME}\" == \"${LINUX}\" ]]; then\n\t\tprintf \"${RED}Skipping tvOS tests ...${RESET}\\n\"\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping tvOS tests ...${RESET}\\n\"\nfi\n\nif [ \"${VALIDATE_WATCHOS}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\t# make sure watchos builds\n\t\t# temporary solution\n\t\tWATCH_OS_BUILD_TARGETS=(RxSwift RxCocoa RxRelay RxBlocking)\n\t\tfor scheme in ${WATCH_OS_BUILD_TARGETS[@]}\n\t\tdo\n\t\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\t\tdo\n\t\t\t\trx \"${scheme}\" \"${configuration}\" \"${DEFAULT_WATCHOS_SIMULATOR}\" build\n\t\t\tdone\n\t\tdone\n\t\t#make sure all watchOS tests pass\n\t\t#tests for Watch OS are not available rdar://21760513\n\t\t# for configuration in ${CONFIGURATIONS[@]}\n\t\t# do\n\t\t# \trx \"RxTests-watchOS\" ${configuration} $DEFAULT_WATCHOS_SIMULATOR test\n\t\t# done\n\telif [[ \"${UNIX_NAME}\" == \"${LINUX}\" ]]; then\n\t\tprintf \"${RED}Skipping watchOS tests ...${RESET}\\n\"\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping watchOS tests ...${RESET}\\n\"\nfi\n\nif [ \"${VALIDATE_MACCATALYST}\" -eq 1 ]; then\n\tif [[ \"${UNIX_NAME}\" == \"${DARWIN}\" ]]; then\n\t\tMAC_CATALYST_BUILD_TARGETS=(RxSwift RxCocoa RxRelay RxBlocking)\n\t\tfor scheme in ${MAC_CATALYST_BUILD_TARGETS[@]}\n\t\tdo\n\t\t\tfor configuration in ${CONFIGURATIONS[@]}\n\t\t\tdo\n\t\t\t\trx \"${scheme}\" \"${configuration}\" \"macCatalyst\" build\n\t\t\tdone\n\t\tdone\n\telse\n\t\tunsupported_os\n\tfi\nelse\n\tprintf \"${RED}Skipping macCatalyst tests ...${RESET}\\n\"\nfi\n\nif [ \"${TEST_SPM}\" -eq 1 ]; then\n\trm -rf .build || true\n\tswift build -c release --disable-sandbox # until compiler is fixed\n\tswift build -c debug --disable-sandbox # until compiler is fixed\nelse\n\tprintf \"${RED}Skipping SPM tests ...${RESET}\\n\"\nfi\n"
  },
  {
    "path": "scripts/common.sh",
    "content": "#!/bin/bash\nset -e\n\nRESET=\"\\033[0m\"\nBLACK=\"\\033[30m\"\nRED=\"\\033[31m\"\nGREEN=\"\\033[32m\"\nYELLOW=\"\\033[33m\"\nBLUE=\"\\033[34m\"\nMAGENTA=\"\\033[35m\"\nCYAN=\"\\033[36m\"\nWHITE=\"\\033[37m\"\nBOLDBLACK=\"\\033[1m\\033[30m\"\nBOLDRED=\"\\033[1m\\033[31m\"\nBOLDGREEN=\"\\033[1m\\033[32m\"\nBOLDYELLOW=\"\\033[1m\\033[33m\"\nBOLDBLUE=\"\\033[1m\\033[34m\"\nBOLDMAGENTA=\"\\033[1m\\033[35m\"\nBOLDCYAN=\"\\033[1m\\033[36m\"\nBOLDWHITE=\"\\033[1m\\033[37m\"\n\n# make sure all tests are passing\nif [[ `uname` == \"Darwin\" ]]; then\n\t# Detect Xcode version to determine which simulators to use\n\tXCODE_VERSION=$(xcodebuild -version | head -1 | sed 's/Xcode //')\n\tXCODE_MAJOR=$(echo $XCODE_VERSION | cut -d. -f1)\n\n\tif [ \"$XCODE_MAJOR\" -ge 26 ]; then\n\t\techo \"Running Xcode $XCODE_VERSION (iOS 26 / watchOS 26 / tvOS 26)\"\n\t\tDEFAULT_IOS_SIMULATOR=RxSwiftTest/iPhone-17/iOS/26.2\n\t\tDEFAULT_WATCHOS_SIMULATOR=RxSwiftTest/Apple-Watch-Series-11-46mm/watchOS/26.2\n\t\tDEFAULT_TVOS_SIMULATOR=RxSwiftTest/Apple-TV-1080p/tvOS/26.2\n\telif [ \"$XCODE_MAJOR\" -ge 16 ]; then\n\t\techo \"Running Xcode $XCODE_VERSION (iOS 18.5 / watchOS 11.5 / tvOS 18.5)\"\n\t\tDEFAULT_IOS_SIMULATOR=RxSwiftTest/iPhone-16/iOS/18.5\n\t\tDEFAULT_WATCHOS_SIMULATOR=RxSwiftTest/Apple-Watch-Series-10-46mm/watchOS/11.5\n\t\tDEFAULT_TVOS_SIMULATOR=RxSwiftTest/Apple-TV-1080p/tvOS/18.5\n\telse\n\t\techo \"Unsupported Xcode version: $XCODE_VERSION\"\n\t\texit -1\n\tfi\nfi\n\nRUN_SIMULATOR_BY_NAME=0\n\nfunction runtime_available() {\n\tif [ `xcrun simctl list runtimes | grep \"${1}\" | wc -l` -eq 1 ]; then\n\t\treturn 0\n\telse\n\t\treturn 1\n\tfi\n}\n\n# used to check simulator name\nfunction contains() {\n\tstring=\"$1\"\n\tsubstring=\"$2\"\n\tif [[ $string == *\"$substring\"* ]]\n\tthen\n\t\treturn 0    # $substring is in $string\n\telse\n\t\treturn 1    # $substring is not in $string\n\tfi\n}\n\nfunction simulator_ids() {\n\tSIMULATOR=$1\n\txcrun simctl list | grep \"${SIMULATOR}\" | cut -d \"(\" -f 2 | cut -d \")\" -f 1 | sort | uniq\n}\n\nfunction simulator_available() {\n\tSIMULATOR=$1\n\tif [ `simulator_ids \"${SIMULATOR}\" | wc -l` -eq 0 ]; then\n\t\treturn -1\n\telif [ `simulator_ids \"${SIMULATOR}\" | wc -l` -gt 1 ]; then\n\t\techo \"Multiple simulators ${SIMULATOR} found\"\n\t\txcrun simctl list | grep \"${SIMULATOR}\"\n\t\texit -1\n\telif [ `xcrun simctl list | grep \"${SIMULATOR}\" | grep \"unavailable\" | wc -l` -gt 0 ]; then\n\t\txcrun simctl list | grep \"${SIMULATOR}\" | grep \"unavailable\"\n\t\texit -1\n\telse\n\t\treturn 0\n\tfi\n}\n\nfunction is_real_device() {\n\tcontains \"$1\" \"’s \"\n}\n\nfunction ensure_simulator_available() {\n\tSIMULATOR=$1\n\n\tif simulator_available \"${SIMULATOR}\"; then\n\t\techo \"${SIMULATOR} exists\"\n\t\treturn\n\tfi\n\n\tDEVICE=`echo \"${SIMULATOR}\" | cut -d \"/\" -f 2`\n\tOS=`echo \"${SIMULATOR}\" | cut -d \"/\" -f 3`\n\tVERSION_SUFFIX=`echo \"${SIMULATOR}\" | cut -d \"/\" -f 4 | sed -e \"s/\\./-/\"`\n\n\tRUNTIME=\"com.apple.CoreSimulator.SimRuntime.${OS}-${VERSION_SUFFIX}\"\n\n\techo \"Creating new simulator with runtime=${RUNTIME}\"\n\tif ! xcrun simctl create \"${SIMULATOR}\" \"com.apple.CoreSimulator.SimDeviceType.${DEVICE}\" \"${RUNTIME}\"; then\n\t\techo \"\"\n\t\techo \"Failed to create simulator. Available runtimes:\"\n\t\txcrun simctl list runtimes\n\t\techo \"\"\n\t\techo \"Available device types:\"\n\t\txcrun simctl list devicetypes\n\t\texit 1\n\tfi\n\n\tSIMULATOR_ID=`simulator_ids \"${SIMULATOR}\"`\n\techo \"Warming up ${SIMULATOR_ID} ...\"\n\txcrun simctl boot \"${SIMULATOR_ID}\"\n\topen -a \"Simulator\" --args -CurrentDeviceUDID \"${SIMULATOR_ID}\" || true\n\tsleep 120\n}\n\nBUILD_DIRECTORY=build\n\nfunction rx() {\n\taction Rx.xcworkspace \"$1\" \"$2\" \"$3\" \"$4\"\n}\n\nfunction action() {\n\tWORKSPACE=$1\n\tSCHEME=$2\n\tCONFIGURATION=$3\n\tSIMULATOR=$4\n\tACTION=$5\n\n\techo\n\tprintf \"${GREEN}${ACTION} ${BOLDCYAN}$SCHEME - $CONFIGURATION ($SIMULATOR)${RESET}\\n\"\n\techo\n\n\tDESTINATION=\"\"\n\tif [ \"${SIMULATOR}\" == \"macCatalyst\" ]; then\n\t\tDESTINATION='platform=macOS,variant=Mac Catalyst'\n\telif [ \"${SIMULATOR}\" != \"\" ]; then\n\t\t#if it's a real device\n\t\tif is_real_device \"${SIMULATOR}\"; then\n\t\t\tDESTINATION='name='${SIMULATOR}\n\t\t\t#else it's just a simulator\n\t\telse\n\t\t\tOS=`echo $SIMULATOR | cut -d '/' -f 3`\n\t\t\tif [ \"${RUN_SIMULATOR_BY_NAME}\" -eq 1 ]; then\n\t\t\t\tSIMULATOR_NAME=`echo $SIMULATOR | cut -d '/' -f 1`\n\t\t\t\tDESTINATION='platform='$OS' Simulator,name='$SIMULATOR_NAME''\n\t\t\telse\n\t\t\t\tensure_simulator_available \"${SIMULATOR}\"\n\t\t\t\tSIMULATOR_GUID=`simulator_ids \"${SIMULATOR}\"`\n\t\t\t\tDESTINATION='platform='$OS' Simulator,OS='$OS',id='$SIMULATOR_GUID''\n\t\t\tfi\n\t\t\techo \"Running on ${DESTINATION}\"\n\t\tfi\n\telse\n\t\tDESTINATION='platform=macOS'\n\tfi\n\n\tset -x\n\tmkdir -p build\n\tkillall Simulator || true\n\tLINT=1 xcodebuild -workspace \"${WORKSPACE}\" \\\n\t\t-scheme \"${SCHEME}\" \\\n\t\t-configuration \"${CONFIGURATION}\" \\\n\t\t-derivedDataPath \"${BUILD_DIRECTORY}\" \\\n\t\t-destination \"$DESTINATION\" \\\n\t\t$ACTION | tee build/last-build-output.txt | xcbeautify\n\texitIfLastStatusWasUnsuccessful\n\tset +x\n}\n\nfunction exitIfLastStatusWasUnsuccessful() {\n\tSTATUS=${PIPESTATUS[0]}\n\tif [ $STATUS -ne 0 ]; then\n\t\techo $STATUS\n\t\texit $STATUS\n\tfi\n}\n"
  },
  {
    "path": "scripts/make-xcframeworks.sh",
    "content": "rm -rf .build\nmkdir .build\n\nproducts=(RxSwift RxRelay RxCocoa RxTest RxBlocking)\nBUILD_PATH=`realpath .build`\n\nfor product in ${products[@]}; do\n    PROJECT_NAME=\"$product\"\n\n    # Generate iOS framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-iphoneos.xcarchive\" -destination \"generic/platform=iOS\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate iOS Simulator framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-iossimulator.xcarchive\" -destination \"generic/platform=iOS Simulator\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate macOS framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-macosx.xcarchive\" -destination \"generic/platform=macOS,name=Any Mac\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate maccatalyst framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-maccatalyst.xcarchive\" -destination \"generic/platform=macOS,variant=Mac Catalyst\" SKIP_INSTALL=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate tvOS framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-appletvos.xcarchive\" -destination \"generic/platform=tvOS\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate tvOS Simulator framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-appletvsimulator.xcarchive\" -destination \"generic/platform=tvOS Simulator\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate visionOS framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-visionos.xcarchive\" -destination \"generic/platform=visionOS\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # Generate visionOS simulator framework\n    xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-visionossimulator.xcarchive\" -destination \"generic/platform=visionOS Simulator\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n    # RxTest doesn't work on watchOS\n    if [[ \"$product\" != \"RxTest\" ]]; then\n        # Generate watchOS framework\n        xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-watchos.xcarchive\" -destination \"generic/platform=watchOS\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n        # Generate watchOS Simulator framework\n        xcodebuild -workspace Rx.xcworkspace -configuration Release -archivePath \"${BUILD_PATH}/${PROJECT_NAME}-watchsimulator.xcarchive\" -destination \"generic/platform=watchOS Simulator\" SKIP_INSTALL=NO SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO BUILD_LIBRARIES_FOR_DISTRIBUTION=YES -scheme $PROJECT_NAME archive | xcbeautify\n\n        # Generate XCFramework\n        xcodebuild -create-xcframework \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-iphoneos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-iphoneos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-iossimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-iossimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-macosx.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-macosx.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-maccatalyst.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-maccatalyst.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-watchos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-watchos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-watchsimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-watchsimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-appletvos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-appletvos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-appletvsimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-appletvsimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-visionos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-visionos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-visionossimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-visionossimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -output \"./${PROJECT_NAME}.xcframework\" | xcbeautify\n    else\n        # Generate XCFramework\n        xcodebuild -create-xcframework \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-iphoneos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-iphoneos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-iossimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-iossimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-macosx.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-macosx.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-maccatalyst.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-maccatalyst.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-appletvos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-appletvos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-appletvsimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-appletvsimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-visionos.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-visionos.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -framework \"${BUILD_PATH}/${PROJECT_NAME}-visionossimulator.xcarchive/Products/Library/Frameworks/${PROJECT_NAME}.framework\" \\\n        -debug-symbols \"${BUILD_PATH}/${PROJECT_NAME}-visionossimulator.xcarchive/dSYMs/${PROJECT_NAME}.framework.dSYM\" \\\n        -output \"./${PROJECT_NAME}.xcframework\" | xcbeautify\n    fi\n\n    # Code sign the binary\n    codesign --timestamp -v --sign \"Apple Distribution: Shai Mishali (272EB7D3H3)\" \"./${PROJECT_NAME}.xcframework\"\ndone\n\n# Zip all frameworks to a single ZIP\n# This is (unfortunately) required by Carthage to work: https://bit.ly/3LVm0Y9\nzip -r ./RxSwift.xcframework.zip *.xcframework\n"
  },
  {
    "path": "scripts/package-spm.swift",
    "content": "#!/usr/bin/swift\n//\n//  package-spm.swift\n//  scripts\n//\n//  Created by Krunoslav Zaher on 12/26/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/**\n This script packages normal Rx* structure into `Sources` directory.\n\n * creates and updates links to normal project structure\n * builds unit tests `main.swift`\n\n Unfortunately, Swift support for Linux, libdispatch and package manager are still quite unstable,\n so certain class of unit tests is excluded for now.\n\n */\n\n// It is kind of ironic that we need to additionally package for package manager :/\n\nlet fileManager = FileManager.default\n\nlet allowedExtensions = [\n    \".swift\",\n    \".h\",\n    \".m\",\n    \".c\"\n]\n// Those tests are dependent on conditional compilation logic and it's hard to handle them automatically\n// They usually test some internal state, so it should be ok to exclude them for now.\nlet excludedTests: [String] = [\n    \"testConcat_TailRecursionCollection\",\n    \"testConcat_TailRecursionSequence\",\n    \"testMapCompose_OptimizationIsPerformed\",\n    \"testMapCompose_OptimizationIsNotPerformed\",\n    \"testObserveOn_EnsureCorrectImplementationIsChosen\",\n    \"testObserveOnDispatchQueue_EnsureCorrectImplementationIsChosen\",\n    \"testResourceLeaksDetectionIsTurnedOn\",\n    \"testAnonymousObservable_disposeReferenceDoesntRetainObservable\",\n    \"testObserveOnDispatchQueue_DispatchQueueSchedulerIsSerial\",\n    \"ReleasesResourcesOn\",\n    \"testShareReplayLatestWhileConnectedDisposableDoesntRetainAnything\",\n    \"testSingle_DecrementCountsFirst\",\n    \"testSinglePredicate_DecrementCountsFirst\",\n    \"testLockUnlockCountsResources\",\n    \"testDisposeWithEnqueuedElement\",\n    \"testDisposeWithEnqueuedError\",\n    \"testDisposeWithEnqueuedCompleted\"\n]\n\nfunc excludeTest(_ name: String) -> Bool {\n    for exclusion in excludedTests {\n        if name.contains(exclusion) {\n            return true\n        }\n    }\n\n    return false\n}\n\nlet excludedTestClasses: [String] = [\n    /* \"ObservableConcurrentSchedulerConcurrencyTest\",\n     \"SubjectConcurrencyTest\",\n     \"VirtualSchedulerTest\",\n     \"HistoricalSchedulerTest\" */\n    \"BagTest\",\n    \"SharedSequenceConcurrencyTests\",\n    \"InfallibleConcurrencyTests\",\n    \"ObservableConcurrencyTests\",\n    \"PrimitiveSequenceConcurrencyTests\"\n]\n\nlet throwingWordsInTests: [String] = [\n    /* \"error\",\n     \"fail\",\n     \"throw\",\n     \"retrycount\",\n     \"retrywhen\", */\n]\n\nfunc isExtensionAllowed(_ path: String) -> Bool {\n    (allowedExtensions.map { path.hasSuffix($0) }).reduce(false) { $0 || $1 }\n}\n\nfunc checkExtension(_ path: String) throws {\n    if !isExtensionAllowed(path) {\n        throw NSError(domain: \"Security\", code: -1, userInfo: [\"path\": path])\n    }\n}\n\nfunc packageRelativePath(_ paths: [String], targetDirName: String, excluded: [String] = []) throws {\n    let targetPath = \"Sources/\\(targetDirName)\"\n\n    print(\"Checking \" + targetPath)\n\n    for file in try fileManager.contentsOfDirectory(atPath: targetPath).sorted(by: { $0 < $1 }) {\n        if file != \"include\", file != \".DS_Store\", file != \"PrivacyInfo.xcprivacy\" {\n            print(\"Checking extension \\(file)\")\n            try checkExtension(file)\n\n            print(\"Cleaning \\(file)\")\n            try fileManager.removeItem(atPath: \"\\(targetPath)/\\(file)\")\n        }\n    }\n\n    for sourcePath in paths {\n        var isDirectory: ObjCBool = false\n        fileManager.fileExists(atPath: sourcePath, isDirectory: &isDirectory)\n\n        let files: [String] = isDirectory.boolValue ? fileManager.subpaths(atPath: sourcePath)!\n            : [sourcePath]\n\n        for file in files {\n            if !isExtensionAllowed(file) {\n                print(\"Skipping \\(file)\")\n                continue\n            }\n\n            if excluded.contains(file) {\n                print(\"Skipping \\(file)\")\n                continue\n            }\n\n            let fileRelativePath = isDirectory.boolValue ? \"\\(sourcePath)/\\(file)\" : file\n\n            let destinationURL = NSURL(string: \"../../\\(fileRelativePath)\")!\n\n            let fileName = (file as NSString).lastPathComponent\n            let atURL = NSURL(string: \"file:///\\(fileManager.currentDirectoryPath)/\\(targetPath)/\\(fileName)\")!\n\n            if fileName.hasSuffix(\".h\") {\n                let sourcePath = NSURL(string: \"file:///\" + fileManager.currentDirectoryPath + \"/\" + sourcePath + \"/\" + file)!\n                // throw NSError(domain: sourcePath.description, code: -1, userInfo: nil)\n                try fileManager.copyItem(at: sourcePath as URL, to: atURL as URL)\n            } else {\n                print(\"Linking \\(fileName) [\\(atURL)] -> \\(destinationURL)\")\n                try fileManager.createSymbolicLink(at: atURL as URL, withDestinationURL: destinationURL as URL)\n            }\n        }\n    }\n}\n\nfunc buildAllTestsTarget(_ testsPath: String) throws {\n    let splitClasses = \"(?:class|extension)\\\\s+(\\\\w+)\"\n    let testMethods = \"\\\\s+func\\\\s+(test\\\\w+)\"\n\n    let splitClassesRegularExpression = try! NSRegularExpression(pattern: splitClasses, options: [])\n    let testMethodsExpression = try! NSRegularExpression(pattern: testMethods, options: [])\n\n    var reducedMethods: [String: [String]] = [:]\n\n    for file in try fileManager.contentsOfDirectory(atPath: testsPath).sorted(by: { $0 < $1 }) {\n        if !file.hasSuffix(\".swift\") || file == \"main.swift\" {\n            continue\n        }\n\n        let fileRelativePath = \"\\(testsPath)/\\(file)\"\n        let testContent = try String(contentsOfFile: fileRelativePath, encoding: String.Encoding.utf8)\n\n        print(fileRelativePath)\n\n        let classMatches = splitClassesRegularExpression.matches(in: testContent as String, options: [], range: NSRange(location: 0, length: testContent.count))\n        let matchIndexes = classMatches\n            .map(\\.range.location)\n\n        let classNames = classMatches.map { (testContent as NSString).substring(with: $0.range(at: 1)) as NSString }\n\n        let ranges = zip([0] + matchIndexes, matchIndexes + [testContent.count]).map { NSRange(location: $0, length: $1 - $0) }\n        let classRanges = ranges[1 ..< ranges.count]\n\n        let classes = zip(classNames, classRanges.map { (testContent as NSString).substring(with: $0) as NSString })\n\n        for (name, classCode) in classes {\n            if excludedTestClasses.contains(name as String) {\n                print(\"Skipping \\(name)\")\n                continue\n            }\n\n            let methodMatches = testMethodsExpression.matches(in: classCode as String, options: [], range: NSRange(location: 0, length: classCode.length))\n\n            let methodNameRanges = methodMatches.map { $0.range(at: 1) }\n\n            let testMethodNames = methodNameRanges\n                .map { classCode.substring(with: $0) }\n                .filter { !excludeTest($0) }\n\n            if testMethodNames.count == 0 {\n                continue\n            }\n\n            let existingMethods = reducedMethods[name as String] ?? []\n            reducedMethods[name as String] = existingMethods + testMethodNames\n        }\n    }\n\n    var mainContent = [String]()\n\n    mainContent.append(\"// this file is autogenerated using `./scripts/package-spm.swift`\")\n    mainContent.append(\"import XCTest\")\n    mainContent.append(\"import RxSwift\")\n    mainContent.append(\"\")\n    mainContent.append(\"protocol RxTestCase {\")\n    mainContent.append(\"#if os(macOS)\")\n    mainContent.append(\"    init()\")\n    mainContent.append(\"    static var allTests: [(String, (Self) -> () -> Void)] { get }\")\n    mainContent.append(\"#endif\")\n    mainContent.append(\"    func setUp()\")\n    mainContent.append(\"    func tearDown()\")\n    mainContent.append(\"}\")\n    mainContent.append(\"\")\n\n    for name in reducedMethods.keys.sorted() {\n        let methods = reducedMethods[name]!\n\n        mainContent.append(\"\")\n        mainContent.append(\"final class \\(name)_ : \\(name), RxTestCase {\")\n        mainContent.append(\"    #if os(macOS)\")\n        mainContent.append(\"    required override init() {\")\n        mainContent.append(\"        super.init()\")\n        mainContent.append(\"    }\")\n        mainContent.append(\"    #endif\")\n        mainContent.append(\"\")\n        mainContent.append(\"    static var allTests: [(String, (\\(name)_) -> () -> Void)] { return [\")\n        for method in methods {\n            // throwing error on Linux, you will crash\n            let isTestCaseHandlingError = throwingWordsInTests.map { (method as String).lowercased().contains($0) }.reduce(false) { $0 || $1 }\n            mainContent.append(\"    \\(isTestCaseHandlingError ? \"//\" : \"\")(\\\"\\(method)\\\", \\(name).\\(method)),\")\n        }\n        mainContent.append(\"    ] }\")\n        mainContent.append(\"}\")\n    }\n\n    mainContent.append(\"#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)\")\n    mainContent.append(\"\")\n    mainContent.append(\"func testCase<T: RxTestCase>(_ tests: [(String, (T) -> () -> Void)]) -> () -> Void {\")\n    mainContent.append(\"    return {\")\n    mainContent.append(\"        for testCase in tests {\")\n    mainContent.append(\"            print(\\\"Test \\\\(testCase)\\\")\")\n    mainContent.append(\"            for test in T.allTests {\")\n    mainContent.append(\"                let testInstance = T()\")\n    mainContent.append(\"                testInstance.setUp()\")\n    mainContent.append(\"                print(\\\"   testing \\\\(test.0)\\\")\")\n    mainContent.append(\"                test.1(testInstance)()\")\n    mainContent.append(\"                testInstance.tearDown()\")\n    mainContent.append(\"            }\")\n    mainContent.append(\"        }\")\n    mainContent.append(\"    }\")\n    mainContent.append(\"}\")\n    mainContent.append(\"\")\n    mainContent.append(\"func XCTMain(_ tests: [() -> Void]) {\")\n    mainContent.append(\"    for testCase in tests {\")\n    mainContent.append(\"        testCase()\")\n    mainContent.append(\"    }\")\n    mainContent.append(\"}\")\n    mainContent.append(\"\")\n    mainContent.append(\"#endif\")\n    mainContent.append(\"\")\n    mainContent.append(\"    XCTMain([\")\n    for testCase in reducedMethods.keys.sorted() {\n        mainContent.append(\"        testCase(\\(testCase)_.allTests),\")\n    }\n    mainContent.append(\"    ])\")\n    mainContent.append(\"//}\")\n    mainContent.append(\"\")\n\n    let serializedMainContent = mainContent.joined(separator: \"\\n\")\n    try serializedMainContent.write(toFile: \"\\(testsPath)/main.swift\", atomically: true, encoding: String.Encoding.utf8)\n}\n\ntry packageRelativePath([\"RxSwift\"], targetDirName: \"RxSwift\")\ntry packageRelativePath([\"RxRelay\"], targetDirName: \"RxRelay\")\ntry packageRelativePath([\n    \"RxCocoa/RxCocoa.swift\",\n    \"RxCocoa/Traits\",\n    \"RxCocoa/Common\",\n    \"RxCocoa/Foundation\",\n    \"RxCocoa/iOS\",\n    \"RxCocoa/macOS\",\n    \"RxCocoa/Platform\"\n], targetDirName: \"RxCocoa\")\n\ntry packageRelativePath([\n    \"RxCocoa/Runtime/include\"\n], targetDirName: \"RxCocoaRuntime/include\")\n\ntry packageRelativePath([\n    \"RxCocoa/Runtime/_RX.m\",\n    \"RxCocoa/Runtime/_RXDelegateProxy.m\",\n    \"RxCocoa/Runtime/_RXKVOObserver.m\",\n    \"RxCocoa/Runtime/_RXObjCRuntime.m\"\n], targetDirName: \"RxCocoaRuntime\")\n\ntry packageRelativePath([\"RxBlocking\"], targetDirName: \"RxBlocking\")\ntry packageRelativePath([\"RxTest\"], targetDirName: \"RxTest\")\n// It doesn't work under `Tests` subpath ¯\\_(ツ)_/¯\ntry packageRelativePath(\n    [\n        \"Tests/RxSwiftTests\",\n        \"Tests/RxRelayTests\",\n        \"Tests/RxBlockingTests\",\n        \"RxSwift/RxMutableBox.swift\",\n        \"Tests/RxTest.swift\",\n        \"Tests/Recorded+Timeless.swift\",\n        \"Tests/TestErrors.swift\",\n        \"Tests/XCTest+AllTests.swift\",\n        \"Platform\",\n        \"Tests/RxCocoaTests/Driver+Test.swift\",\n        \"Tests/RxCocoaTests/Signal+Test.swift\",\n        \"Tests/RxCocoaTests/SharedSequence+Extensions.swift\",\n        \"Tests/RxCocoaTests/SharedSequence+Test.swift\",\n        \"Tests/RxCocoaTests/SharedSequence+OperatorTest.swift\",\n        \"Tests/RxCocoaTests/NotificationCenterTests.swift\"\n    ],\n    targetDirName: \"AllTestz\",\n    excluded: [\n        \"Tests/VirtualSchedulerTest.swift\",\n        \"Tests/HistoricalSchedulerTest.swift\",\n        // @testable import doesn't work well in Linux :/\n        \"QueueTests.swift\",\n        // @testable import doesn't work well in Linux :/\n        \"SubjectConcurrencyTest.swift\",\n        // @testable import doesn't work well in Linux :/\n        \"BagTest.swift\"\n    ]\n)\n\ntry buildAllTestsTarget(\"Sources/AllTestz\")\n"
  },
  {
    "path": "scripts/profile-build-times.sh",
    "content": "set -oe pipefail\nmkdir -p build\nxcodebuild -workspace Rx.xcworkspace -scheme RxSwift-iOS -configuration Debug -destination \"name=iPhone 17\" clean test \\\n  | tee build/output \\\n  | grep .[0-9]ms \\\n  | grep -v ^0.[0-9]ms \\\n  | sort -nr > build/build-times.txt \\\n\t&& cat build/build-times.txt | less\n"
  },
  {
    "path": "scripts/swiftlint.sh",
    "content": "if [[ \"${TRAVIS}\" != \"\" ]] || [[ \"${LINT}\" != \"\" ]]; then\n    if which swiftlint >/dev/null; then\n        swiftlint\n    else\n        echo \"warning: SwiftLint is not installed\"\n    fi\nelse\n    echo \"To run swiftlint please set TRAVIS or LINT environmental variable.\"\nfi\n"
  },
  {
    "path": "scripts/test-linux.sh",
    "content": "set -e\n\nfunction cleanup {\n\tgit checkout Package.swift\n}\n\nif [[ `uname` == \"Darwin\" ]]; then\n\tif [[ `git diff HEAD Package.swift | wc -l` > 0 ]]; then\n\t\techo \"Package.swift has uncommitted changes\"\n\t\texit -1\n\tfi\n\ttrap cleanup EXIT\n\techo \"Running linux\"\n\teval $(docker-machine env default)\n\tdocker run --rm  -it -v `pwd`:/RxSwift swift:latest bash -c \"cd /RxSwift; scripts/test-linux.sh\" || (echo \"You maybe need to pull the  docker image: 'docker pull swift'\" && exit -1)\nelif [[ `uname` == \"Linux\" ]]; then\n\tCONFIGURATIONS=(debug release)\n\n\trm -rf .build || true\n\n\techo \"Using `swift -version`\"\n\n\t./scripts/all-tests.sh Unix\nelse\n\techo \"Unknown os (`uname`)\"\n\texit -1\nfi\n"
  },
  {
    "path": "scripts/update-jazzy-config.rb",
    "content": "#!/usr/bin/env ruby\n\nrequire 'yaml'\n\nincluded_directories = %w(RxSwift RxCocoa RxRelay)\n\nfiles_and_directories = included_directories.collect do |directory|\n  Dir.glob(\"#{directory}/**/*\")\nend.flatten.sort_by { |file| file }\n\nswift_files = files_and_directories.select { |file| file =~ /.*\\.swift$/ }\n\ndirectory_and_name = swift_files.map do |file|\n  { File.dirname(file) => File.basename(file, '.swift') }\nend\n\ncategories = directory_and_name.flat_map(&:entries)\n  .group_by(&:first)\n  .map { |k,v| { 'name' => k, 'children' => v.map(&:last) } }\n\nconfig = { 'custom_categories' => categories }\n\nFile.open('.jazzy.yml','w') do |h|\n   h.write config.to_yaml\nend\n"
  },
  {
    "path": "scripts/update-jazzy-docs.sh",
    "content": ". scripts/common.sh\n\nVERSION=$(grep 'RX_VERSION' Version.xcconfig | cut -d'=' -f2 | tr -d ' ')\n\nfunction updateDocs() {\n  WORKSPACE=$1\n  SCHEME=$2\n  CONFIGURATION=$3\n  SIMULATOR=$4\n  MODULE=$5\n\n  SIMULATOR_GUID=$(xcrun simctl list devices available | grep \"$SIMULATOR\" | head -1 | grep -oE '[A-F0-9-]{36}')\n  DESTINATION='id='$SIMULATOR_GUID''\n\n  set -x\n  killall Simulator || true\n  jazzy --config .jazzy.yml --module-version \"${VERSION}\" --theme fullwidth --github_url https://github.com/ReactiveX/RxSwift -m \"${MODULE}\" -x -workspace,\"${WORKSPACE}\",-scheme,\"${SCHEME}\",-configuration,\"${CONFIGURATION}\",-derivedDataPath,\"${BUILD_DIRECTORY}\",-destination,\"$DESTINATION\",CODE_SIGN_IDENTITY=,CODE_SIGNING_REQUIRED=NO,CODE_SIGNING_ALLOWED=NO\n  set +x\n}\n\n./scripts/update-jazzy-config.rb\n\nupdateDocs Rx.xcworkspace \"RxExample-iOS\" \"Release\" \"iPhone 17 Pro\" \"RxSwift\"\n"
  },
  {
    "path": "scripts/validate-headers.swift",
    "content": "#!/usr/bin/swift\n//\n//  validate-headers.swift\n//  scripts\n//\n//  Created by Krunoslav Zaher on 12/26/15.\n//  Copyright © 2015 Krunoslav Zaher. All rights reserved.\n//\n\nimport Foundation\n\n/**\n Validates that all headers are in this standard form.\n\n //\n //  {file}.swift\n //  Project\n //\n //  Created by {Author} on 2/14/15.\n //  Copyright (c) 2015 Krunoslav Zaher. All rights reserved.\n //\n\n Only Project is not checked yet, but it will be soon.\n */\n\nlet fileManager = FileManager.default\n\nlet allowedExtensions = [\n    \".swift\",\n    \".h\",\n    \".m\"\n]\n\nlet excludedRootPaths = [\n    \"Carthage\",\n    \".git\",\n    \"build\",\n    \"Rx.playground\",\n    \"vendor\",\n    \"Sources\",\n    \"Carthage\"\n]\n\nlet excludePaths = [\n    \"AllTestz/main.swift\",\n    \"Platform/AtomicInt.swift\",\n    \"Platform/Platform.Linux.swift\",\n    \"Platform/Platform.Darwin.swift\",\n    \"Platform/RecursiveLock.swift\",\n    \"Platform/DataStructures/Bag.swift\",\n    \"Platform/DataStructures/InfiniteSequence.swift\",\n    \"Platform/DataStructures/PriorityQueue.swift\",\n    \"Platform/DataStructures/Queue.swift\",\n    \"Platform/DispatchQueue+Extensions.swift\",\n    \"Platform/DeprecationWarner.swift\",\n    \"RxExample/Services/Reachability.swift\",\n    \"RxDataSources\"\n]\n\nfunc isExtensionIncluded(path: String) -> Bool {\n    (allowedExtensions.map { path.hasSuffix($0) }).reduce(false) { $0 || $1 }\n}\n\nlet whitespace = NSCharacterSet.whitespacesAndNewlines\n\nlet identifier = \"(?:\\\\w|\\\\+|\\\\_|\\\\.|-)+\"\n\nlet fileLine = try NSRegularExpression(pattern: \"//  (\\(identifier))\", options: [])\nlet projectLine = try NSRegularExpression(pattern: \"//  (\\(identifier))\", options: [])\n\nlet createdBy = try NSRegularExpression(pattern: \"//  Created by .* on \\\\d+/\\\\d+/\\\\d+\\\\.\", options: [])\nlet copyrightLine = try NSRegularExpression(pattern: \"//  Copyright © (\\\\d+) (.*?). All rights reserved.\", options: [])\n\nfunc validateRegexMatches(regularExpression: NSRegularExpression, content: String) -> ([String], Bool) {\n    let range = NSRange(location: 0, length: content.count)\n    let matches = regularExpression.matches(in: content, options: [], range: range)\n\n    if matches.count == 0 {\n        print(\"ERROR: line `\\(content)` is invalid: \\(regularExpression.pattern)\")\n        return ([], false)\n    }\n\n    for m in matches {\n        if m.numberOfRanges == 0 || !NSEqualRanges(m.range, range) {\n            print(\"ERROR: line `\\(content)` is invalid: \\(regularExpression.pattern)\")\n            return ([], false)\n        }\n    }\n\n    return (matches[0 ..< matches.count].flatMap { m -> [String] in\n        return (1 ..< m.numberOfRanges).map { index in\n            let range = m.range(at: index)\n            return (content as NSString).substring(with: range)\n        }\n    }, true)\n}\n\nfunc validateHeader(path: String) throws -> Bool {\n    let contents = try String(contentsOfFile: path, encoding: String.Encoding.utf8)\n\n    let rawLines = contents.components(separatedBy: \"\\n\")\n\n    var lines = rawLines.map { $0.trimmingCharacters(in: whitespace) }\n\n    if (lines.first ?? \"\").hasPrefix(\"#\") || (lines.first ?? \"\").hasPrefix(\"// This file is autogenerated.\") {\n        lines.remove(at: 0)\n    }\n\n    if lines.count < 8 {\n        print(\"ERROR: Number of lines is less then 8, so the header can't be correct\")\n        return false\n    }\n\n    for i in 0 ..< 7 {\n        if !lines[i].hasPrefix(\"//\") {\n            print(\"ERROR: Line [\\(i + 1)] (\\(lines[i])) isn't prefixed with //\")\n            return false\n        }\n    }\n\n    if lines[0] != \"//\" {\n        print(\"ERROR: Line[1] First line should be `//`\")\n        return false\n    }\n\n    let (parsedFileLine, isValidFilename) = validateRegexMatches(regularExpression: fileLine, content: lines[1])\n\n    if !isValidFilename {\n        print(\"ERROR: Line[2] Filename line should match `\\(fileLine.pattern)`\")\n        return false\n    }\n\n    let fileNameInFile = parsedFileLine.first ?? \"\"\n    if fileNameInFile != (path as NSString).lastPathComponent {\n        print(\"ERROR: Line[2] invalid file name `\\(fileNameInFile)`, correct content is `\\((path as NSString).lastPathComponent)`\")\n        return false\n    }\n\n    let (parsedProject, isValidProject) = validateRegexMatches(regularExpression: projectLine, content: lines[2])\n\n    let targetProject = path.components(separatedBy: \"/\")[0]\n    if !isValidProject || parsedProject.first != targetProject {\n        print(\"ERROR: Line[3] Line not equal to `// \\(targetProject)`\")\n        return false\n    }\n\n    if lines[3] != \"//\" {\n        print(\"ERROR: Line[4] Line should be `//`\")\n        return false\n    }\n\n    let (_, isValidCreatedBy) = validateRegexMatches(regularExpression: createdBy, content: lines[4])\n\n    if !isValidCreatedBy {\n        print(\"ERROR: Line[5] Line not matching \\(createdBy.pattern)\")\n        return false\n    }\n\n    let (year, isValidCopyright) = validateRegexMatches(regularExpression: copyrightLine, content: lines[5])\n\n    if !isValidCopyright {\n        print(\"ERROR: Line[6] Line not matching \\(copyrightLine.pattern)\")\n        return false\n    }\n\n    let currentYear = Calendar.current.component(.year, from: Date())\n    if year.first == nil || !(2015 ... currentYear).contains(Int(year.first!) ?? 0) {\n        print(\"ERROR: Line[6] Wrong copyright year \\(year.first ?? \"?\") instead of 2015...\\(currentYear)\")\n        return false\n    }\n\n    if lines[6] != \"//\" {\n        print(\"ERROR: Line[7] Line not matching \\(copyrightLine.pattern)\")\n        return false\n    }\n\n    if lines[7] != \"\" {\n        print(\"ERROR: Line[8] Should be blank and not `\\(lines[7])`\")\n        return false\n    }\n\n    return true\n}\n\nfunc verifyAll(root: String) throws -> Bool {\n    try fileManager.subpathsOfDirectory(atPath: root).map { file -> Bool in\n        let excluded = excludePaths.map { file.hasPrefix($0) }.reduce(false) { $0 || $1 }\n        if excluded {\n            return true\n        }\n        if !isExtensionIncluded(path: file) {\n            return true\n        }\n\n        let isValid = try validateHeader(path: \"\\(root)/\\(file)\")\n        if !isValid {\n            print(\"     while Validating '\\(root)/\\(file)'\")\n        }\n\n        return isValid\n    }.reduce(true) { $0 && $1 }\n}\n\nlet allValid = try fileManager.contentsOfDirectory(atPath: \".\").map { rootDir -> Bool in\n    if excludedRootPaths.contains(rootDir) {\n        print(\"Skipping \\(rootDir)\")\n        return true\n    }\n    return try verifyAll(root: rootDir)\n}.reduce(true) { $0 && $1 }\n\nif !allValid {\n    exit(-1)\n}\n"
  },
  {
    "path": "scripts/validate-markdown.sh",
    "content": "ROOT=`pwd`\npushd `npm root -g`\nremark -u remark-slug -u remark-validate-links \"${ROOT}/*.md\" \"${ROOT}/**/*.md\" \"${ROOT}/.github/ISSUE_TEMPLATE.md\" \"${ROOT}/RxExample/\" \"${ROOT}/RxCocoa/Foundation/KVORepresentable+CoreGraphics.swift\" \"${ROOT}/Rx.playground\"\npopd\n"
  },
  {
    "path": "scripts/validate-playgrounds.sh",
    "content": ". scripts/common.sh\n\nPLAYGROUND_CONFIGURATIONS=(Release)\n\n# make sure macOS builds\nfor scheme in \"RxSwift\"\ndo\n  for configuration in ${PLAYGROUND_CONFIGURATIONS[@]}\n  do\n    PAGES_PATH=${BUILD_DIRECTORY}/Build/Products/${configuration}/all-playground-pages.swift\n    rx ${scheme} ${configuration} \"\" build\n    cat Rx.playground/Sources/*.swift Rx.playground/Pages/**/*.swift > ${PAGES_PATH}\n    swift -v -D NOT_IN_PLAYGROUND -F ${BUILD_DIRECTORY}/Build/Products/${configuration} ${PAGES_PATH}   \n  done\ndone"
  }
]